|
9 | 9 |
|
10 | 10 | pull_request: |
11 | 11 |
|
| 12 | +concurrency: |
| 13 | + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} |
| 14 | + cancel-in-progress: true |
| 15 | + |
12 | 16 | env: |
13 | 17 | RUSTFLAGS: -Dwarnings |
14 | 18 |
|
15 | 19 | jobs: |
16 | | - lint-each-os: |
17 | | - strategy: |
18 | | - fail-fast: false |
19 | | - matrix: |
20 | | - os: [ubuntu-24.04, macos-14, windows-2022] |
21 | | - feature-args: ['', '-Funstable-mobile-app'] |
22 | | - include: |
23 | | - - feature-args: '' |
24 | | - feature-suffix: '' |
25 | | - - feature-args: '-Funstable-mobile-app' |
26 | | - feature-suffix: ', mobile-app' |
27 | | - |
28 | | - name: Lint (${{ matrix.os }}${{ matrix.feature-suffix }}) |
29 | | - runs-on: ${{ matrix.os }} |
30 | | - steps: |
31 | | - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # 4.2.2 |
32 | | - |
33 | | - - name: Install Rust Toolchain |
34 | | - run: rustup toolchain install stable --profile minimal --component clippy --component rustfmt --no-self-update |
35 | | - |
36 | | - - uses: swatinem/rust-cache@98c8021b550208e191a6a3145459bfc9fb29c4c0 # 2.8.0 |
37 | | - |
38 | | - - name: Run Rustfmt |
39 | | - run: cargo fmt --all -- --check |
40 | | - |
41 | | - - name: Run Clippy |
42 | | - run: cargo clippy --workspace --tests ${{ matrix.feature-args }} |
43 | | - |
44 | 20 | lint: |
45 | | - needs: lint-each-os |
46 | | - runs-on: ubuntu-24.04 |
47 | | - if: always() # Run even if lint-each-os fails |
48 | 21 | name: Lint |
49 | | - steps: |
50 | | - - name: Check for lint failures |
51 | | - if: contains(needs.lint-each-os.result, 'failure') || contains(needs.lint-each-os.result, 'skipped') |
52 | | - run: | |
53 | | - echo "Required lint check failed. You need to fix the problem before merging." |
54 | | - exit 1 |
| 22 | + uses: ./.github/workflows/lint.yml |
55 | 23 |
|
56 | 24 | test: |
57 | | - strategy: |
58 | | - fail-fast: false |
59 | | - matrix: |
60 | | - os: [ubuntu-24.04, macos-14, windows-2022] |
61 | | - feature-args: ['', '-Funstable-mobile-app'] |
62 | | - include: |
63 | | - - feature-args: '' |
64 | | - feature-suffix: '' |
65 | | - - feature-args: '-Funstable-mobile-app' |
66 | | - feature-suffix: ', mobile-app' |
67 | | - |
68 | | - name: Test (${{ matrix.os }}${{ matrix.feature-suffix }}) |
69 | | - runs-on: ${{ matrix.os }} |
70 | | - |
71 | | - steps: |
72 | | - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # 4.2.2 |
73 | | - |
74 | | - - uses: swatinem/rust-cache@98c8021b550208e191a6a3145459bfc9fb29c4c0 # 2.8.0 |
75 | | - with: |
76 | | - key: ${{ github.job }} |
77 | | - |
78 | | - - name: Run Cargo Tests |
79 | | - run: cargo test --all ${{ matrix.feature-args }} |
| 25 | + name: Test |
| 26 | + uses: ./.github/workflows/test.yml |
80 | 27 |
|
81 | 28 | test_node: |
82 | | - strategy: |
83 | | - fail-fast: false |
84 | | - matrix: |
85 | | - node-version: [10.x, 12.x, 14.x, 16.x, 18.x, 20.x] |
| 29 | + name: Test Node |
| 30 | + uses: ./.github/workflows/test_node.yml |
86 | 31 |
|
87 | | - name: Test Node ${{ matrix.node-version }} |
88 | | - runs-on: ubuntu-24.04 |
| 32 | + test_swift: |
| 33 | + name: Test Swift |
| 34 | + uses: ./.github/workflows/swift-test.yml |
89 | 35 |
|
| 36 | + required: |
| 37 | + name: Check required jobs |
| 38 | + runs-on: ubuntu-24.04 |
| 39 | + needs: [lint, test, test_node, test_swift] |
| 40 | + if: always() |
90 | 41 | steps: |
91 | | - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # 4.2.2 |
92 | | - |
93 | | - - name: Use Node.js ${{ matrix.node-version }} |
94 | | - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # 4.4.0 |
95 | | - with: |
96 | | - node-version: ${{ matrix.node-version }} |
97 | | - |
98 | | - # We need to skip the fallback download because downloading will fail on release branches because the new version isn't available yet. |
99 | | - - run: SENTRYCLI_SKIP_DOWNLOAD=1 npm install |
100 | | - |
101 | | - # older node versions need an older nft |
102 | | - - run: SENTRYCLI_SKIP_DOWNLOAD=1 npm install @vercel/nft@0.22.1 |
103 | | - if: matrix.node-version == '10.x' || matrix.node-version == '12.x' |
104 | | - |
105 | | - - run: npm test |
| 42 | + - name: Check for failure |
| 43 | + if: ${{ needs.lint.result != 'success' || needs.test.result != 'success' || needs.test_node.result != 'success' || needs.test_swift.result != 'success' }} |
| 44 | + run: | |
| 45 | + echo "One or more jobs failed" |
| 46 | + exit 1 |
0 commit comments