diff --git a/RELEASING.md b/RELEASING.md index e40e86b0c..70767b432 100644 --- a/RELEASING.md +++ b/RELEASING.md @@ -126,7 +126,7 @@ Before building the packages: #### Build Process To build the alpha DEB/RPM packages after the alpha PyPI is released, simply put -the tag name ie. ``v2.29.0a0`` or ``v2.29.0`` into the input textbox of the +the tag name ie. ``v2.29.0a0`` or ``v2.29.0`` into the input textbox of the [build page here](https://builds.globus.org/jenkins/job/BuildGlobusComputeAgentPackages/build?delay=0sec). then clicking the green **Build** button. @@ -134,8 +134,8 @@ For production builds, check the ``BUILD_FOR_STABLE`` box. 1. Notes Our alpha builds will go to the ``unstable`` repo, and production packages goes - to both the ``testing`` and ``stable`` repos. - + to both the ``testing`` and ``stable`` repos. + After this build process for production, the testing and stable packages will reside in an internal globus 'holding' repo. GCS manages the infrastructure so we need to run another Jenkins build to push it to live if GCS is not having @@ -153,28 +153,49 @@ For production builds, check the ``BUILD_FOR_STABLE`` box. [publishResults.groovy line 85](https://github.com/globusonline/gcs-build-scripts/blob/168617a0ccbb0aee7b3bee04ee67940bbe2a80f6/vars/publishResults.groovy#L85) 2. (Access on VPN) Click the [build button here](https://builds.globus.org/jenkins/job/BuildGlobusComputeAgentPackages/build?delay=0sec) 3. Wait 20-30 minutes and confirm that the [build is green](https://builds.globus.org/jenkins/job/BuildGlobusComputeAgentPackages/) -4. For production release cycles where there is also a GCS release, if we push our packages before they do, skip the following (also not necessary for alpha releases) - * If there isn't a concurrent GCS release, or if we build our packages after they finish their deploy, we need to manually run the downloads sync (leave SYNC_V4_REPO ubnchecked): - * https://builds.globus.org/jenkins/view/all/job/Synchronize%20GCSv5%20Stable/build?delay=0sec +4. For production release, we will have finished the build before the GCS team has #### Old Build Instructions -(Previously) As a temporary workaround, we needed to add a few lines to manually set some +As a temporary workaround, we need to add a few lines to manually set some env variables in our [JenkinsFile](https://github.com/globus/globus-compute/blob/743fa1e398fd40a00efb5880c55e3fa6e47392fc/compute_endpoint/packaging/JenkinsFile#L24) before triggering the build, as detailed below. -1. Notes +1. Git checkout both the current release branch that was recently pushed to + PyPI, ie. ``v2.23.0`` or ``v2.25.0a0`` and the ``build_for_stable`` branch +2. Rebase ``build_for_stable`` on the release branch which should result in + adding the following ~6 lines: + + ... + env.BRANCH_NAME = scmVars.GIT_BRANCH.replaceFirst(/^.*origin\//, "") + + env.TAG_NAME = sh(returnStdout: true, script: "git tag --contains | head -1").trim() + env.SOURCE_STASH_NAME = "${UUID.randomUUID()}" + echo "env.BRANCH_NAME = ${env.BRANCH_NAME}" + sh "git clean -fdx" + + + // temporary hack to build for stable + + sh "git checkout build_for_stable" + + env.TAG_NAME = "v2.23.0" + + env.DEFAULT_BRANCH = "build_for_stable" + + + dir("compute_endpoint/packaging/") { + ... + +3. Change the ``env.TAG_NAME`` above to the current production release version + * Note that ``env.TAG_NAME`` determines whether the build is sent to + the ``unstable`` repo or also to the ``testing`` and ``stable`` ones. * Example of unstable repo: * https://downloads.globus.org/globus-connect-server/unstable/rpm/el/9/x86_64/ - * Directory of testing images: - * https://builds.globus.org/downloads.globus.org/globus-connect-server/testing/rpm/el/8/x86_64/ - * Stable repo: - * The images will be in the below build directory after we finish our build process, but not public: - * https://builds.globus.org/downloads.globus.org/globus-connect-server/stable/rpm/el/8/x86_64/ - * After GCS push during deploy day (or if we ping them to do so), the public images will be located at: - * https://downloads.globus.org/globus-connect-server/stable/rpm/el/9/x86_64/ + * Example of stable repo: + * https://downloads.globus.org/globus-connect-server/stable/rpm/el/9/x86_64/ + * The logic of whether a release is stable is determined by whether the + package version of Globus Compute Endpoint set in ``version.py`` or + ``setup.py`` matches ``env.TAG_NAME`` above. If they are unequal, then [publishResults.groovy line 85](https://github.com/globusonline/gcs-build-scripts/blob/168617a0ccbb0aee7b3bee04ee67940bbe2a80f6/vars/publishResults.groovy#L85) -2. (Access on VPN) Click the [build button here](https://builds.globus.org/jenkins/job/BuildGlobusComputeAgentPackages/build?delay=0sec) -3. Wait 20-30 minutes and confirm that the [build is green](https://builds.globus.org/jenkins/job/BuildGlobusComputeAgentPackages/) -4. For production release, we will have finished the build before the GCS + will be (``tag`` : v2.23.0) != (``stable_tag`` : v2.23.0a0), where + stable_tag is constructed from the package version of an alpha release. +4. Commit and push your ``build_for_stable`` branch +5. (Access on VPN) Click the [build button here](https://builds.globus.org/jenkins/job/BuildGlobusComputeAgentPackages/build?delay=0sec) +6. Wait 20-30 minutes and confirm that the [build is green](https://builds.globus.org/jenkins/job/BuildGlobusComputeAgentPackages/) +7. For production release, we will have finished the build before the GCS team, and can notify them that our build is complete. They then will publish all packages when they finish their builds, which includes ours. diff --git a/compute_endpoint/packaging/JenkinsFile b/compute_endpoint/packaging/JenkinsFile index d46f598d4..91b0d8453 100644 --- a/compute_endpoint/packaging/JenkinsFile +++ b/compute_endpoint/packaging/JenkinsFile @@ -22,10 +22,18 @@ pipeline { script { def scmVars = checkout scm env.BRANCH_NAME = scmVars.GIT_BRANCH.replaceFirst(/^.*origin\//, "") + env.TAG_NAME = sh(returnStdout: true, script: "git tag --contains | head -1").trim() env.SOURCE_STASH_NAME = "${UUID.randomUUID()}" echo "env.BRANCH_NAME = ${env.BRANCH_NAME}" + echo "env.DEFAULT_BRANCH = ${env.DEFAULT_BRANCH}" sh "git clean -fdx" + + // temporary hack to build for stable + sh "git checkout build_for_stable" + env.TAG_NAME = "2.32.0" + env.DEFAULT_BRANCH = "build_for_stable" + dir("compute_endpoint/packaging/") { sh(script: "make show_vars") sh(script: "make setup_dist_for_deb setup_dist_for_rpm")