Skip to content

Commit 495f331

Browse files
committed
Prepare Rust 2.0.0 release: metadata, docs, CI pipeline overhaul
Pre-release hygiene: - Delete ref-python-packages/ (context-only dir no longer needed) - Untrack contributors.csv (now generated in CI, added to .gitignore) - Move get-contributors.iql + .sh to ci-scripts/ Cargo.toml: - Bump version to 2.0.0 (Rust rewrite, +1 major from Python 1.9.4) - Add description, authors, license, homepage, repository, keywords, categories, readme, and rust-version MSRV (1.75) Docs: - README.md: rewrite as proper crates.io landing page covering cargo install, direct binary download, and quick-start usage - CHANGELOG.md: add initial entry for this Rust release with link to archived Python package history - LICENSE: add MIT licence file (matching Python package) GitHub Actions: - ci-rust.yml (new, replaces build.yml): fmt + clippy + test triggered on push to any non-main branch or PR to main when Rust files change - ci-website.yml (new, replaces deploy-website.yml): yarn build check triggered on push to non-main or PR to main when website/* changes; Netlify handles main-branch deployment outside GHA - release-build.yml (new): triggered on push to main when Rust files change; matrix cross-compilation for x86_64-linux, arm64-linux (via cross), x86_64-windows-msvc, arm64-macos, x86_64-macos; contributors fetched via stackql/stackql-exec@v2.2.3 and embedded at compile time; outputs packaged as tar.gz / zip artefacts - Update checkout@v4 → @v6 in deploy-action.yml and test-demo.yml https://claude.ai/code/session_01GzGtjMcwBXyVW3uKW4F2Ai
1 parent 3a28441 commit 495f331

392 files changed

Lines changed: 311 additions & 38811 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
1-
name: CI
1+
name: Rust CI
22

33
on:
44
push:
5-
branches: [main]
5+
branches-ignore: [main]
66
paths:
77
- 'src/**'
88
- 'Cargo.toml'
99
- 'Cargo.lock'
10-
- '.github/workflows/build.yml'
10+
- '.github/workflows/ci-rust.yml'
1111
pull_request:
1212
branches: [main]
1313
paths:
1414
- 'src/**'
1515
- 'Cargo.toml'
1616
- 'Cargo.lock'
17-
- '.github/workflows/build.yml'
17+
- '.github/workflows/ci-rust.yml'
1818

1919
env:
2020
CARGO_TERM_COLOR: always
@@ -25,7 +25,7 @@ jobs:
2525
runs-on: ubuntu-latest
2626
steps:
2727
- name: Checkout repository
28-
uses: actions/checkout@v4
28+
uses: actions/checkout@v6
2929

3030
- name: Install Rust toolchain
3131
uses: dtolnay/rust-toolchain@stable
@@ -35,12 +35,12 @@ jobs:
3535
- name: Check formatting
3636
run: cargo fmt --all -- --check
3737

38-
lint:
38+
clippy:
3939
name: Clippy
4040
runs-on: ubuntu-latest
4141
steps:
4242
- name: Checkout repository
43-
uses: actions/checkout@v4
43+
uses: actions/checkout@v6
4444

4545
- name: Install Rust toolchain
4646
uses: dtolnay/rust-toolchain@stable
@@ -58,7 +58,7 @@ jobs:
5858
runs-on: ubuntu-latest
5959
steps:
6060
- name: Checkout repository
61-
uses: actions/checkout@v4
61+
uses: actions/checkout@v6
6262

6363
- name: Install Rust toolchain
6464
uses: dtolnay/rust-toolchain@stable
@@ -68,26 +68,3 @@ jobs:
6868

6969
- name: Run tests
7070
run: cargo test
71-
72-
build:
73-
name: Build
74-
runs-on: ubuntu-latest
75-
needs: [fmt, lint, test]
76-
steps:
77-
- name: Checkout repository
78-
uses: actions/checkout@v4
79-
80-
- name: Install Rust toolchain
81-
uses: dtolnay/rust-toolchain@stable
82-
83-
- name: Cache dependencies
84-
uses: Swatinem/rust-cache@v2
85-
86-
- name: Build release binary
87-
run: cargo build --release
88-
89-
- name: Upload artifact
90-
uses: actions/upload-artifact@v4
91-
with:
92-
name: stackql-deploy-linux-x86_64
93-
path: target/release/stackql-deploy

.github/workflows/ci-website.yml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
name: Website CI
2+
3+
on:
4+
push:
5+
branches-ignore: [main]
6+
paths:
7+
- 'website/**'
8+
- '.github/workflows/ci-website.yml'
9+
pull_request:
10+
branches: [main]
11+
paths:
12+
- 'website/**'
13+
- '.github/workflows/ci-website.yml'
14+
15+
jobs:
16+
build:
17+
name: Yarn Build
18+
runs-on: ubuntu-latest
19+
20+
steps:
21+
- name: Checkout repository
22+
uses: actions/checkout@v6
23+
24+
- name: Setup Node.js
25+
uses: actions/setup-node@v4
26+
with:
27+
node-version: '20'
28+
cache: 'yarn'
29+
cache-dependency-path: website/yarn.lock
30+
31+
- name: Install dependencies
32+
working-directory: website
33+
run: yarn install --frozen-lockfile
34+
35+
- name: Build website
36+
working-directory: website
37+
run: yarn build

.github/workflows/deploy-action.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ jobs:
2626
echo "This is a placeholder step - actual implementation pending"
2727
2828
# - name: Checkout repository
29-
# uses: actions/checkout@v4
29+
# uses: actions/checkout@v6
3030
# with:
3131
# fetch-depth: 0
3232

.github/workflows/deploy-website.yml

Lines changed: 0 additions & 49 deletions
This file was deleted.
Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
name: Release Build
2+
3+
on:
4+
push:
5+
branches: [main]
6+
paths:
7+
- 'src/**'
8+
- 'Cargo.toml'
9+
- 'Cargo.lock'
10+
- '.github/workflows/release-build.yml'
11+
12+
env:
13+
CARGO_TERM_COLOR: always
14+
15+
jobs:
16+
# Fetch contributor list via StackQL and upload as a workflow artifact so all
17+
# matrix build jobs can embed it into the binary at compile time.
18+
prepare:
19+
name: Prepare
20+
runs-on: ubuntu-latest
21+
steps:
22+
- name: Checkout repository
23+
uses: actions/checkout@v6
24+
25+
- name: Fetch contributors
26+
id: get-contributors
27+
uses: stackql/stackql-exec@v2.2.3
28+
with:
29+
query_file_path: ci-scripts/get-contributors.iql
30+
query_output: csv
31+
32+
- name: Save contributors CSV
33+
run: echo "${{ steps.get-contributors.outputs.stackql-query-results }}" > contributors.csv
34+
35+
- name: Upload contributors artifact
36+
uses: actions/upload-artifact@v4
37+
with:
38+
name: contributors-csv
39+
path: contributors.csv
40+
41+
build:
42+
name: Build (${{ matrix.target }})
43+
needs: prepare
44+
strategy:
45+
fail-fast: false
46+
matrix:
47+
include:
48+
- target: x86_64-unknown-linux-gnu
49+
os: ubuntu-latest
50+
artifact-name: stackql-deploy-linux-x86_64
51+
archive: tar.gz
52+
use-cross: false
53+
54+
- target: aarch64-unknown-linux-gnu
55+
os: ubuntu-latest
56+
artifact-name: stackql-deploy-linux-arm64
57+
archive: tar.gz
58+
use-cross: true
59+
60+
- target: x86_64-pc-windows-msvc
61+
os: windows-latest
62+
artifact-name: stackql-deploy-windows-x86_64
63+
archive: zip
64+
use-cross: false
65+
66+
- target: aarch64-apple-darwin
67+
os: macos-latest
68+
artifact-name: stackql-deploy-macos-arm64
69+
archive: tar.gz
70+
use-cross: false
71+
72+
- target: x86_64-apple-darwin
73+
os: macos-13
74+
artifact-name: stackql-deploy-macos-x86_64
75+
archive: tar.gz
76+
use-cross: false
77+
78+
runs-on: ${{ matrix.os }}
79+
80+
steps:
81+
- name: Checkout repository
82+
uses: actions/checkout@v6
83+
84+
- name: Download contributors CSV
85+
uses: actions/download-artifact@v4
86+
with:
87+
name: contributors-csv
88+
89+
- name: Install Rust toolchain
90+
uses: dtolnay/rust-toolchain@stable
91+
with:
92+
targets: ${{ matrix.target }}
93+
94+
- name: Cache dependencies
95+
uses: Swatinem/rust-cache@v2
96+
with:
97+
key: ${{ matrix.target }}
98+
99+
- name: Install cross
100+
if: matrix.use-cross == true
101+
run: cargo install cross --git https://github.com/cross-rs/cross
102+
103+
- name: Build (cross)
104+
if: matrix.use-cross == true
105+
run: cross build --release --target ${{ matrix.target }}
106+
107+
- name: Build (native)
108+
if: matrix.use-cross == false
109+
run: cargo build --release --target ${{ matrix.target }}
110+
111+
# Strip Linux and macOS binaries to reduce size.
112+
# Cross-compiled ARM64 Linux is stripped by cross automatically.
113+
- name: Strip binary (native Linux / macOS)
114+
if: matrix.os != 'windows-latest' && matrix.use-cross == false
115+
run: strip target/${{ matrix.target }}/release/stackql-deploy
116+
117+
- name: Package (tar.gz)
118+
if: matrix.archive == 'tar.gz'
119+
run: |
120+
tar -czf ${{ matrix.artifact-name }}.tar.gz \
121+
-C target/${{ matrix.target }}/release stackql-deploy
122+
123+
- name: Package (zip) — Windows
124+
if: matrix.archive == 'zip'
125+
shell: pwsh
126+
run: |
127+
Compress-Archive `
128+
-Path target/${{ matrix.target }}/release/stackql-deploy.exe `
129+
-DestinationPath ${{ matrix.artifact-name }}.zip
130+
131+
- name: Upload binary artifact
132+
uses: actions/upload-artifact@v4
133+
with:
134+
name: ${{ matrix.artifact-name }}
135+
path: ${{ matrix.artifact-name }}.*
136+
if-no-files-found: error

.github/workflows/test-demo.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ jobs:
2323
echo "🚀 Testing Demos (placeholder)"
2424
echo "This is a placeholder step - actual implementation pending"
2525
# - name: Checkout repository
26-
# uses: actions/checkout@v4
26+
# uses: actions/checkout@v6
2727

2828
# - name: Install Rust toolchain
2929
# uses: dtolnay/rust-toolchain@stable

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@ stackql_history.txt
88
stackql.log
99
.env
1010
nohup.out
11+
contributors.csv

CHANGELOG.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Changelog
2+
3+
## 2.0.0 (2026-03-14)
4+
5+
### Initial Rust Release
6+
7+
This is the first release of **stackql-deploy** as a native Rust binary, replacing the Python implementation.
8+
9+
**Key changes from v1.x (Python):**
10+
- Complete rewrite in Rust — single static binary, no Python runtime required
11+
- Same CLI interface: `build`, `test`, `teardown`, `init`, `info`, `shell`, `upgrade`, `plan`
12+
- Multi-platform binaries: Linux x86_64/ARM64, macOS Apple Silicon/Intel, Windows x86_64
13+
- Available on [crates.io](https://crates.io/crates/stackql-deploy) via `cargo install stackql-deploy`
14+
15+
**The Python package (v1.x) is now archived.** See the [Python package changelog](https://github.com/stackql/stackql-deploy/blob/main/CHANGELOG.md) for the v1.x release history (last Python release: v1.9.4).

Cargo.toml

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,16 @@
11
[package]
22
name = "stackql-deploy"
3-
version = "0.1.0"
3+
version = "2.0.0"
44
edition = "2021"
5+
rust-version = "1.75"
6+
description = "Infrastructure-as-code framework for declarative cloud resource management using StackQL"
7+
authors = ["StackQL Studios <info@stackql.io>"]
8+
license = "MIT"
9+
homepage = "https://stackql.io"
10+
repository = "https://github.com/stackql/stackql-deploy"
11+
keywords = ["stackql", "infrastructure", "iac", "cloud", "devops"]
12+
categories = ["command-line-utilities", "development-tools"]
13+
readme = "README.md"
514

615
[dependencies]
716
clap = { version = "4.3", features = ["derive"] }

0 commit comments

Comments
 (0)