-
Notifications
You must be signed in to change notification settings - Fork 118
146 lines (132 loc) · 5.03 KB
/
integration_tests.yml
File metadata and controls
146 lines (132 loc) · 5.03 KB
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
name: IntegrationTests
# As per Checkov CKV2_GHA_1
permissions: read-all
on:
workflow_call:
inputs:
name:
type: string
description: "The name of the workflow used for the concurrency group."
required: true
# We pass the list of examples here, but we can't pass an array as argument
# Instead, we pass a String with a valid JSON array.
# The workaround is mentioned here https://github.com/orgs/community/discussions/11692
examples:
type: string
description: "The list of examples to run. Pass a String with a valid JSON array such as \"[ 'HelloWorld', 'APIGateway' ]\""
required: true
default: ""
examples_enabled:
type: boolean
description: "Boolean to enable the compilation of examples. Defaults to true."
default: true
archive_plugin_examples:
type: string
description: "The list of examples to run through the archive plugin test. Pass a String with a valid JSON array such as \"[ 'HelloWorld', 'APIGateway' ]\""
required: true
default: ""
archive_plugin_enabled:
type: boolean
description: "Boolean to enable the test of the archive plugin. Defaults to true."
default: true
check_foundation_enabled:
type: boolean
description: "Boolean to enable the check for Foundation dependency. Defaults to true."
default: true
matrix_linux_command:
type: string
description: "The command of the current Swift version linux matrix job to execute."
required: true
matrix_linux_swift_container_image:
type: string
# Note: we don't use Amazon Linux 2 here because zip is not installed by default.
description: "Container image for the matrix test jobs. Defaults to Swift 6.2"
default: "swift:6.2"
## We are cancelling previously triggered workflow runs
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}-${{ inputs.name }}
cancel-in-progress: true
jobs:
test-examples:
name: Test Examples/${{ matrix.examples }} on ${{ matrix.swift.image }}
if: ${{ inputs.examples_enabled }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
examples: ${{ fromJson(inputs.examples) }}
# We are using only one Swift version
swift:
- image: ${{ inputs.matrix_linux_swift_container_image }}
container:
image: ${{ matrix.swift.image }}
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
persist-credentials: false
- name: Cache SPM dependencies
uses: actions/cache@v5
with:
path: Examples/${{ matrix.examples }}/.build
key: spm-${{ runner.os }}-${{ matrix.examples }}-${{ hashFiles(format('Examples/{0}/Package.swift', matrix.examples)) }}
restore-keys: |
spm-${{ runner.os }}-${{ matrix.examples }}-
- name: Install dependencies
run: |
apt-get -qq update && apt-get -qq -y install libssl-dev
- name: Run matrix job
env:
COMMAND: ${{ inputs.matrix_linux_command }}
EXAMPLE: ${{ matrix.examples }}
run: |
.github/workflows/scripts/integration_tests.sh
test-archive-plugin:
name: Test archive plugin
if: ${{ inputs.archive_plugin_enabled }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
examples: ${{ fromJson(inputs.archive_plugin_examples) }}
# These must run on Ubuntu and not in a container, because the plugin uses docker
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
persist-credentials: false
- name: Cache SPM dependencies
uses: actions/cache@v5
with:
path: |
Examples/${{ matrix.examples }}/.build/checkouts
Examples/${{ matrix.examples }}/.build/repositories
key: spm-${{ runner.os }}-${{ matrix.examples }}-${{ hashFiles(format('Examples/{0}/Package.swift', matrix.examples)) }}
restore-keys: |
spm-${{ runner.os }}-${{ matrix.examples }}-
- name: Test the archive plugin
env:
EXAMPLE: ${{ matrix.examples }}
run: |
.github/workflows/scripts/check-archive-plugin.sh
check-foundation:
name: No dependencies on Foundation
if: ${{ inputs.check_foundation_enabled }}
runs-on: ubuntu-latest
container:
image: ${{ inputs.matrix_linux_swift_container_image }}
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
persist-credentials: false
- name: Cache SPM dependencies
uses: actions/cache@v5
with:
path: Examples/APIGatewayV2/.build
key: spm-foundation-${{ runner.os }}-${{ hashFiles('Examples/APIGatewayV2/Package.swift') }}
restore-keys: |
spm-foundation-${{ runner.os }}-
- name: Check for Foundation or ICU dependency
run: |
.github/workflows/scripts/check-link-foundation.sh