...
1name: CI
2
3on:
4 push:
5 branches: [master]
6 pull_request:
7 branches: [master]
8
9jobs:
10 test:
11 name: Test
12 runs-on: ubuntu-22.04
13
14 strategy:
15 matrix:
16 go-version: ["1.20", "1.21"]
17 pg-version: [12, 13, 14, 15, 16, cockroachdb]
18 include:
19 - pg-version: 12
20 pgx-test-database: "host=127.0.0.1 user=pgx_md5 password=secret dbname=pgx_test"
21 pgx-test-unix-socket-conn-string: "host=/var/run/postgresql dbname=pgx_test"
22 pgx-test-tcp-conn-string: "host=127.0.0.1 user=pgx_md5 password=secret dbname=pgx_test"
23 pgx-test-scram-password-conn-string: "host=127.0.0.1 user=pgx_scram password=secret dbname=pgx_test"
24 pgx-test-md5-password-conn-string: "host=127.0.0.1 user=pgx_md5 password=secret dbname=pgx_test"
25 pgx-test-plain-password-conn-string: "host=127.0.0.1 user=pgx_pw password=secret dbname=pgx_test"
26 pgx-test-tls-conn-string: "host=localhost user=pgx_ssl password=secret sslmode=verify-full sslrootcert=/tmp/ca.pem dbname=pgx_test"
27 pgx-ssl-password: certpw
28 pgx-test-tls-client-conn-string: "host=localhost user=pgx_sslcert sslmode=verify-full sslrootcert=/tmp/ca.pem sslcert=/tmp/pgx_sslcert.crt sslkey=/tmp/pgx_sslcert.key dbname=pgx_test"
29 - pg-version: 13
30 pgx-test-database: "host=127.0.0.1 user=pgx_md5 password=secret dbname=pgx_test"
31 pgx-test-unix-socket-conn-string: "host=/var/run/postgresql dbname=pgx_test"
32 pgx-test-tcp-conn-string: "host=127.0.0.1 user=pgx_md5 password=secret dbname=pgx_test"
33 pgx-test-scram-password-conn-string: "host=127.0.0.1 user=pgx_scram password=secret dbname=pgx_test"
34 pgx-test-md5-password-conn-string: "host=127.0.0.1 user=pgx_md5 password=secret dbname=pgx_test"
35 pgx-test-plain-password-conn-string: "host=127.0.0.1 user=pgx_pw password=secret dbname=pgx_test"
36 pgx-test-tls-conn-string: "host=localhost user=pgx_ssl password=secret sslmode=verify-full sslrootcert=/tmp/ca.pem dbname=pgx_test"
37 pgx-ssl-password: certpw
38 pgx-test-tls-client-conn-string: "host=localhost user=pgx_sslcert sslmode=verify-full sslrootcert=/tmp/ca.pem sslcert=/tmp/pgx_sslcert.crt sslkey=/tmp/pgx_sslcert.key dbname=pgx_test"
39 - pg-version: 14
40 pgx-test-database: "host=127.0.0.1 user=pgx_md5 password=secret dbname=pgx_test"
41 pgx-test-unix-socket-conn-string: "host=/var/run/postgresql dbname=pgx_test"
42 pgx-test-tcp-conn-string: "host=127.0.0.1 user=pgx_md5 password=secret dbname=pgx_test"
43 pgx-test-scram-password-conn-string: "host=127.0.0.1 user=pgx_scram password=secret dbname=pgx_test"
44 pgx-test-md5-password-conn-string: "host=127.0.0.1 user=pgx_md5 password=secret dbname=pgx_test"
45 pgx-test-plain-password-conn-string: "host=127.0.0.1 user=pgx_pw password=secret dbname=pgx_test"
46 pgx-test-tls-conn-string: "host=localhost user=pgx_ssl password=secret sslmode=verify-full sslrootcert=/tmp/ca.pem dbname=pgx_test"
47 pgx-ssl-password: certpw
48 pgx-test-tls-client-conn-string: "host=localhost user=pgx_sslcert sslmode=verify-full sslrootcert=/tmp/ca.pem sslcert=/tmp/pgx_sslcert.crt sslkey=/tmp/pgx_sslcert.key dbname=pgx_test"
49 - pg-version: 15
50 pgx-test-database: "host=127.0.0.1 user=pgx_md5 password=secret dbname=pgx_test"
51 pgx-test-unix-socket-conn-string: "host=/var/run/postgresql dbname=pgx_test"
52 pgx-test-tcp-conn-string: "host=127.0.0.1 user=pgx_md5 password=secret dbname=pgx_test"
53 pgx-test-scram-password-conn-string: "host=127.0.0.1 user=pgx_scram password=secret dbname=pgx_test"
54 pgx-test-md5-password-conn-string: "host=127.0.0.1 user=pgx_md5 password=secret dbname=pgx_test"
55 pgx-test-plain-password-conn-string: "host=127.0.0.1 user=pgx_pw password=secret dbname=pgx_test"
56 pgx-test-tls-conn-string: "host=localhost user=pgx_ssl password=secret sslmode=verify-full sslrootcert=/tmp/ca.pem dbname=pgx_test"
57 pgx-ssl-password: certpw
58 pgx-test-tls-client-conn-string: "host=localhost user=pgx_sslcert sslmode=verify-full sslrootcert=/tmp/ca.pem sslcert=/tmp/pgx_sslcert.crt sslkey=/tmp/pgx_sslcert.key dbname=pgx_test"
59 - pg-version: 16
60 pgx-test-database: "host=127.0.0.1 user=pgx_md5 password=secret dbname=pgx_test"
61 pgx-test-unix-socket-conn-string: "host=/var/run/postgresql dbname=pgx_test"
62 pgx-test-tcp-conn-string: "host=127.0.0.1 user=pgx_md5 password=secret dbname=pgx_test"
63 pgx-test-scram-password-conn-string: "host=127.0.0.1 user=pgx_scram password=secret dbname=pgx_test"
64 pgx-test-md5-password-conn-string: "host=127.0.0.1 user=pgx_md5 password=secret dbname=pgx_test"
65 pgx-test-plain-password-conn-string: "host=127.0.0.1 user=pgx_pw password=secret dbname=pgx_test"
66 pgx-test-tls-conn-string: "host=localhost user=pgx_ssl password=secret sslmode=verify-full sslrootcert=/tmp/ca.pem dbname=pgx_test"
67 pgx-ssl-password: certpw
68 pgx-test-tls-client-conn-string: "host=localhost user=pgx_sslcert sslmode=verify-full sslrootcert=/tmp/ca.pem sslcert=/tmp/pgx_sslcert.crt sslkey=/tmp/pgx_sslcert.key dbname=pgx_test"
69 - pg-version: cockroachdb
70 pgx-test-database: "postgresql://root@127.0.0.1:26257/pgx_test?sslmode=disable&experimental_enable_temp_tables=on"
71
72 steps:
73 - name: Check out code into the Go module directory
74 uses: actions/checkout@v4
75
76 - name: Set up Go ${{ matrix.go-version }}
77 uses: actions/setup-go@v5
78 with:
79 go-version: ${{ matrix.go-version }}
80
81 - name: Setup database server for testing
82 run: ci/setup_test.bash
83 env:
84 PGVERSION: ${{ matrix.pg-version }}
85
86 # - name: Setup upterm session
87 # uses: lhotari/action-upterm@v1
88 # with:
89 # ## limits ssh access and adds the ssh public key for the user which triggered the workflow
90 # limit-access-to-actor: true
91 # env:
92 # PGX_TEST_DATABASE: ${{ matrix.pgx-test-database }}
93 # PGX_TEST_UNIX_SOCKET_CONN_STRING: ${{ matrix.pgx-test-unix-socket-conn-string }}
94 # PGX_TEST_TCP_CONN_STRING: ${{ matrix.pgx-test-tcp-conn-string }}
95 # PGX_TEST_SCRAM_PASSWORD_CONN_STRING: ${{ matrix.pgx-test-scram-password-conn-string }}
96 # PGX_TEST_MD5_PASSWORD_CONN_STRING: ${{ matrix.pgx-test-md5-password-conn-string }}
97 # PGX_TEST_PLAIN_PASSWORD_CONN_STRING: ${{ matrix.pgx-test-plain-password-conn-string }}
98 # PGX_TEST_TLS_CONN_STRING: ${{ matrix.pgx-test-tls-conn-string }}
99 # PGX_SSL_PASSWORD: ${{ matrix.pgx-ssl-password }}
100 # PGX_TEST_TLS_CLIENT_CONN_STRING: ${{ matrix.pgx-test-tls-client-conn-string }}
101
102 - name: Check formatting
103 run: |
104 gofmt -l -s -w .
105 git status
106 git diff --exit-code
107
108 - name: Test
109 run: go test -v -race ./...
110 env:
111 PGX_TEST_DATABASE: ${{ matrix.pgx-test-database }}
112 PGX_TEST_UNIX_SOCKET_CONN_STRING: ${{ matrix.pgx-test-unix-socket-conn-string }}
113 PGX_TEST_TCP_CONN_STRING: ${{ matrix.pgx-test-tcp-conn-string }}
114 PGX_TEST_SCRAM_PASSWORD_CONN_STRING: ${{ matrix.pgx-test-scram-password-conn-string }}
115 PGX_TEST_MD5_PASSWORD_CONN_STRING: ${{ matrix.pgx-test-md5-password-conn-string }}
116 PGX_TEST_PLAIN_PASSWORD_CONN_STRING: ${{ matrix.pgx-test-plain-password-conn-string }}
117 # TestConnectTLS fails. However, it succeeds if I connect to the CI server with upterm and run it. Give up on that test for now.
118 # PGX_TEST_TLS_CONN_STRING: ${{ matrix.pgx-test-tls-conn-string }}
119 PGX_SSL_PASSWORD: ${{ matrix.pgx-ssl-password }}
120 PGX_TEST_TLS_CLIENT_CONN_STRING: ${{ matrix.pgx-test-tls-client-conn-string }}
121
122 test-windows:
123 name: Test Windows
124 runs-on: windows-latest
125 strategy:
126 matrix:
127 go-version: ["1.20", "1.21"]
128
129 steps:
130 - name: Setup PostgreSQL
131 id: postgres
132 uses: ikalnytskyi/action-setup-postgres@v4
133 with:
134 database: pgx_test
135
136 - name: Check out code into the Go module directory
137 uses: actions/checkout@v4
138
139 - name: Set up Go ${{ matrix.go-version }}
140 uses: actions/setup-go@v5
141 with:
142 go-version: ${{ matrix.go-version }}
143
144 - name: Initialize test database
145 run: |
146 psql -f testsetup/postgresql_setup.sql pgx_test
147 env:
148 PGSERVICE: ${{ steps.postgres.outputs.service-name }}
149 shell: bash
150
151 - name: Test
152 run: go test -v -race ./...
153 env:
154 PGX_TEST_DATABASE: ${{ steps.postgres.outputs.connection-uri }}
View as plain text