Skip to content

Commit c7d210c

Browse files
committed
chore: v1.0.0 release changes
0 parents  commit c7d210c

392 files changed

Lines changed: 138928 additions & 0 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.

.cargo/config.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[alias]
2+
ck = "check --all-features --all-targets --locked"
3+
lint = "clippy --all-targets --all-features -- --deny warnings"

.config/nextest.toml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
[store]
2+
dir = "target/nextest"
3+
4+
[profile.default]
5+
fail-fast = false
6+
retries = 1
7+
slow-timeout = { period = "30s", terminate-after = 2 }
8+
status-level = "all"
9+
final-status-level = "slow"
10+
11+
[profile.stress]
12+
fail-fast = true
13+
retries = 0
14+
test-threads = 4
15+
slow-timeout = { period = "30s", terminate-after = 2 }
16+
status-level = "fail"
17+
final-status-level = "slow"

.editorconfig

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
root = true
2+
3+
[*]
4+
charset = utf-8
5+
end_of_line = lf
6+
insert_final_newline = true
7+
trim_trailing_whitespace = true
8+
9+
[*.rs]
10+
indent_style = space
11+
indent_size = 4
12+
13+
[*.toml]
14+
indent_style = space
15+
indent_size = 4
16+
17+
[*.{yml,yaml}]
18+
indent_style = space
19+
indent_size = 2
20+
21+
[*.md]
22+
trim_trailing_whitespace = false

.github/workflows/ci.yml

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
name: CI
2+
3+
permissions:
4+
contents: read
5+
6+
on:
7+
pull_request:
8+
push:
9+
branches: [main]
10+
11+
concurrency:
12+
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
13+
cancel-in-progress: true
14+
15+
env:
16+
RUST_BACKTRACE: 1
17+
18+
jobs:
19+
lint:
20+
name: Lint
21+
runs-on: ubuntu-latest
22+
steps:
23+
- uses: actions/checkout@v6.0.2
24+
# Pinned to a specific SHA (was dtolnay/rust-toolchain@master, 2026-04-15).
25+
- uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9
26+
with:
27+
toolchain: 1.94.1
28+
components: clippy, rustfmt
29+
- uses: Swatinem/rust-cache@v2.8.1
30+
- name: Check formatting
31+
run: cargo fmt --all --check
32+
- name: Clippy
33+
run: cargo clippy --all-targets --all-features -- -D warnings
34+
- name: Spell check
35+
uses: crate-ci/typos@v1.40.0
36+
37+
deny:
38+
name: Cargo Deny
39+
runs-on: ubuntu-latest
40+
steps:
41+
- uses: actions/checkout@v6.0.2
42+
- uses: taiki-e/install-action@v2
43+
with:
44+
tool: cargo-deny
45+
- run: cargo deny check
46+
47+
unused-deps:
48+
name: Unused Dependencies
49+
runs-on: ubuntu-latest
50+
steps:
51+
- uses: actions/checkout@v6.0.2
52+
# Pinned to a specific SHA (was dtolnay/rust-toolchain@master, 2026-04-15).
53+
- uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9
54+
with:
55+
toolchain: 1.94.1
56+
- uses: taiki-e/install-action@v2
57+
with:
58+
tool: cargo-shear
59+
- run: cargo shear
60+
61+
test:
62+
name: Test (macOS)
63+
runs-on: macos-latest
64+
steps:
65+
- uses: actions/checkout@v6.0.2
66+
# Pinned to a specific SHA (was dtolnay/rust-toolchain@master, 2026-04-15).
67+
- uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9
68+
with:
69+
toolchain: 1.94.1
70+
- uses: Swatinem/rust-cache@v2.8.1
71+
with:
72+
save-if: ${{ github.ref == 'refs/heads/main' }}
73+
- uses: taiki-e/install-action@v2
74+
with:
75+
tool: cargo-nextest
76+
- run: cargo nextest run --all-features
77+
78+
mvcc-stress:
79+
name: MVCC Stress
80+
runs-on: ubuntu-latest
81+
steps:
82+
- uses: actions/checkout@v6.0.2
83+
# Pinned to a specific SHA (was dtolnay/rust-toolchain@master, 2026-04-15).
84+
- uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9
85+
with:
86+
toolchain: 1.94.1
87+
- uses: Swatinem/rust-cache@v2.8.1
88+
- uses: taiki-e/install-action@v2
89+
with:
90+
tool: cargo-nextest
91+
- name: Run MVCC consistency 100x
92+
run: |
93+
for run in $(seq 1 100); do
94+
cargo nextest run --profile stress --test mvcc_consistency
95+
done
96+
97+
msrv:
98+
name: MSRV Check
99+
runs-on: ubuntu-latest
100+
steps:
101+
- uses: actions/checkout@v6.0.2
102+
# Pinned to a specific SHA (was dtolnay/rust-toolchain@master, 2026-04-15).
103+
- uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9
104+
with:
105+
toolchain: 1.94.1
106+
- uses: Swatinem/rust-cache@v2.8.1
107+
- run: cargo check --all-features --locked

.github/workflows/release.yml

Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
name: Release
2+
3+
on:
4+
push:
5+
# GitHub Actions tag filters are glob patterns (per the filter-pattern
6+
# cheat sheet), not regex. `v*.*.*` matches `v<digits>.<digits>.<digits>`
7+
# tags like `v1.0.0` without relying on the `+` quantifier, which is easy
8+
# to misread as a literal `+`.
9+
tags: ["v*.*.*"]
10+
11+
permissions:
12+
contents: write
13+
14+
jobs:
15+
verify:
16+
name: Verify Release Tag
17+
runs-on: ubuntu-latest
18+
steps:
19+
- uses: actions/checkout@v6.0.2
20+
- uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9
21+
with:
22+
toolchain: 1.94.1
23+
components: clippy, rustfmt
24+
- uses: Swatinem/rust-cache@v2.8.1
25+
- uses: taiki-e/install-action@v2
26+
with:
27+
tool: cargo-nextest
28+
- uses: taiki-e/install-action@v2
29+
with:
30+
tool: cargo-deny
31+
- uses: taiki-e/install-action@v2
32+
with:
33+
tool: cargo-shear
34+
- name: Check formatting
35+
run: cargo fmt --all --check
36+
- name: Clippy
37+
run: cargo clippy --all-targets --all-features -- -D warnings
38+
- name: Cargo Deny
39+
run: cargo deny check
40+
- name: Unused dependencies
41+
run: cargo shear
42+
- name: Nextest
43+
run: cargo nextest run --all-features
44+
45+
build:
46+
name: Build (${{ matrix.target }})
47+
needs: verify
48+
runs-on: ${{ matrix.os }}
49+
permissions:
50+
contents: write
51+
attestations: write
52+
id-token: write
53+
strategy:
54+
fail-fast: false
55+
matrix:
56+
# macOS-only by design for the initial public release scope.
57+
include:
58+
- target: x86_64-apple-darwin
59+
os: macos-latest
60+
- target: aarch64-apple-darwin
61+
os: macos-latest
62+
env:
63+
REF_NAME: ${{ github.ref_name }}
64+
TARGET: ${{ matrix.target }}
65+
steps:
66+
- uses: actions/checkout@v6.0.2
67+
# Pinned to a specific SHA (was dtolnay/rust-toolchain@master, 2026-04-15)
68+
# to avoid a supply-chain vector under `attestations: write` + `id-token: write`.
69+
- uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9
70+
with:
71+
toolchain: 1.94.1
72+
targets: ${{ matrix.target }}
73+
- uses: Swatinem/rust-cache@v2.8.1
74+
- name: Build
75+
shell: bash
76+
# `--locked` ensures the release binary is built against the exact
77+
# dependency graph captured in Cargo.lock; a tag build must not silently
78+
# resolve a different graph if a manifest changed.
79+
run: cargo build --release --locked --target "$TARGET" -p gather-step
80+
- name: Smoke test binary — version
81+
shell: bash
82+
run: "./target/${TARGET}/release/gather-step --version"
83+
- name: Smoke test binary — help
84+
shell: bash
85+
run: "./target/${TARGET}/release/gather-step --help"
86+
- name: Smoke test binary — index + status against embedded fixture
87+
shell: bash
88+
run: |
89+
set -euo pipefail
90+
fixture=$(mktemp -d)
91+
mkdir -p "$fixture/repos/smoke/src"
92+
cat > "$fixture/gather-step.config.yaml" <<'YAML'
93+
repos:
94+
- name: smoke
95+
path: repos/smoke
96+
indexing:
97+
workspace_concurrency: 1
98+
YAML
99+
cat > "$fixture/repos/smoke/package.json" <<'JSON'
100+
{ "name": "smoke", "dependencies": { "@nestjs/core": "^11.0.0" } }
101+
JSON
102+
cat > "$fixture/repos/smoke/src/smoke.ts" <<'TS'
103+
export function smokeFn(): number { return 1; }
104+
TS
105+
"./target/${TARGET}/release/gather-step" \
106+
--workspace "$fixture" --json index
107+
"./target/${TARGET}/release/gather-step" \
108+
--workspace "$fixture" --json status
109+
rm -rf "$fixture"
110+
- name: Package archive
111+
shell: bash
112+
run: |
113+
mkdir -p dist
114+
cp "target/${TARGET}/release/gather-step" "dist/gather-step-${TARGET}"
115+
tar -C dist -czf "dist/gather-step-${REF_NAME}-${TARGET}.tar.gz" "gather-step-${TARGET}"
116+
- name: Upload archive artifact
117+
uses: actions/upload-artifact@v7.0.1
118+
with:
119+
name: gather-step-${{ matrix.target }}
120+
path: dist/gather-step-${{ github.ref_name }}-${{ matrix.target }}.tar.gz
121+
# Attest the archive so users can verify the downloaded release bundle.
122+
- name: Attest archive provenance
123+
uses: actions/attest-build-provenance@v4.1.0
124+
with:
125+
subject-path: dist/gather-step-${{ github.ref_name }}-${{ matrix.target }}.tar.gz
126+
# Attest the binary directly so `gh attestation verify` works on the
127+
# extracted binary too, not only on the archive bundle.
128+
- name: Attest binary provenance
129+
uses: actions/attest-build-provenance@v4.1.0
130+
with:
131+
subject-path: dist/gather-step-${{ matrix.target }}
132+
133+
release:
134+
name: Publish Release
135+
needs: build
136+
runs-on: ubuntu-latest
137+
permissions:
138+
contents: write
139+
steps:
140+
- name: Download build artifacts
141+
uses: actions/download-artifact@v5
142+
with:
143+
path: dist
144+
merge-multiple: true
145+
- name: Publish GitHub release
146+
uses: softprops/action-gh-release@v2.5.0
147+
with:
148+
draft: true
149+
files: dist/*.tar.gz

.gitignore

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Rust
2+
/target
3+
*.rs.bk
4+
rust_out
5+
6+
# JavaScript / Astro / Starlight
7+
node_modules/
8+
dist/
9+
.astro/
10+
11+
# Editors
12+
.idea/
13+
.vscode/
14+
*.swp
15+
16+
# OS
17+
.DS_Store
18+
19+
# Local profile config (never commit)
20+
.gather-step.local.yaml
21+
22+
# Generated indexer state — test artifacts, CLI runs, etc.
23+
.gather-step/

0 commit comments

Comments
 (0)