[llvm] workflows/release-binaries: Run tests on the same runner as the build (PR #162421)
Tom Stellard via llvm-commits
llvm-commits at lists.llvm.org
Tue Oct 7 21:05:37 PDT 2025
https://github.com/tstellar updated https://github.com/llvm/llvm-project/pull/162421
>From 93653370ccfa03f829c3c09496fbf50c98291909 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Wed, 8 Oct 2025 03:41:00 +0000
Subject: [PATCH 1/3] workflows/release-binaries: Run tests on the same runner
as the build
Also, ignore the test results since they almost always fail. This
allows us to simplify the build process and skip uploading and
downloading the build and source directories which are huge.
---
.../release-binaries-save-stage/action.yml | 44 -------------
.../release-binaries-setup-stage/action.yml | 59 ------------------
.github/workflows/release-binaries.yml | 62 +++++++------------
3 files changed, 22 insertions(+), 143 deletions(-)
delete mode 100644 .github/workflows/release-binaries-save-stage/action.yml
delete mode 100644 .github/workflows/release-binaries-setup-stage/action.yml
diff --git a/.github/workflows/release-binaries-save-stage/action.yml b/.github/workflows/release-binaries-save-stage/action.yml
deleted file mode 100644
index 84ccf98c23a82..0000000000000
--- a/.github/workflows/release-binaries-save-stage/action.yml
+++ /dev/null
@@ -1,44 +0,0 @@
-name: Save Stage
-description: >-
- Upload the source and binary directories from a build stage so that they
- can be re-used in the next stage. This action is used to the release
- binaries workflow into multiple stages to avoid the 6 hour timeout on
- the GitHub hosted runners.
-inputs:
- build-prefix:
- description: "Directory containing the build directory."
- required: true
- type: 'string'
-
-permissions:
- contents: read
-
-runs:
- using: "composite"
- steps:
- # We need to create an archive of the build directory, because it has too
- # many files to upload.
- - name: Package Build and Source Directories
- shell: bash
- run: |
- # Remove .git/config to avoid leaking GITHUB_TOKEN stored there.
- # See https://unit42.paloaltonetworks.com/github-repo-artifacts-leak-tokens/
- rm -Rf .git/config
- # Windows does not support symlinks, so we need to dereference them.
- tar --exclude build/ ${{ (runner.os == 'Windows' && '-h') || '' }} -c . | zstd -T0 -c > ../llvm-project.tar.zst
- mv ../llvm-project.tar.zst .
- tar -C ${{ inputs.build-prefix }} -c build/ | zstd -T0 -c > build.tar.zst
-
- - name: Upload Stage 1 Source
- uses: actions/upload-artifact at ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
- with:
- name: ${{ runner.os }}-${{ runner.arch }}-${{ github.job }}-source
- path: llvm-project.tar.zst
- retention-days: 2
-
- - name: Upload Stage 1 Build Dir
- uses: actions/upload-artifact at ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
- with:
- name: ${{ runner.os}}-${{ runner.arch }}-${{ github.job }}-build
- path: build.tar.zst
- retention-days: 2
diff --git a/.github/workflows/release-binaries-setup-stage/action.yml b/.github/workflows/release-binaries-setup-stage/action.yml
deleted file mode 100644
index 475a25fa6b772..0000000000000
--- a/.github/workflows/release-binaries-setup-stage/action.yml
+++ /dev/null
@@ -1,59 +0,0 @@
-name: Setup Stage
-description: >-
- Setup the next stage of the release binaries workflow. This sets up the
- environment correctly for a new stage of the release binaries workflow
- and also restores the source and build directory from the previous stage.
-
-inputs:
- previous-artifact:
- description: >-
- A unique descriptor for the artifact from the previous stage. This will
- be used to construct the final artifact pattern, which is:
- $RUNNER_OS-$RUNNER_ARCH-$PREVIOUS_ARTIFACT-*
- required: false
- type: 'string'
-
-outputs:
- build-prefix:
- description: "Directory containing the build directory."
- value: ${{ steps.build-prefix.outputs.build-prefix }}
-
-runs:
- using: "composite"
- steps:
- - name: Install Ninja
- uses: llvm/actions/install-ninja at a1ea791b03c8e61f53a0e66f2f73db283aa0f01e # main
-
- - name: Setup Windows
- if: startsWith(runner.os, 'Windows')
- uses: llvm/actions/setup-windows at main
- with:
- arch: amd64
-
- - name: Set Build Prefix
- id: build-prefix
- shell: bash
- run: |
- build_prefix=`pwd`
- if [ "${{ runner.os }}" = "Linux" ]; then
- sudo chown $USER:$USER /mnt/
- build_prefix=/mnt/
- fi
- echo "build-prefix=$build_prefix" >> $GITHUB_OUTPUT
-
- - name: Download Previous Stage Artifact
- if: ${{ inputs.previous-artifact }}
- id: download
- uses: actions/download-artifact at 634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
- with:
- pattern: ${{ runner.os }}-${{ runner.arch }}-${{ inputs.previous-artifact }}-*
- merge-multiple: true
-
- - name: Unpack Artifact
- if: ${{ steps.download.outputs.download-path }}
- shell: bash
- run: |
- tar --zstd -xf llvm-project.tar.zst
- rm llvm-project.tar.zst
- tar --zstd -C ${{ steps.build-prefix.outputs.build-prefix}} -xf build.tar.zst
- rm build.tar.zst
diff --git a/.github/workflows/release-binaries.yml b/.github/workflows/release-binaries.yml
index cba48e4d0c70a..f644c11eaba41 100644
--- a/.github/workflows/release-binaries.yml
+++ b/.github/workflows/release-binaries.yml
@@ -225,9 +225,25 @@ jobs:
run: |
mv ../workflows-main .
- - name: Setup Stage
+ - name: Install Ninja
+ uses: llvm/actions/install-ninja at a1ea791b03c8e61f53a0e66f2f73db283aa0f01e # main
+
+ - name: Setup Windows
+ if: startsWith(runner.os, 'Windows')
+ uses: llvm/actions/setup-windows at main
+ with:
+ arch: amd64
+
+ - name: Set Build Prefix
id: setup-stage
- uses: ./workflows-main/.github/workflows/release-binaries-setup-stage
+ shell: bash
+ run: |
+ build_prefix=`pwd`
+ if [ "${{ runner.os }}" = "Linux" ]; then
+ sudo chown $USER:$USER /mnt/
+ build_prefix=/mnt/
+ fi
+ echo "build-prefix=$build_prefix" >> $GITHUB_OUTPUT
- name: Configure
id: build
@@ -258,17 +274,11 @@ jobs:
path: |
${{ needs.prepare.outputs.release-binary-filename }}
- # Clean up some build files to reduce size of artifact.
- - name: Clean Up Build Directory
- shell: bash
+ - name: Run Tests
+ # These almost always fail so don't let them fail the build and prevent the uploads.
+ continue-on-error: true
run: |
- find ${{ steps.setup-stage.outputs.build-prefix }}/build -iname ${{ needs.prepare.outputs.release-binary-filename }} -delete
- find ${{ steps.setup-stage.outputs.build-prefix }}/build -iname _CPack_Packages -prune -exec rm -r {} +
-
- - name: Save Stage
- uses: ./workflows-main/.github/workflows/release-binaries-save-stage
- with:
- build-prefix: ${{ steps.setup-stage.outputs.build-prefix }}
+ ninja -C ${{ steps.setup-stage.outputs.build-prefix }}/build stage2-check-all
upload-release-binaries:
name: "Upload Release Binaries"
@@ -327,31 +337,3 @@ jobs:
--release ${{ needs.prepare.outputs.release-version }} \
upload \
--files ${{ needs.prepare.outputs.release-binary-filename }}*
-
- test-release:
- name: "Test Release"
- needs:
- - prepare
- - build-release-package
- if: >-
- github.repository_owner == 'llvm'
- runs-on: ${{ needs.prepare.outputs.test-runs-on }}
- steps:
- - name: Checkout Actions
- uses: actions/checkout at 08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- with:
- ref: ${{ (github.event_name == 'pull_request' && github.sha) || 'main' }}
- sparse-checkout: |
- .github/workflows/
- sparse-checkout-cone-mode: false
- path: workflows
- - name: Setup Stage
- id: setup-stage
- uses: ./workflows/.github/workflows/release-binaries-setup-stage
- with:
- previous-artifact: build-release-package
-
- - name: Run Tests
- shell: bash
- run: |
- ninja -C ${{ steps.setup-stage.outputs.build-prefix }}/build stage2-check-all
>From c24923ada92b1fc9420100a52542d2075df9b457 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Wed, 8 Oct 2025 03:56:31 +0000
Subject: [PATCH 2/3] Remove some dead cone
---
.github/workflows/release-binaries.yml | 31 --------------------------
1 file changed, 31 deletions(-)
diff --git a/.github/workflows/release-binaries.yml b/.github/workflows/release-binaries.yml
index f644c11eaba41..22daae586b8f0 100644
--- a/.github/workflows/release-binaries.yml
+++ b/.github/workflows/release-binaries.yml
@@ -194,37 +194,6 @@ jobs:
runs-on: ${{ needs.prepare.outputs.build-runs-on }}
steps:
- - name: Checkout Actions
- uses: actions/checkout at 08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- with:
- ref: ${{ (github.event_name == 'pull_request' && github.sha) || 'main' }}
- sparse-checkout: |
- .github/workflows/
- sparse-checkout-cone-mode: false
- # Check out outside of working directory so the source checkout doesn't
- # remove it.
- path: workflows
-
- # actions/checkout does not support paths outside of the GITHUB_WORKSPACE.
- # Also, anything that we put inside of GITHUB_WORKSPACE will be overwritten
- # by future actions/checkout steps. Therefore, in order to checkout the
- # latest actions from main, we need to first checkout out the actions inside of
- # GITHUB_WORKSPACE (see previous step), then use actions/checkout to checkout
- # the code being built and the move the actions from main back into GITHUB_WORKSPACE,
- # becasue the uses on composite actions only reads workflows from inside GITHUB_WORKSPACE.
- - shell: bash
- run: mv workflows ../workflows-main
-
- - name: Checkout LLVM
- uses: actions/checkout at 08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- with:
- ref: ${{ needs.prepare.outputs.ref }}
-
- - name: Copy main workflows
- shell: bash
- run: |
- mv ../workflows-main .
-
- name: Install Ninja
uses: llvm/actions/install-ninja at a1ea791b03c8e61f53a0e66f2f73db283aa0f01e # main
>From 7adc23f3ffbe24f6fec6c017bb2b099205c07ce3 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Wed, 8 Oct 2025 04:00:38 +0000
Subject: [PATCH 3/3] Add back in llvm checkout
---
.github/workflows/release-binaries.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/.github/workflows/release-binaries.yml b/.github/workflows/release-binaries.yml
index 22daae586b8f0..83969b5490685 100644
--- a/.github/workflows/release-binaries.yml
+++ b/.github/workflows/release-binaries.yml
@@ -194,6 +194,11 @@ jobs:
runs-on: ${{ needs.prepare.outputs.build-runs-on }}
steps:
+ - name: Checkout LLVM
+ uses: actions/checkout at 08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
+ with:
+ ref: ${{ needs.prepare.outputs.ref }}
+
- name: Install Ninja
uses: llvm/actions/install-ninja at a1ea791b03c8e61f53a0e66f2f73db283aa0f01e # main
More information about the llvm-commits
mailing list