music on atproto
plyr.fm
1name: check rust services
2
3on:
4 pull_request:
5 paths:
6 - "moderation/**"
7 - "transcoder/**"
8 - ".github/workflows/check-rust.yml"
9
10permissions:
11 contents: read
12
13jobs:
14 changes:
15 name: detect changes
16 runs-on: ubuntu-latest
17 outputs:
18 moderation: ${{ steps.filter.outputs.moderation }}
19 transcoder: ${{ steps.filter.outputs.transcoder }}
20 steps:
21 - uses: actions/checkout@v4
22 - uses: dorny/paths-filter@v3
23 id: filter
24 with:
25 filters: |
26 moderation:
27 - 'moderation/**'
28 - '.github/workflows/check-rust.yml'
29 transcoder:
30 - 'transcoder/**'
31 - '.github/workflows/check-rust.yml'
32
33 check:
34 name: cargo check
35 runs-on: ubuntu-latest
36 timeout-minutes: 15
37 needs: changes
38
39 strategy:
40 fail-fast: false
41 matrix:
42 include:
43 - service: moderation
44 changed: ${{ needs.changes.outputs.moderation }}
45 - service: transcoder
46 changed: ${{ needs.changes.outputs.transcoder }}
47
48 steps:
49 - uses: actions/checkout@v4
50 if: matrix.changed == 'true'
51
52 - name: install rust toolchain
53 if: matrix.changed == 'true'
54 uses: dtolnay/rust-toolchain@stable
55
56 - name: cache cargo
57 if: matrix.changed == 'true'
58 uses: Swatinem/rust-cache@v2
59 with:
60 workspaces: ${{ matrix.service }}
61
62 - name: cargo check
63 if: matrix.changed == 'true'
64 working-directory: ${{ matrix.service }}
65 run: cargo check --release
66
67 - name: skip (no changes)
68 if: matrix.changed != 'true'
69 run: echo "skipping ${{ matrix.service }} - no changes"
70
71 docker-build:
72 name: docker build
73 runs-on: ubuntu-latest
74 timeout-minutes: 10
75 needs: [changes, check]
76
77 strategy:
78 fail-fast: false
79 matrix:
80 include:
81 - service: moderation
82 changed: ${{ needs.changes.outputs.moderation }}
83 - service: transcoder
84 changed: ${{ needs.changes.outputs.transcoder }}
85
86 steps:
87 - uses: actions/checkout@v4
88 if: matrix.changed == 'true'
89
90 - name: build docker image
91 if: matrix.changed == 'true'
92 working-directory: ${{ matrix.service }}
93 run: docker build -t ${{ matrix.service }}:ci-test .
94
95 - name: skip (no changes)
96 if: matrix.changed != 'true'
97 run: echo "skipping ${{ matrix.service }} - no changes"