name: build on: [push, pull_request] jobs: ubuntu: runs-on: ${{ matrix.os }} if: ${{ !startsWith(github.ref_name, 'mac') && !startsWith(github.ref_name, 'windows') }} strategy: fail-fast: false matrix: include: - postgres: 19 os: ubuntu-24.04 - postgres: 18 os: ubuntu-24.04 - postgres: 17 os: ubuntu-24.04 - postgres: 16 os: ubuntu-24.04-arm - postgres: 15 os: ubuntu-22.04 - postgres: 14 os: ubuntu-22.04-arm - postgres: 13 os: ubuntu-22.04 steps: - uses: actions/checkout@v5 - uses: ankane/setup-postgres@v1 with: postgres-version: ${{ matrix.postgres }} dev-files: true - run: make env: PG_CFLAGS: -DUSE_ASSERT_CHECKING -Wall -Wextra -Werror -Wno-unused-parameter -Wno-sign-compare ${{ matrix.postgres >= 18 && '-Wno-missing-field-initializers' || '' }} - run: | export PG_CONFIG=`which pg_config` sudo --preserve-env=PG_CONFIG make install - run: make installcheck - if: ${{ failure() }} run: cat regression.diffs # - run: | # sudo apt-get update # sudo apt-get install libipc-run-perl # - run: make prove_installcheck mac: runs-on: ${{ matrix.os }} if: ${{ !startsWith(github.ref_name, 'windows') }} strategy: fail-fast: false matrix: include: - postgres: 18 os: macos-26 - postgres: 14 os: macos-15-intel steps: - uses: actions/checkout@v5 - uses: ankane/setup-postgres@v1 with: postgres-version: ${{ matrix.postgres }} - run: make env: PG_CFLAGS: -DUSE_ASSERT_CHECKING -Wall -Wextra -Werror -Wno-unused-parameter -Wno-unknown-warning-option ${{ matrix.postgres >= 18 && '-Wno-missing-field-initializers' || '' }} - run: make install - run: make installcheck - if: ${{ failure() }} run: cat regression.diffs # Homebrew Postgres does not enable TAP tests, so need to download # - run: | # brew install cpanm # cpanm --notest IPC::Run # wget -q https://github.com/postgres/postgres/archive/refs/tags/$TAG.tar.gz # tar xf $TAG.tar.gz # mv postgres-$TAG postgres # env: # TAG: ${{ matrix.postgres == 18 && 'REL_18_0' || 'REL_14_19' }} # - run: make prove_installcheck PROVE_FLAGS="-I ./postgres/src/test/perl -I ./test/perl" # env: # PERL5LIB: /Users/runner/perl5/lib/perl5 # - run: make clean && $(brew --prefix llvm@$LLVM_VERSION)/bin/scan-build --status-bugs make # env: # LLVM_VERSION: ${{ matrix.os == 'macos-26' && 20 || 18 }} # PG_CFLAGS: -DUSE_ASSERT_CHECKING windows: runs-on: ${{ matrix.os }} if: ${{ !startsWith(github.ref_name, 'mac') }} strategy: fail-fast: false matrix: include: - postgres: 17 os: windows-2025 - postgres: 14 os: windows-2022 steps: - uses: actions/checkout@v5 - uses: ankane/setup-postgres@v1 with: postgres-version: ${{ matrix.postgres }} - run: | call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" && ^ nmake /NOLOGO /F Makefile.win && ^ nmake /NOLOGO /F Makefile.win install && ^ nmake /NOLOGO /F Makefile.win installcheck ${{ matrix.postgres != 17 && 'PG_REGRESS=$(PGROOT)\bin\pg_regress' || '' }} && ^ nmake /NOLOGO /F Makefile.win clean && ^ nmake /NOLOGO /F Makefile.win uninstall shell: cmd - if: ${{ failure() }} run: cat regression.diffs