|
1 |
| -name: Swift Matrix |
| 1 | +name: Swift Linux Matrix |
2 | 2 |
|
3 | 3 | on:
|
4 | 4 | workflow_call:
|
5 | 5 | inputs:
|
6 |
| - swift_versions: |
| 6 | + exclude_swift_versions: |
7 | 7 | type: string
|
8 |
| - description: "Swift version list" |
9 |
| - default: ["5.8", "5.9", "5.10", "6.0", "nightly-main", "nightly-6.0"] |
10 |
| - required: true |
| 8 | + description: "Exclude Swift version list (JSON)" |
| 9 | + default: "[{\"swift_version\": \"\"}]" |
11 | 10 | os_versions:
|
12 | 11 | type: string
|
13 |
| - description: "OS version list" |
14 |
| - default: ["jammy"] |
15 |
| - required: true |
| 12 | + description: "OS version list (JSON)" |
| 13 | + default: "[\"jammy\"]" |
16 | 14 | swift_flags:
|
17 | 15 | type: string
|
18 | 16 | description: "Swift flangs for release version"
|
|
21 | 19 | type: string
|
22 | 20 | description: "Swift flangs for nightly version"
|
23 | 21 | default: ""
|
| 22 | + pre_build_command: |
| 23 | + type: string |
| 24 | + description: "Command to execute before building the Swift package" |
| 25 | + default: "" |
24 | 26 |
|
25 | 27 | jobs:
|
26 | 28 | build:
|
27 | 29 | name: Linux (${{ matrix.swift_version }} - ${{ matrix.os_version }})
|
28 | 30 | runs-on: ubuntu-latest
|
29 | 31 | strategy:
|
| 32 | + fail-fast: false |
30 | 33 | matrix:
|
31 |
| - swift_version: ${{ inputs.swift_versions }} |
32 |
| - os_version: ${{ inputs.os_versions }} |
33 |
| - container: ${{ (contains(matrix.swift_version, 'nightly') && 'swiftlang/swift') || 'swift' }}:${{ matrix.swift_version }} |
| 34 | + swift_version: ['5.8', '5.9', '5.10', '6.0', 'nightly-main', 'nightly-6.0'] |
| 35 | + os_version: ${{ fromJson(inputs.os_versions) }} |
| 36 | + exclude: |
| 37 | + - ${{ fromJson(inputs.exclude_swift_versions) }} |
| 38 | + container: |
| 39 | + image: ${{ (contains(matrix.swift_version, 'nightly') && 'swiftlang/swift') || 'swift' }}:${{ matrix.swift_version }}-${{ matrix.os_version }} |
34 | 40 | steps:
|
35 |
| - - uses: actions/checkout@v2 |
36 |
| - - run: swift test ${{ (contains(matrix.swift_version, 'nightly') && inputs.swift_nightly_flags) || inputs.swift_flags }} |
| 41 | + - name: Checkout repository |
| 42 | + uses: actions/checkout@v4 |
| 43 | + - name: Pre-build |
| 44 | + run: ${{ inputs.pre_build_command }} |
| 45 | + - name: Build Swift Package |
| 46 | + run: swift test ${{ (contains(matrix.swift_version, 'nightly') && inputs.swift_nightly_flags) || inputs.swift_flags }} |
0 commit comments