Source gem #669
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: Source gem | |
on: | |
workflow_dispatch: | |
schedule: | |
- cron: "0 5 * * 3" # At 05:00 on Wednesday # https://crontab.guru/#0_5_*_*_3 | |
push: | |
branches: | |
- master | |
tags: | |
- "*.*.*" | |
pull_request: | |
types: [opened, synchronize] | |
branches: | |
- "*" | |
permissions: | |
contents: read | |
jobs: | |
job_build_gem: | |
name: Build | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Ruby | |
uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: "3.2" | |
- name: Build source gem | |
run: gem build pg.gemspec | |
- name: Upload source gem | |
uses: actions/upload-artifact@v4 | |
with: | |
name: source-gem | |
path: "*.gem" | |
job_test_gem: | |
name: Test | |
needs: job_build_gem | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- os: windows | |
ruby: "head" | |
PGVERSION: 16.0-1-windows-x64 | |
PGVER: "16" | |
- os: windows | |
ruby: "2.5" | |
PGVERSION: 9.4.26-1-windows-x64 | |
PGVER: "9.4" | |
- os: windows | |
ruby: "mswin" | |
PGVERSION: 16.0-1-windows-x64 | |
PGVER: "16" | |
- os: ubuntu | |
ruby: "head" | |
PGVER: "16" | |
- os: ubuntu | |
ruby: "3.2" | |
PGVER: "12" | |
- os: ubuntu | |
os_ver: "20.04" | |
ruby: "2.5" | |
PGVER: "9.3" | |
- os: ubuntu | |
ruby: "truffleruby" | |
PGVER: "13" | |
- os: ubuntu | |
ruby: "truffleruby-head" | |
PGVER: "16" | |
- os: macos | |
ruby: "head" | |
PGVERSION: 16.0-1-osx | |
PGVER: "16" | |
runs-on: ${{ matrix.os }}-${{ matrix.os_ver || 'latest' }} | |
env: | |
PGVERSION: ${{ matrix.PGVERSION }} | |
PGVER: ${{ matrix.PGVER }} | |
MAKE: make -j2 V=1 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Ruby | |
uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: ${{ matrix.ruby }} | |
- name: Download gem from build job | |
uses: actions/download-artifact@v4 | |
with: | |
name: source-gem | |
- name: Install required packages Windows | |
if: matrix.os == 'windows' && matrix.ruby != 'mswin' | |
shell: cmd | |
run: ridk exec sh -c "pacman --sync --needed --noconfirm ${MINGW_PACKAGE_PREFIX}-gcc" | |
- name: Download PostgreSQL Windows | |
if: matrix.os == 'windows' | |
run: | | |
Add-Type -AssemblyName System.IO.Compression.FileSystem | |
function Unzip { | |
param([string]$zipfile, [string]$outpath) | |
[System.IO.Compression.ZipFile]::ExtractToDirectory($zipfile, $outpath) | |
} | |
$(new-object net.webclient).DownloadFile("http://get.enterprisedb.com/postgresql/postgresql-$env:PGVERSION-binaries.zip", "postgresql-binaries.zip") | |
Unzip "postgresql-binaries.zip" "." | |
echo "$pwd/pgsql/bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append | |
echo "PGUSER=$env:USERNAME" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append | |
echo "PGPASSWORD=" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append | |
- name: Download PostgreSQL Ubuntu | |
if: matrix.os == 'ubuntu' | |
run: | | |
echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main $PGVER" | sudo tee -a /etc/apt/sources.list.d/pgdg.list | |
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - | |
sudo apt-get -y update | |
sudo apt-get -y --allow-downgrades install postgresql-$PGVER libpq5=$PGVER* libpq-dev=$PGVER* | |
echo /usr/lib/postgresql/$PGVER/bin >> $GITHUB_PATH | |
- name: Download PostgreSQL Macos | |
if: matrix.os == 'macos' | |
run: | | |
wget https://get.enterprisedb.com/postgresql/postgresql-$PGVERSION-binaries.zip && \ | |
sudo mkdir -p /Library/PostgreSQL && \ | |
sudo unzip postgresql-$PGVERSION-binaries.zip -d /Library/PostgreSQL/$PGVER && \ | |
sudo mv /Library/PostgreSQL/$PGVER/pgsql/* /Library/PostgreSQL/$PGVER/ && \ | |
echo /Library/PostgreSQL/$PGVER/bin >> $GITHUB_PATH | |
- run: gem update --system 3.3.26 | |
- run: bundle install | |
- run: gem install --local *.gem --verbose | |
- name: Run specs | |
env: | |
PG_DEBUG: 0 | |
# Temprary fix only for Truffleruby-24.0.0: | |
TRUFFLERUBYOPT: --experimental-options --keep-handles-alive | |
run: ruby -rpg -S rspec spec/**/*_spec.rb -cfdoc | |
- name: Print logs if job failed | |
if: ${{ failure() && matrix.os == 'windows' }} | |
run: ridk exec cat tmp_test_specs/*.log | |
- name: Print logs if job failed | |
if: ${{ failure() && matrix.os != 'windows' }} | |
run: cat tmp_test_specs/*.log |