XMLWordPrintable

    • 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.
        • generated files should be renamed with the asset-* prefix, and Dockerfiles that rely on these assets should be updated to use the new filenames
        • crw-configbump and crw-traefik should be converted to use a standard sync.sh and get-sources.sh script - see CRW-1621 and CRW-1913.
      • 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:

            nickboldt Nick Boldt
            nickboldt Nick Boldt
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: