Merge pull request #2113 from mateuszkowalke/master #1136
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 | |
runs-on: ubuntu-22.04 | |
strategy: | |
matrix: | |
go-version: ["1.22", "1.23"] | |
pg-version: [12, 13, 14, 15, 16, cockroachdb] | |
include: | |
- 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: 16 | |
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://root@127.0.0.1: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@v5 | |
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 | |
# parallel testing is disabled because somehow parallel testing causes Github Actions to kill the runner. | |
run: go test -parallel=1 -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.22", "1.23"] | |
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@v5 | |
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 | |
# parallel testing is disabled because somehow parallel testing causes Github Actions to kill the runner. | |
run: go test -parallel=1 -race ./... | |
env: | |
PGX_TEST_DATABASE: ${{ steps.postgres.outputs.connection-uri }} |