Skip to content

meta: update changelog #438

meta: update changelog

meta: update changelog #438

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-24.04
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # 5.0.0
- 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@ea165f8d65b6e75b540449e92b4886f43607fa02 # 4.6.2
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-14
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # 5.0.0
- name: Add Rustup Target
run: rustup target add ${{ matrix.target }}
- name: Run Cargo Build
run: cargo build --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@ea165f8d65b6e75b540449e92b4886f43607fa02 # 4.6.2
with:
name: unsigned-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-14
steps:
- uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # 5.0.0
with:
pattern: unsigned-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@ea165f8d65b6e75b540449e92b4886f43607fa02 # 4.6.2
with:
name: unsigned-bin-macos-universal
path: sentry-cli-Darwin-universal
if-no-files-found: 'error'
sign-macos-binaries:
strategy:
fail-fast: false
matrix:
include:
- arch: universal
- arch: x86_64
- arch: arm64
needs: [macos, macos_universal]
name: Sign & Notarize macOS Binary (${{ matrix.arch }})
runs-on: ubuntu-24.04
env:
APPLE_CERT_PATH: /tmp/certs.p12
APPLE_API_KEY_PATH: /tmp/apple_key.json
steps:
- name: Checkout repository
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # 5.0.0
- name: Install `rcodesign`
run: |
curl -L https://github.com/indygreg/apple-platform-rs/releases/download/apple-codesign%2F0.29.0/apple-codesign-0.29.0-x86_64-unknown-linux-musl.tar.gz \
-o rcodesign.tar.gz
echo "dbe85cedd8ee4217b64e9a0e4c2aef92ab8bcaaa41f20bde99781ff02e600002 rcodesign.tar.gz" | sha256sum -c -
tar -xz --strip-components=1 -f rcodesign.tar.gz
mv rcodesign /usr/local/bin/rcodesign
rm rcodesign.tar.gz
- name: Decode Apple signing certificate and API key
env:
APPLE_CERT_DATA: ${{ secrets.APPLE_CERT_DATA }}
APPLE_API_KEY: ${{ secrets.APPLE_API_KEY }}
run: |
echo "$APPLE_CERT_DATA" | base64 --decode > ${{ env.APPLE_CERT_PATH }}
echo "$APPLE_API_KEY" | base64 --decode > ${{ env.APPLE_API_KEY_PATH }}
- name: Download unsigned binary
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # 5.0.0
with:
name: unsigned-bin-macos-${{ matrix.arch }}
- name: Sign binary
run: |
rcodesign sign \
--for-notarization \
--entitlements-xml-path entitlements.plist \
--p12-file ${{ env.APPLE_CERT_PATH }} \
--p12-password ${{ secrets.APPLE_CERT_PASSWORD }} \
sentry-cli-Darwin-${{ matrix.arch }}
- name: Zip signed binary
run: |
zip sentry-cli-Darwin-${{ matrix.arch }}.zip sentry-cli-Darwin-${{ matrix.arch }}
- name: Notarize binary
run: |
rcodesign notary-submit \
--api-key-file ${{ env.APPLE_API_KEY_PATH }} \
--wait \
sentry-cli-Darwin-${{ matrix.arch }}.zip
- name: Upload signed binary
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # 4.6.2
with:
name: artifact-bin-macos-${{ matrix.arch }}
path: sentry-cli-Darwin-${{ matrix.arch }}
if-no-files-found: 'error'
windows:
strategy:
fail-fast: false
matrix:
arch: [i686, x86_64, aarch64]
env:
TARGET: ${{ matrix.arch }}-pc-windows-msvc
name: Windows ${{ matrix.arch }}
runs-on: windows-2022
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # 5.0.0
# 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
- name: Add Rustup Target
run: rustup target add ${{ env.TARGET }}
- name: Run Cargo Build
run: cargo build --target=${{ env.TARGET }} --release --locked
- name: Rename Binary
run: mv target/${{ env.TARGET }}/release/sentry-cli.exe sentry-cli-Windows-${{ matrix.arch }}.exe
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # 4.6.2
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-24.04
needs: [linux, macos, macos_universal, windows]
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # 5.0.0
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # 4.4.0
with:
node-version: '20.10.0'
- name: Download compiled binaries
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # 5.0.0
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@ea165f8d65b6e75b540449e92b4886f43607fa02 # 4.6.2
with:
name: artifact-pkg-node
path: '*.tgz'
if-no-files-found: 'error'
npm-distributions:
name: 'Build NPM distributions'
runs-on: ubuntu-24.04
needs: [linux, sign-macos-binaries, windows]
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # 5.0.0
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # 4.4.0
with:
node-version: '20.10.0'
- uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # 5.0.0
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
mv binary-artifacts/sentry-cli-Windows-aarch64.exe npm-binary-distributions/win32-arm64/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@ea165f8d65b6e75b540449e92b4886f43607fa02 # 4.6.2
with:
name: artifact-npm-binary-distributions
path: npm-binary-distributions/*/*.tgz
if-no-files-found: 'error'
platform-specific-docker:
name: Build Docker Image (${{ matrix.platform }})
strategy:
matrix:
include:
- platform: amd64
runner: ubuntu-24.04
- platform: arm64
runner: ubuntu-24.04-arm
runs-on: ${{ matrix.runner }}
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # 5.0.0
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # 3.11.1
- name: Login to GitHub Container Registry
uses: docker/login-action@184bdaa0721073962dff0199f1fb9940f07167d1 # 3.5.0
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # 6.18.0
with:
context: .
push: true
platforms: linux/${{ matrix.platform }}
tags: ghcr.io/${{ github.repository }}:${{ github.sha }}-${{ matrix.platform }}
cache-from: type=gha,scope=${{ matrix.platform }}
cache-to: type=gha,mode=max,scope=${{ matrix.platform }}
multiarch-docker:
name: Create Multi-Architecture Docker Image
needs: platform-specific-docker
runs-on: ubuntu-24.04
permissions:
packages: write
steps:
- name: Login to GitHub Container Registry
uses: docker/login-action@184bdaa0721073962dff0199f1fb9940f07167d1 # 3.5.0
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Create multi-architecture image
run: |
docker buildx imagetools create -t ghcr.io/${{ github.repository }}:${{ github.sha }} \
ghcr.io/${{ github.repository }}:${{ github.sha }}-amd64 \
ghcr.io/${{ github.repository }}:${{ github.sha }}-arm64
merge:
name: Create Release Artifact
runs-on: ubuntu-24.04
needs: [linux, sign-macos-binaries, windows, npm-distributions, node]
steps:
- uses: actions/upload-artifact/merge@ea165f8d65b6e75b540449e92b4886f43607fa02 # 4.6.2
with:
# Craft expects release assets to be a single artifact named after the sha.
name: ${{ github.sha }}
pattern: artifact-*
delete-merged: true