Update supported Go versions and add 1.21 to CI #776
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
branches: [master] | |
pull_request: | |
branches: [master] | |
jobs: | |
test: | |
name: Test | |
# Note: The TLS tests are rather finicky. It seems that openssl 3 encrypts certificates differently than older | |
# openssl and it does it in a way Go and/or pgx ssl handling code can't handle. So stick with Ubuntu 20.04 until | |
# that is figured out. | |
runs-on: ubuntu-20.04 | |
strategy: | |
matrix: | |
go-version: ["1.20", "1.21"] | |
pg-version: [11, 12, 13, 14, 15, cockroachdb] | |
include: | |
- pg-version: 11 | |
pgx-test-database: "host=127.0.0.1 user=pgx_md5 password=secret dbname=pgx_test" | |
pgx-test-unix-socket-conn-string: "host=/var/run/postgresql dbname=pgx_test" | |
pgx-test-tcp-conn-string: "host=127.0.0.1 user=pgx_md5 password=secret dbname=pgx_test" | |
pgx-test-scram-password-conn-string: "host=127.0.0.1 user=pgx_scram password=secret dbname=pgx_test" | |
pgx-test-md5-password-conn-string: "host=127.0.0.1 user=pgx_md5 password=secret dbname=pgx_test" | |
pgx-test-plain-password-conn-string: "host=127.0.0.1 user=pgx_pw password=secret dbname=pgx_test" | |
pgx-test-tls-conn-string: "host=localhost user=pgx_ssl password=secret sslmode=verify-full sslrootcert=/tmp/ca.pem dbname=pgx_test" | |
pgx-ssl-password: certpw | |
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" | |
- pg-version: 12 | |
pgx-test-database: "host=127.0.0.1 user=pgx_md5 password=secret dbname=pgx_test" | |
pgx-test-unix-socket-conn-string: "host=/var/run/postgresql dbname=pgx_test" | |
pgx-test-tcp-conn-string: "host=127.0.0.1 user=pgx_md5 password=secret dbname=pgx_test" | |
pgx-test-scram-password-conn-string: "host=127.0.0.1 user=pgx_scram password=secret dbname=pgx_test" | |
pgx-test-md5-password-conn-string: "host=127.0.0.1 user=pgx_md5 password=secret dbname=pgx_test" | |
pgx-test-plain-password-conn-string: "host=127.0.0.1 user=pgx_pw password=secret dbname=pgx_test" | |
pgx-test-tls-conn-string: "host=localhost user=pgx_ssl password=secret sslmode=verify-full sslrootcert=/tmp/ca.pem dbname=pgx_test" | |
pgx-ssl-password: certpw | |
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" | |
- pg-version: 13 | |
pgx-test-database: "host=127.0.0.1 user=pgx_md5 password=secret dbname=pgx_test" | |
pgx-test-unix-socket-conn-string: "host=/var/run/postgresql dbname=pgx_test" | |
pgx-test-tcp-conn-string: "host=127.0.0.1 user=pgx_md5 password=secret dbname=pgx_test" | |
pgx-test-scram-password-conn-string: "host=127.0.0.1 user=pgx_scram password=secret dbname=pgx_test" | |
pgx-test-md5-password-conn-string: "host=127.0.0.1 user=pgx_md5 password=secret dbname=pgx_test" | |
pgx-test-plain-password-conn-string: "host=127.0.0.1 user=pgx_pw password=secret dbname=pgx_test" | |
pgx-test-tls-conn-string: "host=localhost user=pgx_ssl password=secret sslmode=verify-full sslrootcert=/tmp/ca.pem dbname=pgx_test" | |
pgx-ssl-password: certpw | |
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" | |
- pg-version: 14 | |
pgx-test-database: "host=127.0.0.1 user=pgx_md5 password=secret dbname=pgx_test" | |
pgx-test-unix-socket-conn-string: "host=/var/run/postgresql dbname=pgx_test" | |
pgx-test-tcp-conn-string: "host=127.0.0.1 user=pgx_md5 password=secret dbname=pgx_test" | |
pgx-test-scram-password-conn-string: "host=127.0.0.1 user=pgx_scram password=secret dbname=pgx_test" | |
pgx-test-md5-password-conn-string: "host=127.0.0.1 user=pgx_md5 password=secret dbname=pgx_test" | |
pgx-test-plain-password-conn-string: "host=127.0.0.1 user=pgx_pw password=secret dbname=pgx_test" | |
pgx-test-tls-conn-string: "host=localhost user=pgx_ssl password=secret sslmode=verify-full sslrootcert=/tmp/ca.pem dbname=pgx_test" | |
pgx-ssl-password: certpw | |
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" | |
- pg-version: 15 | |
pgx-test-database: "host=127.0.0.1 user=pgx_md5 password=secret dbname=pgx_test" | |
pgx-test-unix-socket-conn-string: "host=/var/run/postgresql dbname=pgx_test" | |
pgx-test-tcp-conn-string: "host=127.0.0.1 user=pgx_md5 password=secret dbname=pgx_test" | |
pgx-test-scram-password-conn-string: "host=127.0.0.1 user=pgx_scram password=secret dbname=pgx_test" | |
pgx-test-md5-password-conn-string: "host=127.0.0.1 user=pgx_md5 password=secret dbname=pgx_test" | |
pgx-test-plain-password-conn-string: "host=127.0.0.1 user=pgx_pw password=secret dbname=pgx_test" | |
pgx-test-tls-conn-string: "host=localhost user=pgx_ssl password=secret sslmode=verify-full sslrootcert=/tmp/ca.pem dbname=pgx_test" | |
pgx-ssl-password: certpw | |
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" | |
- pg-version: cockroachdb | |
pgx-test-database: "postgresql://[email protected]:26257/pgx_test?sslmode=disable&experimental_enable_temp_tables=on" | |
steps: | |
- name: Check out code into the Go module directory | |
uses: actions/checkout@v4 | |
- name: Set up Go ${{ matrix.go-version }} | |
uses: actions/setup-go@v4 | |
with: | |
go-version: ${{ matrix.go-version }} | |
- name: Setup database server for testing | |
run: ci/setup_test.bash | |
env: | |
PGVERSION: ${{ matrix.pg-version }} | |
# - name: Setup upterm session | |
# uses: lhotari/action-upterm@v1 | |
# with: | |
# ## limits ssh access and adds the ssh public key for the user which triggered the workflow | |
# limit-access-to-actor: true | |
# env: | |
# PGX_TEST_DATABASE: ${{ matrix.pgx-test-database }} | |
# PGX_TEST_UNIX_SOCKET_CONN_STRING: ${{ matrix.pgx-test-unix-socket-conn-string }} | |
# PGX_TEST_TCP_CONN_STRING: ${{ matrix.pgx-test-tcp-conn-string }} | |
# PGX_TEST_SCRAM_PASSWORD_CONN_STRING: ${{ matrix.pgx-test-scram-password-conn-string }} | |
# PGX_TEST_MD5_PASSWORD_CONN_STRING: ${{ matrix.pgx-test-md5-password-conn-string }} | |
# PGX_TEST_PLAIN_PASSWORD_CONN_STRING: ${{ matrix.pgx-test-plain-password-conn-string }} | |
# PGX_TEST_TLS_CONN_STRING: ${{ matrix.pgx-test-tls-conn-string }} | |
# PGX_SSL_PASSWORD: ${{ matrix.pgx-ssl-password }} | |
# PGX_TEST_TLS_CLIENT_CONN_STRING: ${{ matrix.pgx-test-tls-client-conn-string }} | |
- name: Check formatting | |
run: | | |
gofmt -l -s -w . | |
git status | |
git diff --exit-code | |
- name: Test | |
run: go test -v -race ./... | |
env: | |
PGX_TEST_DATABASE: ${{ matrix.pgx-test-database }} | |
PGX_TEST_UNIX_SOCKET_CONN_STRING: ${{ matrix.pgx-test-unix-socket-conn-string }} | |
PGX_TEST_TCP_CONN_STRING: ${{ matrix.pgx-test-tcp-conn-string }} | |
PGX_TEST_SCRAM_PASSWORD_CONN_STRING: ${{ matrix.pgx-test-scram-password-conn-string }} | |
PGX_TEST_MD5_PASSWORD_CONN_STRING: ${{ matrix.pgx-test-md5-password-conn-string }} | |
PGX_TEST_PLAIN_PASSWORD_CONN_STRING: ${{ matrix.pgx-test-plain-password-conn-string }} | |
# TestConnectTLS fails. However, it succeeds if I connect to the CI server with upterm and run it. Give up on that test for now. | |
# PGX_TEST_TLS_CONN_STRING: ${{ matrix.pgx-test-tls-conn-string }} | |
PGX_SSL_PASSWORD: ${{ matrix.pgx-ssl-password }} | |
PGX_TEST_TLS_CLIENT_CONN_STRING: ${{ matrix.pgx-test-tls-client-conn-string }} | |
test-windows: | |
name: Test Windows | |
runs-on: windows-latest | |
strategy: | |
matrix: | |
go-version: ["1.20", "1.21"] | |
steps: | |
- name: Setup PostgreSQL | |
id: postgres | |
uses: ikalnytskyi/action-setup-postgres@v4 | |
with: | |
database: pgx_test | |
- name: Check out code into the Go module directory | |
uses: actions/checkout@v4 | |
- name: Set up Go ${{ matrix.go-version }} | |
uses: actions/setup-go@v4 | |
with: | |
go-version: ${{ matrix.go-version }} | |
- name: Initialize test database | |
run: | | |
psql -f testsetup/postgresql_setup.sql pgx_test | |
env: | |
PGSERVICE: ${{ steps.postgres.outputs.service-name }} | |
shell: bash | |
- name: Test | |
run: go test -v -race ./... | |
env: | |
PGX_TEST_DATABASE: ${{ steps.postgres.outputs.connection-uri }} |