-
Epic
-
Resolution: Done
-
Blocker
-
2.11.0.GA
-
Publish binary asset files to GH releases
-
False
-
False
-
In Progress
-
0% To Do, 0% In Progress, 100% Done
-
Undefined
-
The purpose of this epic is twofold:
- remove our dependency on Jenkins as a file host, so when it's unavailable, offline/local builds can be done to push assets to GH releases, and then from there Brew builds can be triggered directly.
- By moving assets from internal file hosting to external file hosting, we also gain the ability to do Brewless builds of CRW, in an as-close-as-possible-to-Brew way (using the same asset files and similar Dockerfiles), rather than the upstream/bootstrap way.
Specs:
- Jenkins builds must be updated so that they simply run a bash script to create assets. The crw-deprecated job is a good candidate for this as it's already just a build.sh script.
- a new standard script should be created that will publish all asset-* files in a given folder for a given CRW version 2.y to https://github.com/redhat-developer/codeready-workspaces-images/releases/tags/2.y-assets - https://github.com/redhat-developer/codeready-workspaces-images/releases/tag/2.11-assets
- each file will be suffixed with its SHA512 sum, eg., asset-stacks-language-servers-dependencies-golang-x86_64@73ad0f969415383aa110e7f60ae497d38f4ca5dc8ac90437a962c11b5cbece9c2bbb0885256ffd0a573900795b2901e100dfff383a444515e0155d1b9663dea7.tar.gz
- this will allow multiple versions to be published over the course of a release
sample script to rename files with sha suffix
for d in codeready-workspaces-sleep-*; do s=$(sha512sum $d | cut -f 1 -d ' ') echo "Rename $d -> ${d%%.*}@$s.${d#*.}" mv $d ${d%%.*}@$s.${d#*.} done
Internal Build flow:
- after crw-* jobs have run to sync from upstream to midstream, they will then run the sync-to-downstream job, which will create/collect/publish assets per the specs above (if not already published via upstream job like crw-deprecated) and also create a sources file using the same format as that expected/created by dist-git:
machineexec sources file
$➔ cat sources SHA512 (codeready-workspaces-sleep-x86_64.tar.gz) = e7bf0bc842ec94bee6ae9631276931e1ee223d2976bdd601432b6a696731fb2b0f0d54b4dd61b97ea45b42daae6fbe18fdcd0c78ef358ef3e78d39784d799d26 SHA512 (codeready-workspaces-sleep-s390x.tar.gz) = 0afba64144d6f247e40db4327127331b76eedb462e7542d05c9b730aa5b833d5de1bc77674c21f1e746d5b85e22e9d9e1015bae4a28819a5538b68263499356b SHA512 (codeready-workspaces-sleep-ppc64le.tar.gz) = 579fed3114d07f65ab95d3d996579808efcff3696a303754a93b9dfd1c38efa4b432cba6b08d2a97cc315d336021838014a4f05489650a40dd3478cfafa40e64
- sync-to-downstream job will also update sources in the downstream repo, commit changes and push the binaries to the lookaside cache
- the third job in the series is get-sources-rhpkg-container-build, which will no longer need to get sources (as they'll already be committed in the previous step). Instead it will simply be a wrapper for the rhpkg container-build process, capturing the log and reporting error; then it will copy the resulting OSBS containers to Quay, and trigger downstream jobs to ensure that digests are updated in registries and metadata containers.
External Build flow:
- If building in GH, the last step above will instead be a GH action that will trigger when new the sources file, dockerfile, or other files in a given subfolder have been updated, eg., for machine exec, GH action will only watch the https://github.com/redhat-developer/codeready-workspaces-images/tree/crw-2-rhel-8/codeready-workspaces-machineexec folder
- blocks
-
CRW-668 Provide orchestration job to trigger all CRW images
- Closed
-
CRW-1454 uploadAssetsToGHRelease.sh & get-sources.sh should only refetch assets if they're new (check sha512sum)
- Closed
-
CRW-1854 Use IBM cloud x86_64-rhel8 nodes as Jenkins agents in all up-to-mid syncs and non-VPN builds
- Closed
- is blocked by
-
CRW-1621 migrate to template job + sync.sh
- Closed
-
CRW-1846 Move operator/metadata sync logic out of Jenkinsfile
- Closed
-
CRW-1913 don't collect assets twice in the same build flow
- Closed
- is related to
-
CRW-2407 Move crwctl CI builds from Jenkins hosting to GH release hosting
- Closed
-
CRW-2408 Update crwctl based installation jobs/tests to pull binaries from GH release instead of Jenkins
- Closed
- mentioned on