Skip to content

Commit b80eb0d

Browse files
chore: restore CI workflows
1 parent c5c6ac5 commit b80eb0d

2 files changed

Lines changed: 186 additions & 0 deletions

File tree

.github/workflows/ci.yml

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [ main, develop ]
6+
pull_request:
7+
branches: [ main ]
8+
9+
env:
10+
CARGO_TERM_COLOR: always
11+
12+
# Restrict permissions to minimum required
13+
permissions:
14+
contents: read
15+
16+
jobs:
17+
check:
18+
name: Check
19+
runs-on: ubuntu-latest
20+
container:
21+
image: mcr.microsoft.com/devcontainers/rust:1-bullseye
22+
permissions:
23+
contents: read
24+
steps:
25+
- uses: actions/checkout@v4
26+
- uses: dtolnay/rust-toolchain@stable
27+
- uses: Swatinem/rust-cache@v2
28+
- name: Check compilation
29+
run: cargo check --all-targets
30+
31+
test:
32+
name: Test Suite
33+
runs-on: ubuntu-latest
34+
container:
35+
image: mcr.microsoft.com/devcontainers/rust:1-bullseye
36+
permissions:
37+
contents: read
38+
steps:
39+
- uses: actions/checkout@v4
40+
- uses: dtolnay/rust-toolchain@stable
41+
- uses: Swatinem/rust-cache@v2
42+
- name: Run tests
43+
run: cargo test --lib --verbose
44+
45+
fmt:
46+
name: Rustfmt
47+
runs-on: ubuntu-latest
48+
container:
49+
image: mcr.microsoft.com/devcontainers/rust:1-bullseye
50+
permissions:
51+
contents: read
52+
steps:
53+
- uses: actions/checkout@v4
54+
- uses: dtolnay/rust-toolchain@stable
55+
with:
56+
components: rustfmt
57+
- name: Check formatting
58+
run: cargo fmt -- --check
59+
60+
clippy:
61+
name: Clippy
62+
runs-on: ubuntu-latest
63+
container:
64+
image: mcr.microsoft.com/devcontainers/rust:1-bullseye
65+
permissions:
66+
contents: read
67+
steps:
68+
- uses: actions/checkout@v4
69+
- uses: dtolnay/rust-toolchain@stable
70+
with:
71+
components: clippy
72+
- uses: Swatinem/rust-cache@v2
73+
- name: Run clippy
74+
run: cargo clippy --lib -- -D warnings
75+
76+
build:
77+
name: Build Release
78+
runs-on: ubuntu-latest
79+
container:
80+
image: mcr.microsoft.com/devcontainers/rust:1-bullseye
81+
permissions:
82+
contents: read
83+
steps:
84+
- uses: actions/checkout@v4
85+
- uses: dtolnay/rust-toolchain@stable
86+
- uses: Swatinem/rust-cache@v2
87+
- name: Build release
88+
run: cargo build --release --lib
89+
90+
grammar-sync:
91+
name: Grammar Sync
92+
runs-on: ubuntu-latest
93+
container:
94+
image: mcr.microsoft.com/devcontainers/rust:1-bullseye
95+
permissions:
96+
contents: read
97+
steps:
98+
- uses: actions/checkout@v4
99+
- uses: dtolnay/rust-toolchain@stable
100+
- uses: Swatinem/rust-cache@v2
101+
- name: Verify generated enums are current
102+
run: ./scripts/check-grammar-sync.sh

.github/workflows/release.yml

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
name: Release
2+
3+
on:
4+
push:
5+
tags:
6+
- "v*"
7+
8+
env:
9+
CARGO_TERM_COLOR: always
10+
11+
jobs:
12+
build:
13+
runs-on: ubuntu-latest
14+
container:
15+
image: mcr.microsoft.com/devcontainers/rust:1-bullseye
16+
steps:
17+
- name: Checkout
18+
uses: actions/checkout@v4
19+
20+
- name: Install Rust
21+
uses: dtolnay/rust-toolchain@stable
22+
with:
23+
components: clippy
24+
25+
- name: Cache cargo registry
26+
uses: actions/cache@v4
27+
with:
28+
path: |
29+
~/.cargo/registry
30+
~/.cargo/git
31+
key: cargo-release-registry-${{ runner.os }}-${{ hashFiles('**/Cargo.lock') }}
32+
33+
- name: Cache cargo target
34+
uses: actions/cache@v4
35+
with:
36+
path: target
37+
key: cargo-release-target-${{ runner.os }}-${{ hashFiles('**/Cargo.lock') }}
38+
39+
- name: Clippy (pedantic)
40+
run: cargo clippy --workspace --all-targets -- -D warnings -W clippy::pedantic
41+
42+
- name: Run tests
43+
run: cargo test --workspace --all-targets
44+
45+
- name: Build release artifacts
46+
run: cargo build --workspace --release
47+
48+
- name: Prepare artifact directory
49+
run: mkdir -p release-artifacts
50+
51+
- name: Generate release review
52+
run: ./scripts/generate-release-review.sh release-artifacts/RELEASE_REVIEW.md
53+
env:
54+
GITHUB_REF_NAME: ${{ github.ref_name }}
55+
56+
- name: Package artifacts
57+
run: |
58+
find target/release -maxdepth 1 -type f -executable -exec cp {} release-artifacts/ \;
59+
tar -czf release-artifacts/artefacts.tar.gz -C target/release .
60+
61+
- name: Upload build artifacts
62+
uses: actions/upload-artifact@v4
63+
with:
64+
name: singularity-analysis-artifacts
65+
path: release-artifacts
66+
67+
publish:
68+
runs-on: ubuntu-latest
69+
needs: build
70+
container:
71+
image: mcr.microsoft.com/devcontainers/rust:1-bullseye
72+
steps:
73+
- name: Download artifacts
74+
uses: actions/download-artifact@v4
75+
with:
76+
name: singularity-analysis-artifacts
77+
path: dist
78+
79+
- name: Create GitHub Release
80+
uses: softprops/action-gh-release@v2
81+
with:
82+
files: dist/**
83+
env:
84+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

0 commit comments

Comments
 (0)