-
Notifications
You must be signed in to change notification settings - Fork 113
136 lines (125 loc) · 4.98 KB
/
integration_tests.yml
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
name: IntegrationTests
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
description: "Container image for the matrix job. Defaults to matching latest Swift 6.1 Amazon Linux 2 image."
default: "swiftlang/swift:nightly-6.1-amazonlinux2"
## 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.swift_version }}
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:
# GitHub checkout action has a dep on NodeJS 20 which is not running on Amazonlinux2
# workaround is to manually checkout the repository
# https://github.com/actions/checkout/issues/1487
- name: Manually Clone repository and checkout PR
env:
PR_NUMBER: ${{ github.event.pull_request.number }}
run: |
# Clone the repository
git clone https://github.com/${{ github.repository }}
cd ${{ github.event.repository.name }}
# Fetch the pull request
git fetch origin +refs/pull/$PR_NUMBER/merge:
# Checkout the pull request
git checkout -qf FETCH_HEAD
# - name: Checkout repository
# uses: actions/checkout@v4
# with:
# persist-credentials: false
- name: Mark the workspace as safe
working-directory: ${{ github.event.repository.name }} # until we can use action/checkout@v4
# https://github.com/actions/checkout/issues/766
run: git config --global --add safe.directory ${GITHUB_WORKSPACE}
- name: Run matrix job
working-directory: ${{ github.event.repository.name }} # until we can use action/checkout@v4
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) }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
persist-credentials: false
- name: Mark the workspace as safe
# https://github.com/actions/checkout/issues/766
run: git config --global --add safe.directory ${GITHUB_WORKSPACE}
- 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
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
persist-credentials: false
- name: Mark the workspace as safe
# https://github.com/actions/checkout/issues/766
run: git config --global --add safe.directory ${GITHUB_WORKSPACE}
- name: Check for Foundation or ICU dependency
run: |
.github/workflows/scripts/check-link-foundation.sh