From d32e9dc8dea1efe0c9defe03606c5adb3a04adbc Mon Sep 17 00:00:00 2001 From: Daniel Szoke Date: Tue, 29 Oct 2024 16:44:37 +0100 Subject: [PATCH 1/5] ci(windows): Check release binary during release build Fail the release build on Windows if `sentry-cli.exe --help` exits with nonzero status --- .github/workflows/build.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e45c3971c2..f36871072c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -133,6 +133,9 @@ jobs: command: build args: --release --locked + - name: Check release binary + run: .\target\release\sentry-cli.exe --help || exit 1 + - name: Rename Binary run: mv target/release/sentry-cli.exe sentry-cli-Windows-${{ matrix.arch }}.exe From 2e383b6f548d1362351943e5c534062a62e3ea95 Mon Sep 17 00:00:00 2001 From: Daniel Szoke Date: Tue, 29 Oct 2024 16:49:47 +0100 Subject: [PATCH 2/5] run on pr: --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f36871072c..423e033873 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,6 +1,7 @@ name: Release Build on: + pull_request: push: branches: - release/** From 77b78a005719b8c72e4044fd3879cabb853bb72c Mon Sep 17 00:00:00 2001 From: Daniel Szoke Date: Tue, 29 Oct 2024 16:53:32 +0100 Subject: [PATCH 3/5] Only run what is needed to check binary --- .github/workflows/build.yml | 239 ------------------------------------ 1 file changed, 239 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 423e033873..67eef21c6b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -7,103 +7,6 @@ on: - 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 @@ -136,145 +39,3 @@ jobs: - name: Check release binary run: .\target\release\sentry-cli.exe --help || exit 1 - - - 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: - name: 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: 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 From 43be0407afefeb49aaaec89097a56349096524fb Mon Sep 17 00:00:00 2001 From: Daniel Szoke Date: Tue, 29 Oct 2024 16:55:35 +0100 Subject: [PATCH 4/5] remove redundant `|| exit 1` --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 67eef21c6b..4751ec0698 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -38,4 +38,4 @@ jobs: args: --release --locked - name: Check release binary - run: .\target\release\sentry-cli.exe --help || exit 1 + run: .\target\release\sentry-cli.exe --help From 84ef9f03fe81b4736e7aeab95c591685abbf2cb4 Mon Sep 17 00:00:00 2001 From: Daniel Szoke Date: Tue, 29 Oct 2024 16:26:22 +0100 Subject: [PATCH 5/5] build(windows): Statically link CRT on Windows Statically link the CRT on Windows. This eliminates Sentry CLI's dependency on `VCRUNTIME140.dll`, allowing Sentry CLI to be run on a clean install of Windows, without requiring any external dependencies. Fixes #2193 Closes #2201 --- .cargo/config.toml | 2 ++ .gitignore | 1 - 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 .cargo/config.toml diff --git a/.cargo/config.toml b/.cargo/config.toml new file mode 100644 index 0000000000..35c67ad3d2 --- /dev/null +++ b/.cargo/config.toml @@ -0,0 +1,2 @@ +[target.'cfg(all(windows, target_env = "msvc"))'] +rustflags = ["-C", "target-feature=+crt-static"] diff --git a/.gitignore b/.gitignore index 123f2214ee..24b7b8ea84 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,5 @@ target .DS_Store -.cargo node_modules coverage dist