1- name : Test
2-
3- on : [push, pull_request]
1+ name : ' test'
2+ on :
3+ pull_request :
4+ push :
5+ # on:
6+ # pull_request:
7+ # paths: ['**.go', 'go.mod', '.github/workflows/*']
8+ # push:
9+ # branches: ['main']
410
511jobs :
612 staticcheck :
@@ -12,183 +18,23 @@ jobs:
1218 with : {version: '2025.1.1'}
1319
1420 test :
15- runs-on : ubuntu-latest
21+ runs-on : ' ubuntu-latest'
1622 strategy :
1723 fail-fast : false
1824 matrix :
19- postgres : ['17', '16', '15', '14']
20- go : ['1.25', '1.18']
25+ # pg: ['14', '15', '16', '17']
26+ # go: ['1.18', '1.25']
27+ pg : ['17']
28+ go : ['1.25']
2129 steps :
22- - name : setup postgres pre-reqs
23- run : |
24- mkdir init
25- cat <<CONF > init/root.crt
26- -----BEGIN CERTIFICATE-----
27- MIIEBjCCAu6gAwIBAgIJAPizR+OD14YnMA0GCSqGSIb3DQEBCwUAMF4xCzAJBgNV
28- BAYTAlVTMQ8wDQYDVQQIDAZOZXZhZGExEjAQBgNVBAcMCUxhcyBWZWdhczEaMBgG
29- A1UECgwRZ2l0aHViLmNvbS9saWIvcHExDjAMBgNVBAMMBXBxIENBMB4XDTIxMDkw
30- MjAxNTUwMloXDTMxMDkwMzAxNTUwMlowXjELMAkGA1UEBhMCVVMxDzANBgNVBAgM
31- Bk5ldmFkYTESMBAGA1UEBwwJTGFzIFZlZ2FzMRowGAYDVQQKDBFnaXRodWIuY29t
32- L2xpYi9wcTEOMAwGA1UEAwwFcHEgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
33- ggEKAoIBAQDb9d6sjdU6GdibGrXRMOHREH3MRUS8T4TFqGgPEGVDP/V5bAZlBSGP
34- AN0o9DTyVLcbQpBt8zMTw9KeIzIIe5NIVkSmA16lw/YckGhOM+kZIkiDuE6qt5Ia
35- OQCRMdXkZ8ejG/JUu+rHU8FJZL8DE+jyYherzdjkeVAQ7JfzxAwW2Dl7T/47g337
36- Pwmf17AEb8ibSqmXyUN7R5NhJQs+hvaYdNagzdx91E1H+qlyBvmiNeasUQljLvZ+
37- Y8wAuU79neA+d09O4PBiYwV17rSP6SZCeGE3oLZviL/0KM9Xig88oB+2FmvQ6Zxa
38- L7SoBlqS+5pBZwpH7eee/wCIKAnJtMAJAgMBAAGjgcYwgcMwDwYDVR0TAQH/BAUw
39- AwEB/zAdBgNVHQ4EFgQUfIXEczahbcM2cFrwclJF7GbdajkwgZAGA1UdIwSBiDCB
40- hYAUfIXEczahbcM2cFrwclJF7GbdajmhYqRgMF4xCzAJBgNVBAYTAlVTMQ8wDQYD
41- VQQIDAZOZXZhZGExEjAQBgNVBAcMCUxhcyBWZWdhczEaMBgGA1UECgwRZ2l0aHVi
42- LmNvbS9saWIvcHExDjAMBgNVBAMMBXBxIENBggkA+LNH44PXhicwDQYJKoZIhvcN
43- AQELBQADggEBABFyGgSz2mHVJqYgX1Y+7P+MfKt83cV2uYDGYvXrLG2OGiCilVul
44- oTBG+8omIMSHOsQZvWMpA5H0tnnlQHrKpKpUyKkSL+Wv5GL0UtBmHX7mVRiaK2l4
45- q2BjRaQUitp/FH4NSdXtVrMME5T1JBBZHsQkNL3cNRzRKwY/Vj5UGEDxDS7lILUC
46- e01L4oaK0iKQn4beALU+TvKoAHdPvoxpPpnhkF5ss9HmdcvRktJrKZemDJZswZ7/
47- +omx8ZPIYYUH5VJJYYE88S7guAt+ZaKIUlel/t6xPbo2ZySFSg9u1uB99n+jTo3L
48- 1rAxFnN3FCX2jBqgP29xMVmisaN5k04UmyI=
49- -----END CERTIFICATE-----
50- CONF
51- cat <<CONF > init/server.crt
52- -----BEGIN CERTIFICATE-----
53- MIIDqzCCApOgAwIBAgIJAPiewLrOyYipMA0GCSqGSIb3DQEBCwUAMF4xCzAJBgNV
54- BAYTAlVTMQ8wDQYDVQQIDAZOZXZhZGExEjAQBgNVBAcMCUxhcyBWZWdhczEaMBgG
55- A1UECgwRZ2l0aHViLmNvbS9saWIvcHExDjAMBgNVBAMMBXBxIENBMB4XDTIxMDkw
56- MjAxNTUwMloXDTMxMDkwMzAxNTUwMlowTjELMAkGA1UEBhMCVVMxDzANBgNVBAgM
57- Bk5ldmFkYTESMBAGA1UEBwwJTGFzIFZlZ2FzMRowGAYDVQQKDBFnaXRodWIuY29t
58- L2xpYi9wcTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKf6H4UzmANN
59- QiQJe92Mf3ETMYmpZKNNO9DPEHyNLIkag+XwMrBTdcCK0mLvsNCYpXuBN6703KCd
60- WAFOeMmj7gOsWtvjt5Xm6bRHLgegekXzcG/jDwq/wyzeDzr/YkITuIlG44Lf9lhY
61- FLwiHlHOWHnwrZaEh6aU//02aQkzyX5INeXl/3TZm2G2eIH6AOxOKOU27MUsyVSQ
62- 5DE+SDKGcRP4bElueeQWvxAXNMZYb7sVSDdfHI3zr32K4k/tC8x0fZJ5XN/dvl4t
63- 4N4MrYlmDO5XOrb/gQH1H4iu6+5EMDfZYab4fkThnNFdfFqu4/8Scv7KZ8mWqpKM
64- fGAjEPctQi0CAwEAAaN8MHowHQYDVR0OBBYEFENExPbmDyFB2AJUdbMvVyhlNPD5
65- MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgWgMBMGA1UdEQQMMAqCCHBvc3RncmVzMCwG
66- CWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTANBgkq
67- hkiG9w0BAQsFAAOCAQEAMRVbV8RiEsmp9HAtnVCZmRXMIbgPGrqjeSwk586s4K8v
68- BSqNCqxv6s5GfCRmDYiqSqeuCVDtUJS1HsTmbxVV7Ke71WMo+xHR1ICGKOa8WGCb
69- TGsuicG5QZXWaxeMOg4s0qpKmKko0d1aErdVsanU5dkrVS7D6729Ffnzu4lwApk6
70- invAB67p8u7sojwqRq5ce0vRaG+YFylTrWomF9kauEb8gKbQ9Xc7QfX+h+UH/mq9
71- Nvdj8LOHp6/82bZdnsYUOtV4lS1IA/qzeXpqBphxqfWabD1yLtkyJyImZKq8uIPp
72- 0CG4jhObPdWcCkXD6bg3QK3mhwlC79OtFgxWmldCRQ==
73- -----END CERTIFICATE-----
74- CONF
75- cat <<CONF > init/server.key
76- -----BEGIN PRIVATE KEY-----
77- MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCn+h+FM5gDTUIk
78- CXvdjH9xEzGJqWSjTTvQzxB8jSyJGoPl8DKwU3XAitJi77DQmKV7gTeu9NygnVgB
79- TnjJo+4DrFrb47eV5um0Ry4HoHpF83Bv4w8Kv8Ms3g86/2JCE7iJRuOC3/ZYWBS8
80- Ih5Rzlh58K2WhIemlP/9NmkJM8l+SDXl5f902ZthtniB+gDsTijlNuzFLMlUkOQx
81- PkgyhnET+GxJbnnkFr8QFzTGWG+7FUg3XxyN8699iuJP7QvMdH2SeVzf3b5eLeDe
82- DK2JZgzuVzq2/4EB9R+IruvuRDA32WGm+H5E4ZzRXXxaruP/EnL+ymfJlqqSjHxg
83- IxD3LUItAgMBAAECggEAOE2naQ9tIZYw2EFxikZApVcooJrtx6ropMnzHbx4NBB2
84- K4mChAXFj184u77ZxmGT/jzGvFcI6LE0wWNbK0NOUV7hKZk/fPhkV3AQZrAMrAu4
85- IVi7PwAd3JkmA8F8XuebUDA5rDGDsgL8GD9baFJA58abeLs9eMGyuF4XgOUh4bip
86- hgHa76O2rcDWNY5HZqqRslw75FzlYkB0PCts/UJxSswj70kTTihyOhDlrm2TnyxI
87- ne54UbGRrpfs9wiheSGLjDG81qZToBHQDwoAnjjZhu1VCaBISuGbgZrxyyRyqdnn
88- xPW+KczMv04XyvF7v6Pz+bUEppalLXGiXnH5UtWvZQKBgQDTPCdMpNE/hwlq4nAw
89- Kf42zIBWfbnMLVWYoeDiAOhtl9XAUAXn76xe6Rvo0qeAo67yejdbJfRq3HvGyw+q
90- 4PS8r9gXYmLYIPQxSoLL5+rFoBCN3qFippfjLB1j32mp7+15KjRj8FF2r6xIN8fu
91- XatSRsaqmvCWYLDRv/rbHnxwkwKBgQDLkyfFLF7BtwtPWKdqrwOM7ip1UKh+oDBS
92- vkCQ08aEFRBU7T3jChsx5GbaW6zmsSBwBwcrHclpSkz7n3aq19DDWObJR2p80Fma
93- rsXeIcvtEpkvT3pVX268P5d+XGs1kxgFunqTysG9yChW+xzcs5MdKBzuMPPn7rL8
94- MKAzdar6PwKBgEypkzW8x3h/4Moa3k6MnwdyVs2NGaZheaRIc95yJ+jGZzxBjrMr
95- h+p2PbvU4BfO0AqOkpKRBtDVrlJqlggVVp04UHvEKE16QEW3Xhr0037f5cInX3j3
96- Lz6yXwRFLAsR2aTUzWjL6jTh8uvO2s/GzQuyRh3a16Ar/WBShY+K0+zjAoGATnLT
97- xZjWnyHRmu8X/PWakamJ9RFzDPDgDlLAgM8LVgTj+UY/LgnL9wsEU6s2UuP5ExKy
98- QXxGDGwUhHar/SQTj+Pnc7Mwpw6HKSOmnnY5po8fNusSwml3O9XppEkrC0c236Y/
99- 7EobJO5IFVTJh4cv7vFxTJzSsRL8KFD4uzvh+nMCgYEAqY8NBYtIgNJA2B6C6hHF
100- +bG7v46434ZHFfGTmMQwzE4taVg7YRnzYESAlvK4bAP5ZXR90n7GRGFhrXzoMZ38
101- r0bw/q9rV+ReGda7/Bjf7ciCKiq0RODcHtf4IaskjPXCoQRGJtgCPLhWPfld6g9v
102- /HTvO96xv9e3eG/PKSPog94=
103- -----END PRIVATE KEY-----
104- CONF
105- cat <<CONF > init/hba.sh
106- cat <<EOF > /var/lib/postgresql/data/pg_hba.conf
107- local all all trust
108- host all postgres all trust
109- hostnossl all pqgossltest all reject
110- hostnossl all pqgosslcert all reject
111- hostssl all pqgossltest all trust
112- hostssl all pqgosslcert all cert
113- host all all all trust
114- EOF
115- CONF
116- sudo chown 999:999 ./init/*
117- sudo chmod 600 ./init/*
118-
119- - name : start postgres
120- run : |
121- docker run -d \
122- --name pg \
123- -p 5432:5432 \
124- -v $(pwd)/init:/init \
125- -e POSTGRES_PASSWORD=unused \
126- -e POSTGRES_USER=postgres \
127- postgres:${{ matrix.postgres }} \
128- -c ssl=on \
129- -c ssl_ca_file=/init/root.crt \
130- -c ssl_cert_file=/init/server.crt \
131- -c ssl_key_file=/init/server.key
132-
133- - name : configure postgres
134- run : |
135- n=0
136- until [ "$n" -ge 10 ]
137- do
138- docker exec pg pg_isready -h localhost && break
139- n=$((n+1))
140- echo waiting for postgres to be ready...
141- sleep 1
142- done
143- docker exec pg bash /init/hba.sh
144- n=0
145- until [ "$n" -ge 10 ]
146- do
147- docker exec pg su postgres -c '/usr/lib/postgresql/${{ matrix.postgres }}/bin/pg_ctl reload' && break
148- n=$((n+1))
149- echo waiting for postgres to reload...
150- sleep 1
151- done
152-
153- - name : setup hosts
154- run : echo '127.0.0.1 postgres' | sudo tee -a /etc/hosts
155-
156- - name : create db/roles
157- run : |
158- n=0
159- until [ "$n" -ge 10 ]
160- do
161- docker exec pg pg_isready -h localhost && break
162- n=$((n+1))
163- echo waiting for postgres to be ready...
164- sleep 1
165- done
166- docker exec pg createdb -h localhost -U postgres pqgotest
167- docker exec pg createuser -h localhost -U postgres -DRS pqgossltest
168- docker exec pg createuser -h localhost -U postgres -DRS pqgosslcert
169-
170- - name : check out code into the Go module directory
171- uses : actions/checkout@v6
172-
173- - name : set up go
174- uses : actions/setup-go@v6
30+ - uses : ' actions/checkout@v6'
31+ - uses : ' actions/setup-go@v6'
17532 with :
17633 go-version : ${{ matrix.go }}
177- id : go
178-
179- - name : set key perms
180- run : sudo chmod 600 testdata/certs/postgresql.key
181-
182- - name : run tests
183- env :
184- PGUSER : postgres
185- PGHOST : localhost
186- PGPORT : 5432
187- PQGOSSLTESTS : 1
188- PQSSLCERTTEST_PATH : testdata/certs
34+ - name : ' Run tests'
18935 run : |
190- PQTEST_BINARY_PARAMETERS=no go test -race ./...
191- PQTEST_BINARY_PARAMETERS=yes go test -race ./...
36+ docker compose up pg${{ matrix.pg }} -d --wait || exit 1
37+ echo '127.0.0.1 postgres' | sudo tee -a /etc/hosts
19238
193- - name : build
194- run : go build -v .
39+ PQTEST_BINARY_PARAMETERS=no go test -race ./...
40+ PQTEST_BINARY_PARAMETERS=yes go test -race ./.. .
0 commit comments