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 }}