-
Notifications
You must be signed in to change notification settings - Fork 5
133 lines (102 loc) · 3.67 KB
/
build.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
name: build
on: [push, pull_request]
env:
CRATE: powerpack
jobs:
# ---------------------------------------------------------------------------
# Build
# ---------------------------------------------------------------------------
build:
runs-on: ubuntu-latest
strategy:
matrix:
toolchain: [stable, beta, nightly]
env:
RUSTFLAGS: --deny warnings
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.toolchain }}
components: clippy, rustfmt
- name: Rustfmt
run: cargo fmt -- --check
- name: Clippy
continue-on-error: ${{ matrix.toolchain == 'nightly' }}
run: cargo clippy --workspace --all-targets
- name: Test
run: cargo test --workspace
# ---------------------------------------------------------------------------
# Check version against tag
# ---------------------------------------------------------------------------
prepare:
needs: build
if: startsWith(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Calculate version from tag
id: version
run: echo "value=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
- name: Check tag against package versions
run: |
grep '^version = "${{ steps.version.outputs.value }}"$' Cargo.toml
grep '^version = "${{ steps.version.outputs.value }}"$' crates/cli/Cargo.toml
grep '^version = "${{ steps.version.outputs.value }}"$' crates/detach/Cargo.toml
grep '^version = "${{ steps.version.outputs.value }}"$' crates/env/Cargo.toml
# ---------------------------------------------------------------------------
# Publish
# ---------------------------------------------------------------------------
publish:
needs: prepare
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- name: Publish
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CRATES_IO_TOKEN }}
run: |
cargo publish --package powerpack-detach
cargo publish --package powerpack-env
mv src/main.compile_error.rs src/main.rs
cargo publish --package powerpack --no-verify --allow-dirty
mv src/main.rs src/main.compile_error.rs
cargo publish --package powerpack-cli
# ---------------------------------------------------------------------------
# Release
# ---------------------------------------------------------------------------
release:
needs: prepare
runs-on: macos-latest
strategy:
matrix:
target: [x86_64-apple-darwin, aarch64-apple-darwin]
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
target: ${{ matrix.target }}
- name: Calculate version from tag
id: version
run: echo "value=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
- name: Build
run: cargo build --package powerpack-cli --locked --release --target ${{ matrix.target }}
- name: Archive
id: archive
run: |
mkdir release
archive=$CRATE-${{ steps.version.outputs.value }}-${{ matrix.target }}.tar.gz
cp target/${{ matrix.target }}/release/$CRATE release/$CRATE
cp LICENSE* release
cp README.md release
cd release
tar cfz "../$archive" -- *
cd ..
rm -r release
echo "path=$archive" >> $GITHUB_OUTPUT
- uses: softprops/action-gh-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
files: ${{ steps.archive.outputs.path }}