Lines Matching +full:github +full:- +full:upload +full:- +full:release
1 name: Release Binaries
6 release-version:
7 description: 'Release Version'
10 upload:
11 description: 'Upload binaries to the release page'
15 runs-on:
20 - ubuntu-22.04
21 - ubuntu-22.04-arm
22 - macos-13
23 - macos-14
27 release-version:
28 description: 'Release Version'
31 upload:
32 description: 'Upload binaries to the release page'
36 runs-on:
47 contents: read # Default everything to read-only
52 runs-on: ${{ inputs.runs-on }}
53 if: github.repository_owner == 'llvm'
55 release-version: ${{ steps.vars.outputs.release-version }}
57 upload: ${{ steps.vars.outputs.upload }}
58 target-cmake-flags: ${{ steps.vars.outputs.target-cmake-flags }}
60 build-flang: ${{ steps.vars.outputs.build-flang }}
61 enable-pgo: ${{ steps.vars.outputs.enable-pgo }}
62 release-binary-basename: ${{ steps.vars.outputs.release-binary-basename }}
63 release-binary-filename: ${{ steps.vars.outputs.release-binary-filename }}
64 build-runs-on: ${{ steps.vars.outputs.build-runs-on }}
65 test-runs-on: ${{ steps.vars.outputs.build-runs-on }}
68 # It's good practice to use setup-python, but this is also required on macos-14
69 # due to https://github.com/actions/runner-images/issues/10385
70 - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f
72 python-version: '3.12'
74 - name: Checkout LLVM
77 - name: Install Dependencies
80 pip install --require-hashes -r ./llvm/utils/git/requirements.txt
82 - name: Check Permissions
83 if: github.event_name != 'pull_request'
85 GITHUB_TOKEN: ${{ github.token }}
89 ./llvm/utils/release/./github-upload-release.py --token "$GITHUB_TOKEN" --user "$GITHUB_ACTOR" --user-token "$USER_TOKEN" check-permissions
91 - name: Collect Variables
94 # In order for the test-release.sh script to run correctly, the LLVM
96 # | X.Y.Z-rcN | ./rcN/llvm-project
97 # | X.Y.Z | ./final/llvm-project
99 # We also need to set divergent flags based on the release version:
100 # | X.Y.Z-rcN | -rc N -test-asserts
101 # | X.Y.Z | -final
103 trimmed=$(echo ${{ inputs.release-version }} | xargs)
104 if [ -n "$trimmed" ]; then
106 ref="llvmorg-$release_version"
108 release_version="${{ (github.event_name == 'pull_request' && format('PR{0}', github.event.pull_request.number)) || 'CI'}}-$GITHUB_SHA"
111 if [ -n "${{ inputs.upload }}" ]; then
112 upload="${{ inputs.upload }}"
114 upload="false"
116 echo "release-version=$release_version">> $GITHUB_OUTPUT
118 echo "upload=$upload" >> $GITHUB_OUTPUT
120 release_binary_basename="LLVM-$release_version-$RUNNER_OS-$RUNNER_ARCH"
121 echo "release-binary-basename=$release_binary_basename" >> $GITHUB_OUTPUT
122 echo "release-binary-filename=$release_binary_basename.tar.xz" >> $GITHUB_OUTPUT
124 target="$RUNNER_OS-$RUNNER_ARCH"
125 # The hendrikmuhs/ccache-action action does not support installing sccache
127 if [ "$target" = "Linux-ARM64" ]; then
134 echo "enable-pgo=false" >> $GITHUB_OUTPUT
135 target_cmake_flags="-DLLVM_RELEASE_ENABLE_PGO=OFF"
138 # See https://github.com/llvm/llvm-project/issues/99767
140 target_cmake_flags="$target_cmake_flags -DBOOTSTRAP_COMPILER_RT_ENABLE_IOS=OFF"
146 target_cmake_flags="$target_cmake_flags -DBOOTSTRAP_DARWIN_osx_ARCHS=$arches -DBOOTSTRAP_DARWIN_osx_BUILTIN_ARCHS=$arches"
153 target_cmake_flags="$target_cmake_flags -DLLVM_RELEASE_ENABLE_LTO=OFF"
156 echo "target-cmake-flags=$target_cmake_flags" >> $GITHUB_OUTPUT
157 echo "build-flang=$build_flang" >> $GITHUB_OUTPUT
158 case "${{ inputs.runs-on }}" in
159 ubuntu-22.04*)
160 build_runs_on="depot-${{ inputs.runs-on }}-16"
163 macos-13)
165 build_runs_on="${{ inputs.runs-on }}"
167 build_runs_on="macos-13-large"
169 test_runs_on="${{ inputs.runs-on }}"
171 macos-14)
173 build_runs_on="${{ inputs.runs-on }}"
175 build_runs_on="depot-macos-14"
177 test_runs_on="${{ inputs.runs-on }}"
180 test_runs_on="${{ inputs.runs-on }}"
184 echo "build-runs-on=$build_runs_on" >> $GITHUB_OUTPUT
185 echo "test-runs-on=$test_runs_on" >> $GITHUB_OUTPUT
187 build-release-package:
188 name: "Build Release Package"
190 if: github.repository_owner == 'llvm'
191 runs-on: ${{ needs.prepare.outputs.build-runs-on }}
194 - name: Checkout Actions
197 ref: ${{ (github.event_name == 'pull_request' && github.sha) || 'main' }}
198 sparse-checkout: |
199 .github/workflows/
200 sparse-checkout-cone-mode: false
212 - shell: bash
213 run: mv workflows ../workflows-main
215 - name: Checkout LLVM
220 - name: Copy main workflows
223 mv ../workflows-main .
225 - name: Setup Stage
226 id: setup-stage
227 uses: ./workflows-main/.github/workflows/release-binaries-setup-stage
229 - name: Setup sccache
230 uses: hendrikmuhs/ccache-action@ca3acd2731eef11f1572ccb126356c2f9298d35e # v1.2.9
232 # Default to 2G to workaround: https://github.com/hendrikmuhs/ccache-action/issues/174
233 max-size: 2G
234 key: ${{ needs.prepare.outputs.ccache }}-${{ runner.os }}-${{ runner.arch }}-release
237 - name: Configure
245 cmake -G Ninja -S llvm -B ${{ steps.setup-stage.outputs.build-prefix }}/build \
246 ${{ needs.prepare.outputs.target-cmake-flags }} \
247 -C clang/cmake/caches/Release.cmake \
248 -DBOOTSTRAP_LLVM_PARALLEL_LINK_JOBS=1 \
249 -DBOOTSTRAP_CPACK_PACKAGE_FILE_NAME="${{ needs.prepare.outputs.release-binary-basename }}" \
250 -DCMAKE_C_COMPILER_LAUNCHER=$CCACHE_BIN \
251 -DCMAKE_CXX_COMPILER_LAUNCHER=$CCACHE_BIN
252 - name: Build
255 ninja -v -C ${{ steps.setup-stage.outputs.build-prefix }}/build stage2-package
256 mv ${{ steps.setup-stage.outputs.build-prefix }}/build/tools/clang/stage2-bins/${{ needs.prepare.outputs.release-binary-filename }} .
258 - uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 #v4.3.0
260 name: ${{ runner.os }}-${{ runner.arch }}-release-binary
264 ${{ needs.prepare.outputs.release-binary-filename }}
267 - name: Clean Up Build Directory
270 find ${{ steps.setup-stage.outputs.build-prefix }}/build -iname ${{ needs.prepare.outputs.release-binary-filename }} -delete
271 rm -Rf ${{ steps.setup-stage.outputs.build-prefix }}/build/tools/clang/stage2-bins/_CPack_Packages
273 - name: Save Stage
274 uses: ./workflows-main/.github/workflows/release-binaries-save-stage
276 build-prefix: ${{ steps.setup-stage.outputs.build-prefix }}
278 upload-release-binaries:
279 name: "Upload Release Binaries"
281 - prepare
282 - build-release-package
283 if: >-
284 github.event_name != 'pull_request' &&
285 needs.prepare.outputs.upload == 'true'
286 runs-on: ubuntu-22.04
288 contents: write # For release uploads
289 id-token: write # For artifact attestations
293 - name: Checkout Release Scripts
296 sparse-checkout: |
297 llvm/utils/release/github-upload-release.py
299 sparse-checkout-cone-mode: false
301 - name: 'Download artifact'
302 uses: actions/download-artifact@6b208ae046db98c579e8a3aa621ab581ff575935 # v4.1.1
304 pattern: '*-release-binary'
305 merge-multiple: true
307 - name: Attest Build Provenance
309 uses: actions/attest-build-provenance@897ed5eab6ed058a474202017ada7f40bfa52940 # v1.0.0
311 subject-path: ${{ needs.prepare.outputs.release-binary-filename }}
313 - name: Rename attestation file
315 mv ${{ steps.provenance.outputs.bundle-path }} ${{ needs.prepare.outputs.release-binary-filename }}.jsonl
317 - name: Upload Build Provenance
318 uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 #v4.3.3
320 name: ${{ needs.prepare.outputs.release-binary-filename }}-attestation
321 path: ${{ needs.prepare.outputs.release-binary-filename }}.jsonl
323 - name: Install Python Requirements
325 pip install --require-hashes -r ./llvm/utils/git/requirements.txt
327 - name: Upload Release
330 ./llvm/utils/release/github-upload-release.py \
331 --token ${{ github.token }} \
332 --release ${{ needs.prepare.outputs.release-version }} \
333 upload \
334 --files ${{ needs.prepare.outputs.release-binary-filename }}*
336 test-release:
337 name: "Test Release"
339 - prepare
340 - build-release-package
341 if: >-
342 github.repository_owner == 'llvm'
343 runs-on: ${{ needs.prepare.outputs.test-runs-on }}
345 - name: Checkout Actions
348 ref: ${{ (github.event_name == 'pull_request' && github.sha) || 'main' }}
349 sparse-checkout: |
350 .github/workflows/
351 sparse-checkout-cone-mode: false
353 - name: Setup Stage
354 id: setup-stage
355 uses: ./workflows/.github/workflows/release-binaries-setup-stage
357 previous-artifact: build-release-package
359 - name: Run Tests
362 ninja -C ${{ steps.setup-stage.outputs.build-prefix }}/build stage2-check-all