1
1
name : test
2
- on : [ 'pull_request' ]
2
+ on :
3
+ pull_request : { branches: ['*'] }
4
+ push : { branches: ['main'] }
5
+
6
+ env :
7
+ LOG_LEVEL : debug
8
+ SWIFT_DETERMINISTIC_HASHING : 1
9
+ POSTGRES_HOSTNAME : ' psql-a'
10
+ POSTGRES_HOSTNAME_A : ' psql-a'
11
+ POSTGRES_HOSTNAME_B : ' psql-b'
12
+ POSTGRES_DB : ' test_database'
13
+ POSTGRES_DB_A : ' test_database'
14
+ POSTGRES_DB_B : ' test_database'
15
+ POSTGRES_USER : ' test_username'
16
+ POSTGRES_USER_A : ' test_username'
17
+ POSTGRES_USER_B : ' test_username'
18
+ POSTGRES_PASSWORD : ' test_password'
19
+ POSTGRES_PASSWORD_A : ' test_password'
20
+ POSTGRES_PASSWORD_B : ' test_password'
3
21
4
22
jobs :
23
+ # Baseline test run for code coverage stats
24
+ codecov :
25
+ strategy :
26
+ matrix : { dbimage: ['postgres:15'], dbauth: ['scram-sha-256'] }
27
+ runs-on : ubuntu-latest
28
+ container : swift:5.7-jammy
29
+ services :
30
+ psql-a :
31
+ image : ${{ matrix.dbimage }}
32
+ env :
33
+ POSTGRES_USER : ' test_username'
34
+ POSTGRES_DB : ' test_database'
35
+ POSTGRES_PASSWORD : ' test_password'
36
+ POSTGRES_HOST_AUTH_METHOD : ${{ matrix.dbauth }}
37
+ POSTGRES_INITDB_ARGS : --auth-host=${{ matrix.dbauth }}
38
+ psql-b :
39
+ image : ${{ matrix.dbimage }}
40
+ env :
41
+ POSTGRES_USER : ' test_username'
42
+ POSTGRES_DB : ' test_database'
43
+ POSTGRES_PASSWORD : ' test_password'
44
+ POSTGRES_HOST_AUTH_METHOD : ${{ matrix.dbauth }}
45
+ POSTGRES_INITDB_ARGS : --auth-host=${{ matrix.dbauth }}
46
+ steps :
47
+ - name : Save Postgres version and method to env
48
+ run : |
49
+ echo POSTGRES_VERSION='${{ matrix.dbimage }}' >> $GITHUB_ENV
50
+ echo POSTGRES_AUTH_METHOD='${{ matrix.dbauth }}' >> $GITHUB_ENV
51
+ - name : Check out package
52
+ uses : actions/checkout@v3
53
+ - name : Run local tests with coverage
54
+ run : swift test --enable-code-coverage
55
+ - name : Submit coverage report to Codecov.io
56
+
57
+ with :
58
+ cc_flags : ' unittests'
59
+ cc_env_vars : ' SWIFT_VERSION,SWIFT_PLATFORM,RUNNER_OS,RUNNER_ARCH,POSTGRES_VERSION,POSTGRES_AUTH_METHOD'
60
+ cc_fail_ci_if_error : true
61
+ cc_verbose : true
62
+ cc_dry_run : false
63
+
64
+ # Check for API breakage versus main
65
+ api-breakage :
66
+ if : github.event_name == 'pull_request'
67
+ runs-on : ubuntu-latest
68
+ container : swift:5.7-jammy
69
+ steps :
70
+ - name : Check out package
71
+ uses : actions/checkout@v3
72
+ with :
73
+ fetch-depth : 0
74
+ # https://github.com/actions/checkout/issues/766
75
+ - name : Mark the workspace as safe
76
+ run : git config --global --add safe.directory ${GITHUB_WORKSPACE}
77
+ - name : Check for API breaking changes
78
+ run : swift package diagnose-api-breaking-changes origin/main
79
+
5
80
linux-all :
81
+ if : github.event_name == 'pull_request'
6
82
strategy :
7
83
fail-fast : false
8
84
matrix :
9
- dbimage :
10
- - postgres:14
11
- - postgres:13
12
- - postgres:11
13
- dbauth :
14
- - trust
15
- - md5
16
- - scram-sha-256
17
- swiftver :
18
- - swift:5.4
19
- - swift:5.5
20
- - swift:5.6
21
- - swiftlang/swift:nightly-main
22
- swiftos :
23
- - focal
24
- container : ${{ format('{0}-{1}', matrix.swiftver, matrix.swiftos) }}
85
+ dbimage : ['postgres:15', 'postgres:14', 'postgres:11']
86
+ swiftver : [
87
+ ' swift:5.4-focal' , 'swift:5.5-focal', 'swift:5.6-focal',
88
+ ' swift:5.7-jammy' ,
89
+ ' swiftlang/swift:nightly-main-jammy'
90
+ ]
91
+ include : [
92
+ {dbimage: 'postgres:15', dbauth: 'scram-sha-256'},
93
+ {dbimage: 'postgres:14', dbauth: 'md5'},
94
+ {dbimage: 'postgres:11', dbauth: 'trust'}
95
+ ]
96
+ container : ${{ matrix.swiftver }}
25
97
runs-on : ubuntu-latest
26
- env :
27
- LOG_LEVEL : debug
28
- POSTGRES_DB_A : ' test_database'
29
- POSTGRES_DB_B : ' test_database'
30
- POSTGRES_USER_A : ' test_username'
31
- POSTGRES_USER_B : ' test_username'
32
- POSTGRES_PASSWORD_A : ' test_password'
33
- POSTGRES_PASSWORD_B : ' test_password'
34
- POSTGRES_HOSTNAME_A : ' psql-a'
35
- POSTGRES_HOSTNAME_B : ' psql-b'
36
- POSTGRES_HOST_AUTH_METHOD : ${{ matrix.dbauth }}
37
98
services :
38
99
psql-a :
39
100
image : ${{ matrix.dbimage }}
@@ -58,28 +119,26 @@ jobs:
58
119
run : swift test
59
120
60
121
macos-all :
122
+ if : github.event_name == 'pull_request'
61
123
strategy :
62
124
fail-fast : false
63
125
matrix :
64
- # Only test latest version and one auth method on macOS
65
- dbimage :
66
- - postgresql@14
67
- dbauth :
68
- - scram-sha-256
126
+ dbimage : ['postgresql@14'] # N.B.: As of this writing, Homebrew didn't have Postgres 15 yet
127
+ dbauth : ['scram-sha-256']
69
128
macos : ['macos-11', 'macos-12']
70
- xcode : ['latest-stable', 'latest']
71
- exclude : [{ macos: 'macos-11', xcode: 'latest' }]
129
+ xcode : ['latest-stable']
72
130
runs-on : ${{ matrix.macos }}
73
131
env :
74
132
LOG_LEVEL : debug
133
+ POSTGRES_HOSTNAME : 127.0.0.1
75
134
POSTGRES_HOSTNAME_A : 127.0.0.1
76
135
POSTGRES_HOSTNAME_B : 127.0.0.1
77
- POSTGRES_USER_A : ' test_username'
78
- POSTGRES_USER_B : ' test_username'
79
- POSTGRES_PASSWORD_A : ' test_password'
80
- POSTGRES_PASSWORD_B : ' test_password'
136
+ POSTGRES_DB : ' test_database_a'
81
137
POSTGRES_DB_A : ' test_database_a'
82
138
POSTGRES_DB_B : ' test_database_b'
139
+ POSTGRES_USER : ' test_username_a'
140
+ POSTGRES_USER_A : ' test_username_a'
141
+ POSTGRES_USER_B : ' test_username_b'
83
142
steps :
84
143
- name : Select latest available Xcode
85
144
uses : maxim-lobanov/setup-xcode@v1
0 commit comments