summaryrefslogtreecommitdiff
path: root/.github/workflows/release-binaries.yml
diff options
context:
space:
mode:
authorJack Grigg <thestr4d@gmail.com>2023-04-17 11:59:56 -0700
committerTom Stellard <tstellar@redhat.com>2023-04-17 12:03:56 -0700
commit5b8156bf623042c857150cb9a6039d7e775d90e4 (patch)
tree30af16a5d79c726b9129a41bbd150ae2ecb3e0f9 /.github/workflows/release-binaries.yml
parentf40ed1f619046e98d08b092b1afb835ed5156f52 (diff)
downloadllvm-5b8156bf623042c857150cb9a6039d7e775d90e4.tar.gz
github: Add manual workflow to build and upload release binaries
Reviewed By: kwk Differential Revision: https://reviews.llvm.org/D143535
Diffstat (limited to '.github/workflows/release-binaries.yml')
-rw-r--r--.github/workflows/release-binaries.yml113
1 files changed, 113 insertions, 0 deletions
diff --git a/.github/workflows/release-binaries.yml b/.github/workflows/release-binaries.yml
new file mode 100644
index 000000000000..268698219cbb
--- /dev/null
+++ b/.github/workflows/release-binaries.yml
@@ -0,0 +1,113 @@
+name: Release Binaries
+
+on:
+ push:
+ tags:
+ - 'llvmorg-*'
+ workflow_dispatch:
+ inputs:
+ upload:
+ description: 'Upload binaries to the release page'
+ required: true
+ default: true
+ type: boolean
+ tag:
+ description: 'Tag to build'
+ required: true
+ type: string
+
+permissions:
+ contents: read # Default everything to read-only
+
+jobs:
+ prepare:
+ name: Prepare to build binaries
+ runs-on: ubuntu-22.04
+ if: github.repository == 'llvm/llvm-project'
+ outputs:
+ release-version: ${{ steps.validate-tag.outputs.release-version }}
+ release: ${{ steps.validate-tag.outputs.release }}
+ build-dir: ${{ steps.validate-tag.outputs.build-dir }}
+ rc-flags: ${{ steps.validate-tag.outputs.rc-flags }}
+ ref: ${{ steps.validate-tag.outputs.ref }}
+
+ steps:
+ - name: Checkout LLVM
+ uses: actions/checkout@v3
+
+ - name: Validate and parse tag
+ id: validate-tag
+ # In order for the test-release.sh script to run correctly, the LLVM
+ # source needs to be at the following location relative to the build dir:
+ # | X.Y.Z-rcN | ./rcN/llvm-project
+ # | X.Y.Z | ./final/llvm-project
+ #
+ # We also need to set divergent flags based on the release version:
+ # | X.Y.Z-rcN | -rc N -test-asserts
+ # | X.Y.Z | -final
+ run: |
+ tag="${{ github.ref_name }}"
+ trimmed=`echo ${{ inputs.tag }} | xargs`
+ [[ "$trimmed" != "" ]] && tag="$trimmed"
+ if [ -n "${{ inputs.upload }}" ]; then
+ upload="${{ inputs.upload }}"
+ else
+ upload="true"
+ fi
+ bash .github/workflows/set-release-binary-outputs.sh "${{ github.actor }}" "$tag" "$upload"
+
+ build-binaries:
+ name: ${{ matrix.target.triple }}
+ permissions:
+ contents: write # To upload assets to release.
+ needs: prepare
+ runs-on: ${{ matrix.target.runs-on }}
+ strategy:
+ fail-fast: false
+ matrix:
+ target:
+ - triple: x86_64-linux-gnu-ubuntu-22.04
+ runs-on: ubuntu-22.04-8x32
+ debian-build-deps: >
+ chrpath
+ gcc-multilib
+ ninja-build
+
+ steps:
+ - name: Checkout LLVM
+ uses: actions/checkout@v3
+ with:
+ ref: ${{ needs.prepare.outputs.ref }}
+ path: ${{ needs.prepare.outputs.build-dir }}/llvm-project
+
+ - name: Install Brew build dependencies
+ if: matrix.target.brew-build-deps != ''
+ run: brew install ${{ matrix.target.brew-build-deps }}
+
+ - name: Install Debian build dependencies
+ if: matrix.target.debian-build-deps != ''
+ run: sudo apt install ${{ matrix.target.debian-build-deps }}
+
+ - name: Set macOS build env variables
+ if: runner.os == 'macOS'
+ run: |
+ echo "MACOSX_DEPLOYMENT_TARGET=10.9" >> $GITHUB_ENV
+
+ - name: Build and test release
+ run: |
+ ${{ needs.prepare.outputs.build-dir }}/llvm-project/llvm/utils/release/test-release.sh \
+ -release ${{ needs.prepare.outputs.release }} \
+ ${{ needs.prepare.outputs.rc-flags }} \
+ -triple ${{ matrix.target.triple }} \
+ -use-ninja \
+ -no-checkout \
+ -no-test-suite
+
+ - name: Upload binaries
+ if: ${{ always() && needs.prepare.outputs.upload == 'true' }}
+ run: |
+ ${{ needs.prepare.outputs.build-dir }}/llvm-project/llvm/utils/release/github-upload-release.py \
+ --token ${{ github.token }} \
+ --release ${{ needs.prepare.outputs.release-version }} \
+ upload \
+ --files ${{ needs.prepare.outputs.build-dir }}/clang+llvm-${{ needs.prepare.outputs.release-version }}-${{ matrix.target.triple }}.tar.xz