che icon indicating copy to clipboard operation
che copied to clipboard

Setup the release job for Che-Code

Open azatsarynnyy opened this issue 3 years ago • 9 comments

Is your task related to a problem? Please describe

Currently, the Che-Code repository doesn't have a release job that could be included in the overall Che release process.

Describe the solution you'd like

Create a GitHub Workflow that would:

  • run a script that prepares a release branch;
  • build the images;
  • publish the built images to the Quay registry.

Describe alternatives you've considered

No response

Additional context

No response

azatsarynnyy avatar Jul 15 '22 12:07 azatsarynnyy

There used to be branches like 1.62.x, 1.63.x with stable releases of VS Code and the job is cutting release and pushing images etc

https://github.com/che-incubator/che-code/blob/main/.github/workflows/image-publish-stable.yml

I think we should map this way and not cut releases with Che lifecycle as people want mainly to use either insiders version or the latest stable release of VS Code.

benoitf avatar Jul 18 '22 14:07 benoitf

There used to be branches like 1.62.x, 1.63.x with stable releases of VS Code and the job is cutting release and pushing images etc

https://github.com/che-incubator/che-code/blob/main/.github/workflows/image-publish-stable.yml

I think we should map this way and not cut releases with Che lifecycle as people want mainly to use either insiders version or the latest stable release of VS Code.

I like Florent's idea of providing the Che-Code images based on the VS Code releases.

But let's look at it from both perspectives:

  • the community should be able to use the Che-Code image that includes an expected set of the VS Code features/bugfixes
  • we should be able to include easily a Che-specific patch into a particular Che release and backport the Che-Code patches to any previous Che release

Che-Code can support both release schedules: VS Code-based and be included in the overall Che release process. So, we can benefit from both approaches.

azatsarynnyy avatar Aug 24 '22 16:08 azatsarynnyy

Suggested solution based on chat today w/ Artem:

  • [ ] add a new make-release.sh script (similar to what's in machine-exec?); this will
    • [ ] create a branch every 3 weeks
    • [ ] push a commit to trigger an action
  • [ ] rename image-publish-insiders.yaml to image-publish.yaml and have it handle BOTH main branch -> insiders and next, and add code for handling 7.yy.x -> 7.yy.z releases
  • [ ] update Che plugin registry builds so that we use the tagged releases in addition to the insiders version of che-code (as we do with theia next and 7.yy.z)
  • [ ] review DS plugin registry builds to see if there's a followup related task for that forked registry too

nickboldt avatar Sep 06 '22 13:09 nickboldt

@svor @azatsarynnyy Do we need to also update https://github.com/eclipse-che/che-plugin-registry/blob/main/che-editors.yaml to point to released che-code images & tags, or just stick with "insiders" ?

nickboldt avatar Sep 08 '22 15:09 nickboldt

@nickboldt yes, we need to update the plugin registry as well. https://github.com/eclipse-che/che-plugin-registry/blob/9d4ee0009c30139b9b67f539b7d720bcc8ccb28f/make-release.sh#L121

So, when the user takes the plugin registry 7.54.0 (for example) they will get the expected version of Che-Code - 7.54.0.

azatsarynnyy avatar Sep 08 '22 15:09 azatsarynnyy

I still don't know why the lifecycle of Che should be used in CheCode

I expect as a user to have a VS Code v1.71.0, not a VS Code 7.54.0

benoitf avatar Sep 08 '22 15:09 benoitf

I still don't know why the lifecycle of Che should be used in CheCode

I expect as a user to have a VS Code v1.71.0, not a VS Code 7.54.0

@benoitf with the VS Code releases-based versioning it will be much harder to track the mapping of Che versions to Che-Code versions. For example, when we need to backport the patches between different Che versions.

azatsarynnyy avatar Sep 09 '22 15:09 azatsarynnyy

initial PR https://github.com/che-incubator/che-code/pull/103

nickboldt avatar Sep 12 '22 13:09 nickboldt

closed too early by automation. Remaining work: Suggested solution based on chat today w/ Artem:

  • [x] add a new make-release.sh script (similar to what's in machine-exec?); this will
    • [ ] create a branch every 3 weeks
    • [ ] push a commit to trigger an action
  • [x] rename image-publish-insiders.yaml to image-publish.yaml and have it handle BOTH main branch -> insiders and next, and add code for handling 7.yy.x -> 7.yy.z releases
  • [x] update Che plugin registry builds so that we use the tagged releases in addition to the insiders version of che-code (as we do with theia next and 7.yy.z)
  • [ ] review DS plugin registry builds to see if there's a followup related task for that forked registry too

nickboldt avatar Sep 13 '22 14:09 nickboldt

@mkuznyetsov @nickboldt can we close this issue? I am asking to decide if we should include it in 7.54 release notes or not.

l0rd avatar Sep 22 '22 12:09 l0rd

As discussed today, "review DS plugin registry builds to see if there's a followup related task for that forked registry too" means:

  • https://github.com/redhat-developer/devspaces/blob/devspaces-3-rhel-8/dependencies/job-config.json#L29-L33 --> move 3.3 to use 7.54.x branch

See also:

  • https://github.com/redhat-developer/devspaces/blob/devspaces-3-rhel-8/product/updateVersionAndRegistryTags.sh#L184-L185
  • https://github.com/redhat-developer/devspaces/blob/devspaces-3-rhel-8/product/updateVersionAndRegistryTags.sh#L229-L230 where we need some sort of "if 3.2 use devspaces-3.2-rhel-8 branch; else 7.yy.x (or main)" logic

So... can't close it until it's actually complete. That's why there's a checklist! :/

nickboldt avatar Sep 27 '22 21:09 nickboldt

I see job-config.json was manually updated https://github.com/redhat-developer/devspaces/commit/d5efb318c1a9cc621776093b15283d1c743443a9 via https://github.com/redhat-developer/devspaces/pull/816 but the script has not been fixed so that it will do the correct mapping for 3.3+.

https://github.com/redhat-developer/devspaces/blob/devspaces-3-rhel-8/product/updateVersionAndRegistryTags.sh#L184-L185 https://github.com/redhat-developer/devspaces/blob/devspaces-3-rhel-8/product/updateVersionAndRegistryTags.sh#L229-L230

Issue remains open. @mkuznyetsov please LMK if you have a PR for this fix.

nickboldt avatar Oct 11 '22 14:10 nickboldt

See PR https://github.com/redhat-developer/devspaces/pull/835 which manually updated job-config.json to achieve what I asked @mkuznyetsov to do 20 days ago via script.

nickboldt avatar Oct 31 '22 19:10 nickboldt

Updated the script here: https://github.com/redhat-developer/devspaces/commit/657f2f5a64a2197d30b33a0881b6b4111481a7da and verified it works here: https://github.com/redhat-developer/devspaces/commit/f98a171b40400a290181a6d275b31d8e23c4a9d7 so it's ready for when we branch for 3.3/3.4

nickboldt avatar Oct 31 '22 20:10 nickboldt