11name : test
2- on :
3- - pull_request
4- defaults :
5- run :
6- shell : bash
2+ on : [ 'pull_request' ]
3+ env :
4+ LOG_LEVEL : notice
5+
76jobs :
7+
8+ # Test that packages depending on us still work
89 dependents :
10+ strategy :
11+ fail-fast : false
12+ matrix :
13+ dbimage :
14+ - postgres:13
15+ - postgres:12
16+ - postgres:11
17+ dependent :
18+ - postgres-kit
19+ - fluent-postgres-driver
20+ container : swift:5.3-focal
921 runs-on : ubuntu-latest
1022 services :
1123 psql-a :
1224 image : ${{ matrix.dbimage }}
13- env :
25+ env :
1426 POSTGRES_USER : vapor_username
1527 POSTGRES_DB : vapor_database
1628 POSTGRES_PASSWORD : vapor_password
1729 psql-b :
1830 image : ${{ matrix.dbimage }}
19- env :
31+ env :
2032 POSTGRES_USER : vapor_username
2133 POSTGRES_DB : vapor_database
2234 POSTGRES_PASSWORD : vapor_password
23- container : swift:5.2-bionic
24- strategy :
25- fail-fast : false
26- matrix :
27- dbimage :
28- - postgres:12
29- - postgres:11
30- dependent :
31- - postgres-kit
32- - fluent-postgres-driver
3335 steps :
3436 - name : Check out package
3537 uses : actions/checkout@v2
@@ -50,83 +52,83 @@ jobs:
5052 POSTGRES_HOSTNAME : psql-a
5153 POSTGRES_HOSTNAME_A : psql-a
5254 POSTGRES_HOSTNAME_B : psql-b
53- LOG_LEVEL : notice
55+
56+ # Run package tests on Linux Swift runners against supported PSQL versions
5457 linux :
5558 strategy :
5659 fail-fast : false
5760 matrix :
5861 dbimage :
62+ - postgres:13
5963 - postgres:12
6064 - postgres:11
61- runner :
62- # 5.2 Stable
63- - swift:5.2-xenial
64- - swift:5.2-bionic
65- # 5.2 Unstable
66- - swiftlang/ swift:nightly- 5.2-xenial
67- - swiftlang/ swift:nightly-5.2-bionic
68- # 5.3 Unstable
69- - swiftlang/swift:nightly-5.3-xenial
70- - swiftlang/swift:nightly-5.3-bionic
71- # Master Unsable
72- - swiftlang/swift:nightly-master-xenial
73- - swiftlang/swift:nightly-master-bionic
74- - swiftlang/swift:nightly-master-focal
75- - swiftlang/swift:nightly-master- centos8
76- - swiftlang/swift:nightly-master- amazonlinux2
77- container : ${{ matrix.runner }}
65+ dbauth :
66+ - trust
67+ - md5
68+ - scram-sha-256
69+ swiftver :
70+ - swift:5.2
71+ - swift:5.3
72+ - swiftlang/swift:nightly- 5.3
73+ - swiftlang/swift:nightly-master
74+ swiftos :
75+ - xenial
76+ - bionic
77+ - focal
78+ - centos7
79+ - centos8
80+ - amazonlinux2
81+ container : ${{ format('{0}-{1}', matrix.swiftver, matrix.swiftos) }}
7882 runs-on : ubuntu-latest
7983 services :
8084 psql :
8185 image : ${{ matrix.dbimage }}
82- env :
86+ env :
8387 POSTGRES_USER : vapor_username
8488 POSTGRES_DB : vapor_database
8589 POSTGRES_PASSWORD : vapor_password
90+ POSTGRES_HOST_AUTH_METHOD : ${{ matrix.authtype }}
8691 steps :
92+ - name : SPM is incompatible with CentOS 7
93+ if : ${{ matrix.swiftos == 'centos7' }}
94+ run : |
95+ yum install -y make libcurl-devel
96+ git clone https://github.com/git/git -bv2.28.0 --depth 1 && cd git
97+ make prefix=/usr -j all install NO_OPENSSL=1 NO_EXPAT=1 NO_TCLTK=1 NO_GETTEXT=1 NO_PERL=1
8798 - name : Check out code
8899 uses : actions/checkout@v2
89100 - name : Run tests with Thread Sanitizer
90101 run : swift test --enable-test-discovery --sanitize=thread
91- env :
92- POSTGRES_HOSTNAME : psql
93- LOG_LEVEL : notice
94- macOS :
102+ env : { POSTGRES_HOSTNAME: 'psql' }
103+
104+ # Run package tests on macOS against supported PSQL versions
105+ macos :
95106 strategy :
96107 fail-fast : false
97108 matrix :
98- include :
99- - formula : postgresql@11
100- datadir : postgresql@11
101- - formula : postgresql@12
102- datadir : postgres
109+ dbauth :
110+ - trust
111+ - md5
112+ - scram-sha-256
113+ formula :
114+ - postgresql@11
115+ - postgresql@12
103116 runs-on : macos-latest
104117 steps :
105118 - name : Select latest available Xcode
106119 uses : maxim-lobanov/setup-xcode@1.0
107- with :
108- xcode-version : latest
109- - name : Replace Postgres install and start server
110- run : |
111- brew uninstall --force postgresql php && rm -rf /usr/local/{etc,var}/{postgres,pg}*
112- brew install ${{ matrix.formula }} && brew link --force ${{ matrix.formula }}
113- initdb --locale=C -E UTF-8 $(brew --prefix)/var/${{ matrix.datadir }}
114- brew services start ${{ matrix.formula }}
115- - name : Wait for server to be ready
116- run : until pg_isready; do sleep 1; done
117- timeout-minutes : 2
118- - name : Setup users and databases for Postgres
120+ with : { 'xcode-version': latest }
121+ - name : Install Postgres, setup DB and auth, and wait for server start
119122 run : |
120- createuser --createdb --login vapor_username
121- for db in vapor_database_{a,b}; do
122- createdb -Ovapor_username $db && psql $db <<<"ALTER SCHEMA public OWNER TO vapor_username;"
123- done
123+ export PATH="/usr/local/opt/${{ matrix.formula }}/bin:$PATH" PGDATA=/tmp/vapor-postgres-test
124+ brew install ${{ matrix.formula }}
125+ pg_ctl initdb -o '--locale=C -E UTF-8'
126+ echo 'host all all samehost ${{ matrix.dbauth }}' >"${PGDATA}/pg_hba.conf"
127+ echo "POSTGRES_USERNAME=$(whoami)" >> $GITHUB_ENV
128+ pg_ctl start --wait
129+ timeout-minutes : 5
124130 - name : Checkout code
125131 uses : actions/checkout@v2
126132 - name : Run tests with Thread Sanitizer
127133 run : swift test --enable-test-discovery --sanitize=thread
128- env :
129- POSTGRES_DATABASE : vapor_database_a
130- POSTGRES_DATABASE_A : vapor_database_a
131- POSTGRES_DATABASE_B : vapor_database_b
132- LOG_LEVEL : notice
134+ env : { POSTGRES_DATABASE: 'postgres' }
0 commit comments