Skip to content

need merge-multiple to unwrap downloaded artifact directories #290

need merge-multiple to unwrap downloaded artifact directories

need merge-multiple to unwrap downloaded artifact directories #290

Workflow file for this run

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