diff options
author | Jack Grigg <thestr4d@gmail.com> | 2023-04-17 11:59:56 -0700 |
---|---|---|
committer | Tom Stellard <tstellar@redhat.com> | 2023-04-17 12:03:56 -0700 |
commit | 5b8156bf623042c857150cb9a6039d7e775d90e4 (patch) | |
tree | 30af16a5d79c726b9129a41bbd150ae2ecb3e0f9 /.github/workflows/release-binaries.yml | |
parent | f40ed1f619046e98d08b092b1afb835ed5156f52 (diff) | |
download | llvm-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.yml | 113 |
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 |