brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.2 KiB · eef49b5 Raw
105 lines · yaml
1name: Release Binaries All2 3permissions:4  contents: read # Default everything to read-only5 6on:7  workflow_dispatch:8    inputs:9      release-version:10        description: 'Release Version'11        required: true12        type: string13      upload:14        description: 'Upload binaries to the release page'15        required: true16        default: false17        type: boolean18 19  workflow_call:20    inputs:21      release-version:22        description: 'Release Version'23        required: true24        type: string25      upload:26        description: 'Upload binaries to the release page'27        required: true28        default: false29        type: boolean30    secrets:31      RELEASE_TASKS_USER_TOKEN:32        description: "Secret used to check user permissions."33        required: false34 35  pull_request:36    types:37      - opened38      - synchronize39      - reopened40      # When a PR is closed, we still start this workflow, but then skip41      # all the jobs, which makes it effectively a no-op.  The reason to42      # do this is that it allows us to take advantage of concurrency groups43      # to cancel in progress CI jobs whenever the PR is closed.44      - closed45    paths:46      - '.github/workflows/release-binaries-all.yml'47      - '.github/workflows/release-binaries.yml'48      - '.github/workflows/release-binaries-setup-stage/*'49      - '.github/workflows/release-binaries-save-stage/*'50      - 'clang/cmake/caches/Release.cmake'51 52concurrency:53  group: ${{ github.workflow }}-${{ github.event.pull_request.number || 'dispatch' }}54  cancel-in-progress: True55 56jobs:57  setup-variables:58    if: >-59      (github.event_name != 'pull_request' || github.event.action != 'closed')60    runs-on: ubuntu-24.0461    outputs:62      release-version: ${{ steps.vars.outputs.release-version }}63      upload: ${{ steps.vars.outputs.upload }}64    steps:65      - shell: bash66        id: vars67        run: |68          upload="${{ inputs.upload }}"69          release_version="${{ inputs.release-version }}"70          if [ "${{ github.event_name }}" = "pull_request" ]; then71            upload="false"72            release_version=""73          fi74          echo "release-version=$release_version" >> "$GITHUB_OUTPUT"75          echo "upload=$upload" >> "$GITHUB_OUTPUT"76 77  release-binaries-all:78    name: Build Release Binaries79    needs:80      - setup-variables81    permissions:82      contents: write # For release uploads83      id-token: write     # For artifact attestations84      attestations: write # For artifact attestations85    strategy:86      fail-fast: false87      matrix:88        # We use ubuntu-22.04 rather than the latest version to make the built89        # binaries more portable (eg functional aginast older glibc).90        runs-on:91          - ubuntu-22.0492          - ubuntu-22.04-arm93          - macos-1494 95    uses: ./.github/workflows/release-binaries.yml96    with:97      release-version: "${{ needs.setup-variables.outputs.release-version }}"98      upload: ${{ needs.setup-variables.outputs.upload == 'true'}}99      runs-on: "${{ matrix.runs-on }}"100    secrets:101      # This will be empty for pull_request events, but that's fine, because102      # the release-binaries workflow does not use this secret for the103      # pull_request event.104      RELEASE_TASKS_USER_TOKEN: ${{ secrets.RELEASE_TASKS_USER_TOKEN }}105