From 9cbe79192f394c1cc1cfa25fc4eec98b2e5c5c7f Mon Sep 17 00:00:00 2001 From: Riley Dixon Date: Tue, 13 Jan 2026 15:44:48 -0700 Subject: [PATCH 1/7] CI: Start new workflow that runs once a night. Will run once a night or on demand to produce a nightly release. Platform jobs are kept separate and are not in a matrix to avoid clobbering the outputs of the callable workflow. Release steps to be added later. --- .github/workflows/nightly-build-ais.yml | 34 +++++++++++++++++++++++++ .github/workflows/nightly-release.yml | 24 +++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 .github/workflows/nightly-build-ais.yml create mode 100644 .github/workflows/nightly-release.yml diff --git a/.github/workflows/nightly-build-ais.yml b/.github/workflows/nightly-build-ais.yml new file mode 100644 index 00000000..9f1bc46f --- /dev/null +++ b/.github/workflows/nightly-build-ais.yml @@ -0,0 +1,34 @@ +name: AIS_nightly_build +run-name: Create a nightly build of hipFile +on: + workflow_call: + inputs: + platform: + required: true + type: string + outputs: + ais_hipfile_pkg_dev_filename: + description: "Filename for the hipFile development DEB/RPM package." + value: ${{ jobs.build_hipFile.outputs.ais_hipfile_pkg_dev_filename }} + ais_hipfile_pkg_filename: + description: "Filename for the hipFile runtime DEB/RPM package." + value: ${{ jobs.build_hipFile.outputs.ais_hipfile_pkg_filename }} +permissions: + contents: read + packages: write +jobs: + get_AIS_CI_image: + # This runs on develop so will always use latest. + uses: ./.github/workflows/build-ais-ci-image.yml + with: + dockerfile_changed: false + platform: ${{ inputs.platform }} + build_hipFile: + if: ${{ !cancelled() && needs.get_AIS_CI_image.outputs.ci_image_build_satisfied == 'true' }} + needs: [get_AIS_CI_image] + uses: ./.github/workflows/build-ais.yml + with: + ci_image: ${{ needs.get_AIS_CI_image.outputs.ci_image }} + cxx_compiler: amdclang++ + platform: ${{ inputs.platform }} + upload_artifacts: true diff --git a/.github/workflows/nightly-release.yml b/.github/workflows/nightly-release.yml new file mode 100644 index 00000000..c5930c1d --- /dev/null +++ b/.github/workflows/nightly-release.yml @@ -0,0 +1,24 @@ +name: nightly-release +run-name: Create a nightly release of hipFile + +on: + schedule: + - cron: "0 0 * * *" +permissions: + contents: read + packages: write +jobs: + # Can't use a matrix to avoid clobbering outputs. + # Could consider a more complex way of passing matrix outputs around via build artifacts. + build_rocky: + uses: ./.github/workflows/nightly-build-ais.yml + with: + platform: rocky + build_suse: + uses: ./.github/workflows/nightly-build-ais.yml + with: + platform: suse + build_ubuntu: + uses: ./.github/workflows/nightly-build-ais.yml + with: + platform: ubuntu From d33e7962c6f92532a6f5aa4bc5ac4abb454a27a3 Mon Sep 17 00:00:00 2001 From: Riley Dixon Date: Wed, 14 Jan 2026 15:52:19 -0700 Subject: [PATCH 2/7] CI: Add job to create and publish the nightly release. --- .github/workflows/nightly-release.yml | 33 +++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/.github/workflows/nightly-release.yml b/.github/workflows/nightly-release.yml index c5930c1d..523267eb 100644 --- a/.github/workflows/nightly-release.yml +++ b/.github/workflows/nightly-release.yml @@ -22,3 +22,36 @@ jobs: uses: ./.github/workflows/nightly-build-ais.yml with: platform: ubuntu + publish_release: + needs: [build_rocky, build_suse, build_ubuntu] + runs-on: [ubuntu-24.04] + permissions: + contents: write + steps: + - name: Fetch hipFile Repository + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 #v6.0.1 + - name: Download hipFile packages + uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 #v7.0.0 + with: + merge-multiple: true + # Currently only vetted for ubuntu, suse, and rocky. + # Best effort to only match runtime and development packages while + # avoiding any extras/testing packages. + pattern: hipfile{[-_][0-9],-dev_[0-9],-devel-[0-9]}*.{deb,rpm} + - name: List Releases + env: + GH_TOKEN: ${{ github.token }} + run: | + gh release list + - name: Create a release + env: + GH_TOKEN: ${{ github.token }} + run: | + shopt -s nullglob + gh release create \ + --notes "$(date)" \ + --prerelease \ + --target develop \ + --title Nightly \ + nightly \ + hipfile{[-_][0-9],-dev_[0-9],-devel-[0-9]}*.{deb,rpm} From 3f46dd0c0f916371ba45c91ce794eac036636afd Mon Sep 17 00:00:00 2001 From: Riley Dixon Date: Wed, 14 Jan 2026 15:09:48 -0700 Subject: [PATCH 3/7] CI: Delete the 'nightly' release if it already exists. `gh release create` will fail if the release already exists. --- .github/workflows/nightly-release.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/.github/workflows/nightly-release.yml b/.github/workflows/nightly-release.yml index 523267eb..d1fece7e 100644 --- a/.github/workflows/nightly-release.yml +++ b/.github/workflows/nightly-release.yml @@ -43,6 +43,19 @@ jobs: GH_TOKEN: ${{ github.token }} run: | gh release list + - name: Test if 'nightly' already exists. + id: nightly-exists + continue-on-error: true + env: + GH_TOKEN: ${{ github.token }} + run: | + gh release view nightly + - name: Delete 'nightly' if it already exists. + if: ${{ steps.nightly-exists.outcome == 'success' }} + env: + GH_TOKEN: ${{ github.token }} + run: | + gh release delete nightly --yes - name: Create a release env: GH_TOKEN: ${{ github.token }} From d062d9792440b489274b457232c92e523f36cf49 Mon Sep 17 00:00:00 2001 From: Riley Dixon Date: Thu, 15 Jan 2026 10:41:23 -0700 Subject: [PATCH 4/7] CI: Add a note to the nightly release. --- .github/workflows/nightly-release.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/nightly-release.yml b/.github/workflows/nightly-release.yml index d1fece7e..78c52de4 100644 --- a/.github/workflows/nightly-release.yml +++ b/.github/workflows/nightly-release.yml @@ -62,7 +62,13 @@ jobs: run: | shopt -s nullglob gh release create \ - --notes "$(date)" \ + --notes " + Nightly Build as of: $(date) + + The packages contained here are not suitable for production workloads. + These packages are also not targeted to a particular ROCm version. Some caution + is needed if managing multiple ROCm versions on a system. + " \ --prerelease \ --target develop \ --title Nightly \ From 796024515739d91db186ec4c8636382be2b26244 Mon Sep 17 00:00:00 2001 From: Riley Dixon Date: Thu, 15 Jan 2026 10:44:29 -0700 Subject: [PATCH 5/7] CI: Add manual trigger to nightly release workflow. --- .github/workflows/nightly-release.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/nightly-release.yml b/.github/workflows/nightly-release.yml index 78c52de4..a20ef3be 100644 --- a/.github/workflows/nightly-release.yml +++ b/.github/workflows/nightly-release.yml @@ -4,6 +4,7 @@ run-name: Create a nightly release of hipFile on: schedule: - cron: "0 0 * * *" + workflow_dispatch: permissions: contents: read packages: write From 4776efc6825c2e2e886581a02d578b3f7e91ca7f Mon Sep 17 00:00:00 2001 From: Riley Dixon Date: Thu, 15 Jan 2026 11:20:43 -0700 Subject: [PATCH 6/7] CI: Convert nightly build jobs to a matrix Originally I wanted to be able to refer to each package produced by the build workflow. This is not possible in a matrix job as the output would be clobbered by whatever leg of the matrix completed last. If we are fine with using glob patterns to reference the packages accordingly, then we do not need the access the outputs of the build workflows. --- .github/workflows/nightly-release.yml | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/nightly-release.yml b/.github/workflows/nightly-release.yml index a20ef3be..bc4905af 100644 --- a/.github/workflows/nightly-release.yml +++ b/.github/workflows/nightly-release.yml @@ -9,22 +9,22 @@ permissions: contents: read packages: write jobs: - # Can't use a matrix to avoid clobbering outputs. - # Could consider a more complex way of passing matrix outputs around via build artifacts. - build_rocky: + # We can use a matrix job if we don't need to reference the outputs + # of each individual job within the matrix. + # This relies on using a glob pattern to reference the build artifacts. + build_nightly_hipFile: + strategy: + fail-fast: false + matrix: + platform: + - rocky + - suse + - ubuntu uses: ./.github/workflows/nightly-build-ais.yml with: - platform: rocky - build_suse: - uses: ./.github/workflows/nightly-build-ais.yml - with: - platform: suse - build_ubuntu: - uses: ./.github/workflows/nightly-build-ais.yml - with: - platform: ubuntu + platform: ${{ matrix.platform }} publish_release: - needs: [build_rocky, build_suse, build_ubuntu] + needs: [build_nightly_hipFile] runs-on: [ubuntu-24.04] permissions: contents: write From 9110327f5a6a707086162f957a1215e1707c3918 Mon Sep 17 00:00:00 2001 From: Riley Dixon Date: Tue, 20 Jan 2026 10:40:38 -0700 Subject: [PATCH 7/7] CI: Pass in the absolute path of the current ROCm install. For the time being, we will hardcode the absolute path of the version of ROCm that is installed in the container. In the future, we will want the CI to have better control to dictate where the install path is and what version of ROCm we should be building against. --- .github/workflows/build-ais.yml | 3 +++ .github/workflows/nightly-release.yml | 3 +-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-ais.yml b/.github/workflows/build-ais.yml index 0bff275a..e2e72347 100644 --- a/.github/workflows/build-ais.yml +++ b/.github/workflows/build-ais.yml @@ -10,6 +10,7 @@ env: inputs.platform == 'ubuntu' && 'apt' }} AIS_PKG_TYPE: ${{ inputs.platform == 'ubuntu' && 'DEB' || 'RPM' }} + AIS_ROCM_VERSION: 6.4.2 # Code coverage report only vetted to work for amdclang++ on Ubuntu AIS_USE_CODE_COVERAGE: ${{ inputs.cxx_compiler == 'amdclang++' && inputs.platform == 'ubuntu' }} on: @@ -100,6 +101,7 @@ jobs: - name: Generate build files for hipFile targeting the AMD platform (${{ inputs.cxx_compiler }}) run: | docker exec \ + -e "_AIS_ROCM_VERSION=${AIS_ROCM_VERSION}" \ -t \ -w /ais/hipFile/build \ ${AIS_CONTAINER_NAME} \ @@ -110,6 +112,7 @@ jobs: -DCMAKE_HIP_PLATFORM=amd \ -DAIS_BUILD_DOCS=ON \ -DAIS_USE_CODE_COVERAGE=${{ env.AIS_USE_CODE_COVERAGE == 'true' && 'ON' || 'OFF' }} \ + -DROCM_PATH="/opt/rocm-${_AIS_ROCM_VERSION}" \ .. ' - name: Build hipFile for the AMD platform (${{ inputs.cxx_compiler }}) diff --git a/.github/workflows/nightly-release.yml b/.github/workflows/nightly-release.yml index bc4905af..46a188ba 100644 --- a/.github/workflows/nightly-release.yml +++ b/.github/workflows/nightly-release.yml @@ -67,8 +67,7 @@ jobs: Nightly Build as of: $(date) The packages contained here are not suitable for production workloads. - These packages are also not targeted to a particular ROCm version. Some caution - is needed if managing multiple ROCm versions on a system. + These packages are currently tied to the current version of our CI (6.4.2). " \ --prerelease \ --target develop \