Skip to content

Commit 955c8b4

Browse files
committed
ci: make workflow to verify samples, list all subdirs
1 parent df03e23 commit 955c8b4

File tree

2 files changed

+103
-29
lines changed

2 files changed

+103
-29
lines changed

.github/workflows/pull_request.yml

Lines changed: 8 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@ jobs:
3232
- uses: actions/checkout@v4
3333
- name: Prepare CI Environment
3434
uses: ./.github/actions/prepare_env
35-
- name: Gradle :SwiftKit:build
35+
- name: Gradle build
3636
run: ./gradlew build -x test
37-
- name: Gradle :SwiftKit:check
38-
run: ./gradlew :SwiftKit:check --debug
37+
- name: Gradle check
38+
run: ./gradlew check --debug
3939
- name: Gradle compile JMH benchmarks
4040
run: ./gradlew compileJmh --info
4141

@@ -63,29 +63,8 @@ jobs:
6363
run: "swift test"
6464

6565
verify-samples:
66-
name: Verify Sample ${{ matrix.sample_app }} (swift:${{ matrix.swift_version }} jdk:${{matrix.jdk_vendor}} os:${{ matrix.os_version }})
67-
runs-on: ubuntu-latest
68-
strategy:
69-
fail-fast: false
70-
matrix:
71-
swift_version: ['6.1.2']
72-
os_version: ['jammy']
73-
jdk_vendor: ['Corretto']
74-
sample_app: [
75-
'JavaDependencySampleApp',
76-
'JavaKitSampleApp',
77-
'JavaProbablyPrime',
78-
'JavaSieve',
79-
'SwiftAndJavaJarSampleLib',
80-
'SwiftKitSampleApp',
81-
]
82-
container:
83-
image: ${{ (contains(matrix.swift_version, 'nightly') && 'swiftlang/swift') || 'swift' }}:${{ matrix.swift_version }}-${{ matrix.os_version }}
84-
env:
85-
JAVA_HOME: "/usr/lib/jvm/default-jdk"
86-
steps:
87-
- uses: actions/checkout@v4
88-
- name: Prepare CI Environment
89-
uses: ./.github/actions/prepare_env
90-
- name: "Verify sample"
91-
run: .github/scripts/validate_sample.sh Samples/${{ matrix.sample_app }}
66+
uses: ./.github/workflows/verify_samples.yml
67+
with:
68+
swift_version: '6.1.2'
69+
# os_version: 'jammy'
70+
jdk_vendor: 'Corretto'

.github/workflows/verify_samples.yml

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
name: verify_samples
2+
3+
on:
4+
workflow_call:
5+
inputs:
6+
swift_version:
7+
type: string
8+
description: "Swift version to use"
9+
os_version:
10+
type: string
11+
description: "OS to use"
12+
default: "jammy"
13+
jdk_vendor:
14+
type: string
15+
description: "JDK vendor to use"
16+
default: "Corretto"
17+
jdk_version:
18+
type: string
19+
description: "JDK version to use"
20+
default: "24"
21+
22+
jobs:
23+
construct-samples-matrix:
24+
runs-on: ubuntu-latest
25+
outputs:
26+
matrix: ${{ steps.samples-matrix.outputs.matrix }}
27+
steps:
28+
- name: Checkout repository
29+
uses: actions/checkout@v4
30+
with:
31+
persist-credentials: false
32+
- id: samples-matrix
33+
run: |
34+
cat >> "$GITHUB_OUTPUT" << EOM
35+
samples-matrix="$(
36+
swift_version="${MATRIX_SWIFT_VERSION:="6.1.2"}"
37+
os_version="${MATRIX_OS_VERSION:=""}"
38+
jdk_vendor="${MATRIX_JDK_VENDOR:=""}"
39+
jdk_version="${MATRIX_JDK_VERSION:=""}"
40+
41+
matrix='{"config": []}'
42+
43+
44+
for sample_app in $(find Samples -maxdepth 1 -type d)
45+
do
46+
matrix=$(echo "${matrix}" | jq -c \
47+
--arg sample "$(basename ${sample_app})" \
48+
'.config[.config| length] |= . + { "name": "Verify sample: ${sample_app} (swift:${swift_version}, jdk:${jdk_vendor}@${jdk_version})", "sample_app": "${sample_app}", "swift_version": "${swift_version}", "os_version": "${os_version}", "jdk_vendor": "${jdk_vendor}", "jdk_version": "${jdk_version}" }'
49+
)
50+
done
51+
52+
echo "$matrix" | jq -c
53+
)"
54+
EOM
55+
env:
56+
MATRIX_SWIFT_VERSION: ${{ inputs.swift_version }}
57+
MATRIX_OS_VERSION: ${{ inputs.os_version }}
58+
MATRIX_JDK_VENDOR: ${{ inputs.jdk_vendor }}
59+
MATRIX_JDK_VERSION: ${{ inputs.jdk_version }}
60+
61+
verify-samples-linux:
62+
name: "Linux: ${{ matrix.config.name }}"
63+
needs: construct-samples-matrix
64+
runs-on: ubuntu-latest
65+
timeout-minutes: 30
66+
strategy:
67+
fail-fast: false
68+
matrix: ${{ fromJson(needs.construct-samples-matrix.outputs.samples-matrix) }}
69+
container:
70+
image: ${{ (contains(matrix.swift_version, 'nightly') && 'swiftlang/swift') || 'swift' }}:${{ matrix.swift_version }}-${{ matrix.os_version }}
71+
env:
72+
JAVA_HOME: "/usr/lib/jvm/default-jdk"
73+
steps:
74+
- uses: actions/checkout@v4
75+
- name: Prepare CI Environment
76+
uses: ./.github/actions/prepare_env
77+
- name: "Verify sample ${{ matrix.sample_app }}"
78+
run: .github/scripts/validate_sample.sh Samples/${{ matrix.sample_app }}
79+
80+
verify-samples-macos:
81+
name: "macOS: ${{ matrix.config.name }}"
82+
needs: construct-samples-matrix
83+
runs-on: [self-hosted, macos, sequoia, ARM64]
84+
timeout-minutes: 30
85+
strategy:
86+
fail-fast: false
87+
matrix: ${{ fromJson(needs.construct-samples-matrix.outputs.samples-matrix) }}
88+
env:
89+
JAVA_HOME: "/usr/lib/jvm/default-jdk"
90+
steps:
91+
- uses: actions/checkout@v4
92+
- name: Prepare CI Environment
93+
uses: ./.github/actions/prepare_env
94+
- name: "Verify sample ${{ matrix.sample_app }}"
95+
run: .github/scripts/validate_sample.sh Samples/${{ matrix.sample_app }}

0 commit comments

Comments
 (0)