updated ci, bumped version #2
Workflow file for this run
This file contains hidden or 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 | |
| on: | |
| push: | |
| tags: | |
| - 'v[0-9]+.[0-9]+.[0-9]+' | |
| env: | |
| CARGO_TERM_COLOR: always | |
| jobs: | |
| # Fetch contributor list via StackQL and upload as a workflow artifact so all | |
| # matrix build jobs can embed it into the binary at compile time. | |
| prepare: | |
| name: Prepare | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v6 | |
| - name: Pull github provider | |
| id: pull-github-provider | |
| uses: stackql/stackql-exec@v2 | |
| with: | |
| query: | | |
| REGISTRY PULL github | |
| is_command: true | |
| - name: Fetch contributors | |
| id: get-contributors | |
| uses: stackql/stackql-exec@v2 | |
| with: | |
| query_file_path: ci-scripts/get-contributors.iql | |
| query_output: csv | |
| - name: Save contributors CSV | |
| run: echo "${{ steps.get-contributors.outputs.stackql-query-results }}" > contributors.csv | |
| - name: Upload contributors artifact | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: contributors-csv | |
| path: contributors.csv | |
| build: | |
| name: Build (${{ matrix.target }}) | |
| needs: prepare | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - target: x86_64-unknown-linux-gnu | |
| os: ubuntu-latest | |
| artifact-name: stackql-deploy-linux-x86_64 | |
| archive: tar.gz | |
| use-cross: false | |
| - target: aarch64-unknown-linux-gnu | |
| os: ubuntu-latest | |
| artifact-name: stackql-deploy-linux-arm64 | |
| archive: tar.gz | |
| use-cross: true | |
| - target: x86_64-pc-windows-msvc | |
| os: windows-latest | |
| artifact-name: stackql-deploy-windows-x86_64 | |
| archive: zip | |
| use-cross: false | |
| - target: aarch64-apple-darwin | |
| os: macos-latest | |
| artifact-name: stackql-deploy-macos-arm64 | |
| archive: tar.gz | |
| use-cross: false | |
| - target: x86_64-apple-darwin | |
| os: macos-latest | |
| artifact-name: stackql-deploy-macos-x86_64 | |
| archive: tar.gz | |
| use-cross: false | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v6 | |
| - name: Download contributors CSV | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: contributors-csv | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| targets: ${{ matrix.target }} | |
| - name: Cache dependencies | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| key: ${{ matrix.target }} | |
| - name: Install cross | |
| if: matrix.use-cross == true | |
| run: cargo install cross --git https://github.com/cross-rs/cross | |
| - name: Build (cross) | |
| if: matrix.use-cross == true | |
| run: cross build --release --target ${{ matrix.target }} | |
| - name: Build (native) | |
| if: matrix.use-cross == false | |
| run: cargo build --release --target ${{ matrix.target }} | |
| # Strip Linux and macOS binaries to reduce size. | |
| # Cross-compiled ARM64 Linux is stripped by cross automatically. | |
| - name: Strip binary (native Linux / macOS) | |
| if: matrix.os != 'windows-latest' && matrix.use-cross == false | |
| run: strip target/${{ matrix.target }}/release/stackql-deploy | |
| - name: Package (tar.gz) | |
| if: matrix.archive == 'tar.gz' | |
| run: | | |
| tar -czf ${{ matrix.artifact-name }}.tar.gz \ | |
| -C target/${{ matrix.target }}/release stackql-deploy | |
| - name: Package (zip) — Windows | |
| if: matrix.archive == 'zip' | |
| shell: pwsh | |
| run: | | |
| Compress-Archive ` | |
| -Path target/${{ matrix.target }}/release/stackql-deploy.exe ` | |
| -DestinationPath ${{ matrix.artifact-name }}.zip | |
| - name: Upload binary artifact | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: ${{ matrix.artifact-name }} | |
| path: ${{ matrix.artifact-name }}.* | |
| if-no-files-found: error | |
| release: | |
| name: Create GitHub Release | |
| needs: build | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| steps: | |
| - name: Download all build artifacts | |
| uses: actions/download-artifact@v8 | |
| with: | |
| path: artifacts/ | |
| # exclude the contributors CSV — only binary archives needed | |
| pattern: stackql-deploy-* | |
| - name: Collect archives and generate SHA256SUMS | |
| run: | | |
| mkdir -p dist | |
| find artifacts/ -type f \( -name '*.tar.gz' -o -name '*.zip' \) \ | |
| -exec mv {} dist/ \; | |
| cd dist | |
| sha256sum * | tee SHA256SUMS | |
| - name: GH Release | |
| uses: softprops/action-gh-release@v2.6.0 | |
| with: | |
| name: ${{ github.ref_name }} | |
| tag_name: ${{ github.ref_name }} | |
| fail_on_unmatched_files: true | |
| files: | | |
| dist/*.tar.gz | |
| dist/*.zip | |
| dist/SHA256SUMS | |
| body: | | |
| ## stackql-deploy ${{ github.ref_name }} | |
| ### What's new | |
| This release ships the **Rust rewrite** of `stackql-deploy` — a complete | |
| ground-up reimplementation that replaces the original Python package. | |
| Key improvements over the Python version: | |
| - **Single self-contained binary** — no Python runtime, pip, or virtualenv required. | |
| Drop the binary on any supported platform and run. | |
| - **Faster startup and execution** — Rust compile-time optimisations mean commands | |
| that previously took seconds to initialise now start instantly. | |
| - **Smaller install footprint** — the stripped Linux x86_64 binary is under 10 MB; | |
| no transitive Python dependencies to manage. | |
| - **Statically linked on Linux** — works on any glibc ≥ 2.17 distro without | |
| installing extra system libraries. | |
| - **Native Windows and macOS ARM64 support** — pre-built for all five major targets | |
| (see assets below). | |
| ### Download | |
| | Platform | Architecture | Asset | | |
| |----------|--------------|-------| | |
| | Linux | x86_64 | `stackql-deploy-linux-x86_64.tar.gz` | | |
| | Linux | arm64 | `stackql-deploy-linux-arm64.tar.gz` | | |
| | macOS | Apple Silicon (arm64) | `stackql-deploy-macos-arm64.tar.gz` | | |
| | macOS | Intel (x86_64) | `stackql-deploy-macos-x86_64.tar.gz` | | |
| | Windows | x86_64 | `stackql-deploy-windows-x86_64.zip` | | |
| Each archive contains a single binary named `stackql-deploy` (or | |
| `stackql-deploy.exe` on Windows). Verify your download with `SHA256SUMS`. | |
| ### Migrating from the Python package | |
| If you are currently using the Python package on PyPI, please migrate to this | |
| release. The Python package is now deprecated and will no longer receive updates: | |
| https://pypi.org/project/stackql-deploy/ | |
| The CLI interface is fully compatible — existing `stackql_manifest.yml` files and | |
| project layouts work without modification. | |
| ### Install (quick) | |
| **Linux / macOS:** | |
| ```sh | |
| curl -sSL https://github.com/stackql/stackql-deploy/releases/download/${{ github.ref_name }}/stackql-deploy-linux-x86_64.tar.gz \ | |
| | tar -xz -C /usr/local/bin | |
| ``` | |
| **Windows (PowerShell):** | |
| ```powershell | |
| Invoke-WebRequest -Uri https://github.com/stackql/stackql-deploy/releases/download/${{ github.ref_name }}/stackql-deploy-windows-x86_64.zip ` | |
| -OutFile stackql-deploy.zip | |
| Expand-Archive stackql-deploy.zip -DestinationPath $env:LOCALAPPDATA\stackql-deploy | |
| ``` | |
| Or install via `cargo`: | |
| ```sh | |
| cargo install stackql-deploy | |
| ``` | |
| publish: | |
| name: Publish to crates.io | |
| needs: release | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v6 | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Publish to crates.io | |
| # --no-verify skips the redundant verification build that cargo publish | |
| # performs by default. That build fails because build.rs writes | |
| # contributors.csv into the package root (outside OUT_DIR) when the file | |
| # is absent — which it always is inside the clean tarball sandbox. | |
| # The binary has already been fully built and tested in the build job. | |
| run: cargo publish --no-verify --token ${{ secrets.CARGO_REGISTRY_TOKEN }} |