aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/.github/workflows/test.yml
blob: bed02ab32030a8f3fade3f9358c4b570a71786c8 (plain) (blame)
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
name: Test

on:
  push:
    paths-ignore:
      - '**.md'
  schedule:
    # Weekly, at 00:30 UTC on Friday (somewhat randomly chosen).
    - cron: '30 00 * * 5'
  workflow_dispatch:

permissions: {}

jobs:
  lint:
    name: Linting
    runs-on: ubuntu-slim
    permissions:
      security-events: write
    steps:
      - name: Checkout
        uses: actions/checkout@v7
        with:
          persist-credentials: false
      - name: Run zizmor
        uses: zizmorcore/zizmor-action@v0.7.1

  test:
    strategy:
      matrix:
        platform:
          - x86
          - x64
        os:
          - ubuntu-22.04
          - ubuntu-24.04
          - ubuntu-26.04
          - windows-2022
          - windows-2025
    runs-on: ${{ matrix.os }}
    name: |
      Test: ${{ matrix.os }} / ${{ matrix.platform }}
    steps:
      - name: Checkout
        uses: actions/checkout@v7
        with:
          persist-credentials: false
      - name: Clean up PATH
        uses: egor-tensin/cleanup-path@v5
        if: runner.os == 'Windows'
      - name: Set up Clang
        uses: $/
        with:
          platform: ${{ matrix.platform }}
          cc: 1
      - name: Build threads.exe
        uses: $/.github/actions/build-threads
      - name: Run threads.exe
        uses: $/.github/actions/run-threads
      - name: Check symlinks
        uses: $/.github/actions/check-cc
      - name: Check lld
        uses: $/.github/actions/check-lld

  test_versions:
    needs: test
    strategy:
      # A weak attempt to please Ubuntu servers:
      max-parallel: 4
      matrix:
        os:
          - ubuntu-22.04
          - ubuntu-24.04
          - ubuntu-26.04
        version: [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]
        exclude:
          - {os: ubuntu-24.04, version: 11}
          - {os: ubuntu-24.04, version: 12}
          - {os: ubuntu-24.04, version: 13}
          - {os: ubuntu-26.04, version: 11}
          - {os: ubuntu-26.04, version: 12}
          - {os: ubuntu-26.04, version: 13}
          - {os: ubuntu-26.04, version: 14}
          - {os: ubuntu-26.04, version: 15}
          - {os: ubuntu-26.04, version: 16}
    runs-on: ${{ matrix.os }}
    name: |
      Version: ${{ matrix.os }} / ${{ matrix.version }}
    steps:
      - name: Checkout
        uses: actions/checkout@v7
        with:
          persist-credentials: false
      - id: setup
        name: Set up Clang
        uses: $/
        with:
          version: ${{ matrix.version }}
          platform: ${{ matrix.platform }}
          cc: 1
      - name: Build threads.exe
        uses: $/.github/actions/build-threads
        with:
          binary: ${{ steps.setup.outputs.clangxx }}
      - name: Run threads.exe
        uses: $/.github/actions/run-threads
      - name: Check symlinks
        uses: $/.github/actions/check-cc
        with:
          version: ${{ matrix.version }}
      - name: Check lld
        uses: $/.github/actions/check-lld
        with:
          version: ${{ matrix.version }}

  release:
    if: github.ref_type == 'tag'
    name: Release
    runs-on: ubuntu-latest
    needs:
      - test
      - test_versions
    permissions:
      contents: write
    steps:
      - name: Checkout
        uses: actions/checkout@v7
        with:
          persist-credentials: false
      - name: Release
        uses: softprops/action-gh-release@v3