need merge-multiple to unwrap downloaded artifact directories #290
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Release Build | |
on: | |
push: | |
# branches: | |
# - release/** | |
jobs: | |
linux: | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- arch: i686 | |
target: i686-unknown-linux-musl | |
container: i686-musl | |
- arch: x86_64 | |
target: x86_64-unknown-linux-musl | |
container: x86_64-musl | |
- arch: armv7 | |
target: armv7-unknown-linux-musleabi | |
container: armv7-musleabi | |
- arch: aarch64 | |
target: aarch64-unknown-linux-musl | |
container: aarch64-musl | |
name: Linux ${{ matrix.arch }} | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Build in Docker | |
run: scripts/build-in-docker.sh | |
env: | |
TARGET: ${{ matrix.target }} | |
DOCKER_TAG: ${{ matrix.container }} | |
- name: Rename Binary | |
run: mv target/*/release/sentry-cli sentry-cli-Linux-${{ matrix.arch }} | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: artifact-bin-linux-${{ matrix.arch }} | |
path: sentry-cli-Linux-${{ matrix.arch }} | |
if-no-files-found: 'error' | |
macos: | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- arch: x86_64 | |
target: x86_64-apple-darwin | |
- arch: arm64 | |
target: aarch64-apple-darwin | |
name: macOS ${{ matrix.arch }} | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions-rs/toolchain@16499b5e05bf2e26879000db0c1d13f7e13fa3af # pin@v1 | |
with: | |
toolchain: stable | |
target: ${{ matrix.target }} | |
profile: minimal | |
override: true | |
- name: Run Cargo Build | |
uses: actions-rs/cargo@844f36862e911db73fe0815f00a4a2602c279505 # pin@v1 | |
with: | |
command: build | |
args: --target=${{ matrix.target }} --release --locked | |
- name: Rename Binary | |
run: mv target/${{ matrix.target }}/release/sentry-cli sentry-cli-Darwin-${{ matrix.arch }} | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: artifact-bin-macos-${{ matrix.arch }} | |
path: sentry-cli-Darwin-${{ matrix.arch }} | |
if-no-files-found: 'error' | |
macos_universal: | |
needs: macos | |
name: macOS universal | |
runs-on: macos-latest | |
steps: | |
- uses: actions/download-artifact@v4 | |
with: | |
pattern: artifact-bin-macos-* | |
merge-multiple: true | |
- name: Link universal binary | |
run: lipo -create -output sentry-cli-Darwin-universal sentry-cli-Darwin-x86_64 sentry-cli-Darwin-arm64 | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: artifact-bin-macos-universal | |
path: sentry-cli-Darwin-universal | |
if-no-files-found: 'error' | |
windows: | |
strategy: | |
fail-fast: false | |
matrix: | |
arch: [i686, x86_64] | |
name: Windows ${{ matrix.arch }} | |
runs-on: windows-2019 | |
steps: | |
- uses: actions/checkout@v2 | |
# When rustup is updated, it tries to replace its binary, which on Windows is somehow locked. | |
# This can result in the CI failure, see: https://github.com/rust-lang/rustup/issues/3029 | |
- name: Disable rustup self-update | |
shell: bash | |
run: rustup set auto-self-update disable | |
- uses: actions-rs/toolchain@16499b5e05bf2e26879000db0c1d13f7e13fa3af # pin@v1 | |
with: | |
toolchain: stable-${{ matrix.arch }}-pc-windows-msvc | |
profile: minimal | |
override: true | |
- name: Run Cargo Build | |
uses: actions-rs/cargo@844f36862e911db73fe0815f00a4a2602c279505 # pin@v1 | |
with: | |
command: build | |
args: --release --locked | |
- name: Rename Binary | |
run: mv target/release/sentry-cli.exe sentry-cli-Windows-${{ matrix.arch }}.exe | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: artifact-bin-windows-${{ matrix.arch }} | |
path: sentry-cli-Windows-${{ matrix.arch }}.exe | |
if-no-files-found: 'error' | |
node: | |
name: NPM Package | |
runs-on: ubuntu-latest | |
needs: [linux, macos, macos_universal, windows] | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions/setup-node@v1 | |
with: | |
node-version: '20.10.0' | |
- name: Download compiled binaries | |
uses: actions/download-artifact@v4 | |
with: | |
pattern: artifact-bin-* | |
merge-multiple: true | |
- name: Calculate and store checksums | |
shell: bash | |
run: | | |
sha256sum sentry-cli-* | awk '{printf("%s=%s\n", $2, $1)}' > checksums.txt | |
cat checksums.txt | |
- run: npm pack | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: artifact-pkg-node | |
path: '*.tgz' | |
if-no-files-found: 'error' | |
python-base: | |
name: python (base) | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions-rs/toolchain@16499b5e05bf2e26879000db0c1d13f7e13fa3af # pin@v1 | |
with: | |
toolchain: stable | |
target: x86_64-unknown-linux-musl | |
profile: minimal | |
override: true | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: '3.11' | |
- run: python3 -m pip install build && python3 -m build | |
- uses: actions/upload-artifact@v4 | |
with: | |
# internal prefix means this won't be included in the merged artifact for craft | |
name: internal-artifact-python-base | |
path: dist/* | |
if-no-files-found: 'error' | |
python: | |
name: python | |
runs-on: ubuntu-latest | |
needs: [linux, macos, macos_universal, windows, python-base] | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: '3.11' | |
- uses: actions/download-artifact@v4 | |
with: | |
pattern: artifact-bin-* | |
merge-multiple: true | |
path: binaries | |
- uses: actions/download-artifact@v4 | |
with: | |
name: internal-artifact-python-base | |
merge-multiple: true | |
path: python-base | |
- run: scripts/wheels --binaries binaries --base python-base --dest dist | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: artifact-pkg-python | |
path: dist/* | |
if-no-files-found: 'error' | |
npm-distributions: | |
name: 'Build NPM distributions' | |
runs-on: ubuntu-latest | |
needs: [linux, macos, macos_universal, windows] | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: '20.10.0' | |
- uses: actions/download-artifact@v4 | |
with: | |
pattern: artifact-bin-* | |
merge-multiple: true | |
path: binary-artifacts | |
- name: Move binaries into distribution packages | |
run: | | |
mv binary-artifacts/sentry-cli-Darwin-universal npm-binary-distributions/darwin/bin/sentry-cli | |
mv binary-artifacts/sentry-cli-Linux-armv7 npm-binary-distributions/linux-arm/bin/sentry-cli | |
mv binary-artifacts/sentry-cli-Linux-aarch64 npm-binary-distributions/linux-arm64/bin/sentry-cli | |
mv binary-artifacts/sentry-cli-Linux-i686 npm-binary-distributions/linux-i686/bin/sentry-cli | |
mv binary-artifacts/sentry-cli-Linux-x86_64 npm-binary-distributions/linux-x64/bin/sentry-cli | |
mv binary-artifacts/sentry-cli-Windows-i686.exe npm-binary-distributions/win32-i686/bin/sentry-cli.exe | |
mv binary-artifacts/sentry-cli-Windows-x86_64.exe npm-binary-distributions/win32-x64/bin/sentry-cli.exe | |
- name: Remove binary placeholders | |
run: rm -rf npm-binary-distributions/*/bin/.gitkeep | |
- name: Make Linux binaries executable | |
run: chmod +x npm-binary-distributions/*/bin/sentry-cli | |
- name: Package distribution packages | |
run: | | |
for dir in npm-binary-distributions/*; do | |
cd $dir | |
npm pack | |
cd - | |
done | |
- name: Upload packaged npm binary distributions | |
uses: actions/upload-artifact@v4 | |
with: | |
name: artifact-npm-binary-distributions | |
path: npm-binary-distributions/*/*.tgz | |
if-no-files-found: 'error' | |
merge: | |
name: Create Release Artifact | |
runs-on: ubuntu-latest | |
needs: [linux, macos, macos_universal, windows, npm-distributions, node, python] | |
steps: | |
- uses: actions/upload-artifact/merge@v4 | |
with: | |
# Craft expects release assets to be a single artifact named after the sha. | |
name: ${{ github.sha }} | |
pattern: artifact-* | |
# delete-merged: true |