github.com/jackc/pgx/v5@v5.5.5/.github/workflows/ci.yml (about) 1 name: CI 2 3 on: 4 push: 5 branches: [master] 6 pull_request: 7 branches: [master] 8 9 jobs: 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 }}