master
yml 115 lines 3.71 KB
Raw
1 name: CI
2
3 on:
4 push:
5 pull_request:
6
7 jobs:
8 rust:
9 name: Rust Checks
10 runs-on: ubuntu-latest
11 steps:
12 - uses: actions/checkout@v4
13 with:
14 fetch-depth: 2
15
16 - name: Install native deps
17 uses: awalsh128/cache-apt-pkgs-action@latest
18 with:
19 # https://tauri.app/start/prerequisites/
20 packages: libwebkit2gtk-4.1-dev build-essential curl wget file libxdo-dev libssl-dev libayatana-appindicator3-dev librsvg2-dev
21 version: 1.0
22
23 - name: Install Rust toolchain
24 uses: dtolnay/rust-toolchain@stable
25 with:
26 components: rustfmt, clippy
27
28 - name: Cache Rust dependencies
29 uses: Swatinem/rust-cache@v2
30
31 - name: Install Rust dependencies
32 run: cargo fetch
33
34 - name: Check formatting
35 run: cargo fmt --all -- --check
36
37 - name: Run clippy
38 run: cargo clippy -- -D warnings
39
40 - name: Run tests
41 run: cargo test
42
43 - name: Check if Cargo.toml version changed
44 id: cargo-version-check
45 if: github.ref == 'refs/heads/master'
46 run: |
47 git fetch origin
48 CURRENT_VERSION=$(grep -m 1 "version = " Cargo.toml | sed 's/version = //; s/"//g')
49 PREVIOUS_VERSION=$(git show HEAD~1:Cargo.toml | grep -m 1 "version = " | sed 's/version = //; s/"//g')
50
51 if [ "$CURRENT_VERSION" != "$PREVIOUS_VERSION" ]; then
52 echo "version_changed=true" >> $GITHUB_OUTPUT
53 echo "Version changed from $PREVIOUS_VERSION to $CURRENT_VERSION"
54 else
55 echo "version_changed=false" >> $GITHUB_OUTPUT
56 echo "Version unchanged: $CURRENT_VERSION"
57 fi
58
59 - name: Publish to crates.io
60 if: ${{ github.ref == 'refs/heads/master' && steps.cargo-version-check.outputs.version_changed == 'true' }}
61 run: cargo publish --token ${CARGO_REGISTRY_TOKEN}
62 env:
63 CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
64 bun:
65 name: Bun Checks
66 runs-on: ubuntu-latest
67 steps:
68 - uses: actions/checkout@v4
69 with:
70 fetch-depth: 2
71
72 - name: Setup Bun
73 uses: oven-sh/setup-bun@v1
74 with:
75 bun-version: latest
76
77 - name: Install Bun dependencies
78 run: bun install
79
80 - name: Run bun check
81 run: bun run check
82
83 - name: Check if package.json version changed
84 id: npm-version-check
85 if: github.ref == 'refs/heads/master'
86 run: |
87 git fetch origin
88 CURRENT_VERSION=$(grep -m 1 '"version":' package.json | sed 's/.*"version": "//; s/".*//')
89 PREVIOUS_VERSION=$(git show HEAD~1:package.json | grep -m 1 '"version":' | sed 's/.*"version": "//; s/".*//')
90
91 if [ "$CURRENT_VERSION" != "$PREVIOUS_VERSION" ]; then
92 echo "version_changed=true" >> $GITHUB_OUTPUT
93 echo "Version changed from $PREVIOUS_VERSION to $CURRENT_VERSION"
94 else
95 echo "version_changed=false" >> $GITHUB_OUTPUT
96 echo "Version unchanged: $CURRENT_VERSION"
97 fi
98
99 - name: Setup Node.js for npm publishing
100 if: ${{ github.ref == 'refs/heads/master' && steps.npm-version-check.outputs.version_changed == 'true' }}
101 uses: actions/setup-node@v3
102 with:
103 node-version: '23.x'
104 registry-url: 'https://registry.npmjs.org'
105
106 - name: Build package
107 if: ${{ github.ref == 'refs/heads/master' && steps.npm-version-check.outputs.version_changed == 'true' }}
108 run: bun run build
109
110 - name: Publish to npm
111 if: ${{ github.ref == 'refs/heads/master' && steps.npm-version-check.outputs.version_changed == 'true' }}
112 run: npm publish
113 env:
114 NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
115