Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Cross-Project Epic] CI Build / Weekly Release process should use consistent quay tags for sha-version/next and 7.yy.z/latest #19291

Closed
nickboldt opened this issue Mar 15, 2021 · 24 comments
Labels
area/ci CI build and releases, PR testing, & whitelabel/productization issues kind/epic A long-lived, PM-driven feature request. Must include a checklist of items that must be completed. kind/task Internal things, technical debt, and to-do tasks to be performed. roadmap/3-months Epics that are planned to complete in the short term (within 3 months) severity/P2 Has a minor but important impact to the usage or development of the system.
Milestone

Comments

@nickboldt
Copy link
Contributor

nickboldt commented Mar 15, 2021

Is your task related to a problem? Please describe.

Today we use a harvest medley of terms to describe daily and continuous integration builds across the various Che projects. Some examples include:

  • Che Theia uses next to mean continuous integration builds; also pushes a sha-versioned tag

  • Che Dashboard used to use next-react to mean "a huge refactoring project that isn't stable yet and will eventually replace the current dashboard, but needs its own fork/branch/tag stream", and next to mean continuous integration builds; does NOT push sha-versioned tags

  • Che server uses latest for releases, and nightly for a daily build (last one 14 hrs ago, but last commits 8 hrs ago); does NOT push sha-versioned tags

  • Che machine exec uses nightly to mean continuous integration builds; also pushes a sha-versioned tag

  • Che devfile registry uses nightly to mean continuous integration builds; also pushes a sha-versioned tag

Describe the solution you'd like

Change to a more consistent naming convention for continuous integration builds, large refactorings, and releases:

  • "ci" for "continuously building new images on every commit"
  • "next" for "continuously building new images on every commit"
  • "next" for special case refactorings (eg., Dashboard Next or Plugin Registry 3.0)
  • "nightly" is dead, won't be used anymore as we won't do daily/nightly builds (only CI builds)
  • optional "latest" for pointer to 7.yy.z latest released container images (where / if useful)
  • sha-versioned tags for all releases and CI builds

In addition to impacting GH action workflows to use different tags, this will impact:

Describe alternatives you've considered

Enjoy the multicultural experience that is guessing what each project means by "nightly", "next", or "latest".

Additional context

@nickboldt nickboldt added the kind/task Internal things, technical debt, and to-do tasks to be performed. label Mar 15, 2021
@che-bot che-bot added the status/need-triage An issue that needs to be prioritized by the curator responsible for the triage. See https://github. label Mar 15, 2021
@nickboldt nickboldt added area/ci CI build and releases, PR testing, & whitelabel/productization issues area/productization severity/P2 Has a minor but important impact to the usage or development of the system. and removed status/need-triage An issue that needs to be prioritized by the curator responsible for the triage. See https://github. labels Mar 15, 2021
@tsmaeder
Copy link
Contributor

"next" for special case refactorings (eg., Dashboard Next or Plugin Registry 3.0)

I don't think it makes sense to have a special tag for those. For starters, there might be multiple of those refactorings going on in parallel (next1, next2)? And second, I think a format like "dashboard_react_ci", etc. would be more descriptive and allow use to have a whole parallel ci/latest/sha, etc. tag stream going.

@nickboldt
Copy link
Contributor Author

Right but my point is that TODAY, "next" has special meaning and so should not be considered the same as "nightly", when only ONE project uses it for ci builds (che-theia), while everyone else uses nightly.

And so as to offend everyone equally, we can move to "ci" for ALL nightly/next/ci builds, rather than a mix of terms.

@nickboldt nickboldt added this to the 7.29 milestone Mar 29, 2021
@benoitf
Copy link
Contributor

benoitf commented Mar 29, 2021

I think nobody understand :ci (as all builds are built by CI anyway (nightlies, per commits, releases, etc. )

Also nextis not only used by theia or che-theia, it's used by all npmjs projects anyway:
https://docs.npmjs.com/about-npm-versions#the-next-release-of-npm

sleshchenko referenced this issue in devfile/devworkspace-operator Apr 27, 2021
Note this commit doesn't update the RELATED_IMAGE env var for project
clone in make-release.sh, so `next` will be used there for now.

Signed-off-by: Angel Misevski <amisevsk@redhat.com>
@nickboldt
Copy link
Contributor Author

Forgot about this thread, so getting back to it now.

  • releases are not ci. They are not continuous integration. They are on-request, triggered on a specific date, by a human.

  • ci builds (call 'em nightly. integration, per commit, whatever) are continuously built on commits, and are thus CI.

  • if next is a convention used by npm projects, and Che is an amalgam of golang, bash, npm, typescript.... could we pick a label that's consistent across the whole project? (eg., machine exec and theia and dashboard all use different tags)? Why make things needlessly complicated? Do we WANT the community to be able to easily contribute, or are we intentionally obfuscating and treating each subproject like its own fiefdom?

@benoitf
Copy link
Contributor

benoitf commented Apr 30, 2021

sorry but I find ci counter intuitive about what it contains and when it's built

@benoitf
Copy link
Contributor

benoitf commented Apr 30, 2021

having chectl with two channels, one being next and another being stable I would opt-in for next tags on images

@nickboldt
Copy link
Contributor Author

nickboldt commented Apr 30, 2021

If everyone is good with :next then I'm happy to start moving the :nightly tags to :next so we're consistent across all of Che.

(Meanwhile in operatorhub, the convention for unreleased content a preview channel, but hey. :) )

@nickboldt
Copy link
Contributor Author

I've updated my original proposal. How do we like this?

image

@benoitf
Copy link
Contributor

benoitf commented Apr 30, 2021

👍

regarding another topic about multi-arch (and travis usage or not) maybe we'll end up with images having arch suffix as well

I like also about having also sha-versioned tags (it was already there in your proposal)
sometimes current images are broken and it's impossible to get back in time.
Maybe it should be easy to go back in days as well :D like chectl update yesterday / chectl server:deploy

@nickboldt
Copy link
Contributor Author

Re: the chectl rollback to specific-version (or relative-date) ... probably useful. I've linked to the related rollback issues above.

@nickboldt nickboldt added the kind/epic A long-lived, PM-driven feature request. Must include a checklist of items that must be completed. label May 3, 2021
@nickboldt nickboldt changed the title Use consistent container labels in quay for continuous integration and release builds [Cross-Project Epic] CI Build / Weekly Release process should use consistent quay tags for sha-version/next and 7.yy.z/latest May 3, 2021
@dmytro-ndp
Copy link
Contributor

:latest is quite useful for testing pipelines (e.g. che-theia PR check), because we shouldn't change test script to reference latest Che version tag after each release.

@sleshchenko
Copy link
Member

Note about:

"next" for "continuously building new images on every commit"

some projects pulls resources from other project, like che-operator(devworkspace, devworkspace-che-operators), chectl (helm charts, che operator deployment).
So, for them on every commit may be not enough. We should keep timeline build (like each hour, nightly) and maybe even an ability to trigger commit manually, when person know that without it Che is going to fail.

@benoitf
Copy link
Contributor

benoitf commented May 31, 2021

for pulling resources, we can send triggers to other projects as well
like: new che-server commit : trigger a new chectl release to include these new deployments

nickboldt added a commit to che-incubator/kubernetes-image-puller that referenced this issue Jun 25, 2021
Change-Id: Ia1c826f1848bbf2f80c1a86469b6790329b36a0b
Signed-off-by: nickboldt <nboldt@redhat.com>
@nickboldt
Copy link
Contributor Author

Starting this week, we'll start removing the :nightly tags from the release process and from quay.

@nickboldt
Copy link
Contributor Author

nickboldt commented Jul 8, 2021

Status:

Additionally, it seems many projects use a different naming convention for its :next build action file, and as part of this epic we should clean that up too, so where it makes sense, we have next-build.yml in all (most) of the projects.

next-build:

  • che/.github/workflows/next-build.yml
  • che-devfile-registry/.github/workflows/next-build.yml
  • che-plugin-registry/.github/workflows/next-build.yml
  • che-kubernetes-image-puller/.github/workflows/next-build.yml
  • che-machine-exec/.github/workflows/next-build.yaml
  • che-operator/.github/workflows/next-build.yaml
  • che-server/.github/workflows/next-build.yml

Other variations:

  • devworkspace-che-operator/.github/workflows/build-image.yml
  • che-editor-intellij-community/.github/workflows/build-publish.yml
  • che-jwtproxy/.github/workflows/build.yml
  • che-dashboard/.github/workflows/ci.yaml
  • che-dashboard/.github/workflows/ci-multiarch.yaml
    etc.

ibuziuk pushed a commit to che-incubator/kubernetes-image-puller that referenced this issue Jul 19, 2021
Change-Id: Ia1c826f1848bbf2f80c1a86469b6790329b36a0b
Signed-off-by: nickboldt <nboldt@redhat.com>
@nickboldt nickboldt modified the milestones: 7.33, 7.34 Jul 26, 2021
@nickboldt
Copy link
Contributor Author

nickboldt commented Aug 4, 2021

Done:

  • KIP
  • Dashboard
  • DWCO

Still to do for consistency:

And then we need to purge the old :nightly tags to avoid confusion (from all the other projects)

@nickboldt nickboldt modified the milestones: 7.34, 7.35 Aug 4, 2021
@ibuziuk
Copy link
Member

ibuziuk commented Aug 5, 2021

regarding #20149
@mkuznyetsov @nickboldt do you plan to provide an MR with the new CI based on the GH actions to https://github.com/che-incubator/kubernetes-image-puller-operator ?

@mkuznyetsov
Copy link
Contributor

che-antora-2.3:nightly
che-cpp-rhel7:nightly
che-dotnet-2.2:nightly
che-dotnet-3.1:nightly
che-golang-1.12:nightly
che-golang-1.14:nightly
che-java11-gradle:nightly
che-java11-maven:nightly
che-java8-maven:nightly
che-nodejs10-community:nightly
che-nodejs12-community:nightly
che-nodejs10-ubi:nightly
che-nodejs8-centos:nightly
che-php-7:nightly
che-python-3.8:nightly
che-quarkus:nightly
che-rust-1.39:nightly

the following sidecar images have been deleted from Quay.io

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/ci CI build and releases, PR testing, & whitelabel/productization issues kind/epic A long-lived, PM-driven feature request. Must include a checklist of items that must be completed. kind/task Internal things, technical debt, and to-do tasks to be performed. roadmap/3-months Epics that are planned to complete in the short term (within 3 months) severity/P2 Has a minor but important impact to the usage or development of the system.
Projects
None yet
Development

No branches or pull requests

9 participants