PostgreSQL 13 will reach its end-of-life on November 13, 2025. So we're upgrading before that happens. We're also upgrading to PostgreSQL 14 in our CI. In this case, we're using the default distribution (Trixie, as of October 2025); it doesn't affect the development or production environments, so it's OK if use the default one.
98 lines
2.9 KiB
YAML
98 lines
2.9 KiB
YAML
name: tests
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
pull_request:
|
|
branches-ignore:
|
|
- i18n_master
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
env:
|
|
TEST_COVERAGE: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' && 1 || '' }}
|
|
|
|
jobs:
|
|
tests:
|
|
runs-on: ubuntu-24.04
|
|
timeout-minutes: 60
|
|
services:
|
|
postgres:
|
|
image: postgres:14.19
|
|
ports: ["5432:5432"]
|
|
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
|
|
env:
|
|
POSTGRES_USER: consul
|
|
POSTGRES_PASSWORD: password
|
|
env:
|
|
PGUSER: consul
|
|
PGPASSWORD: password
|
|
RAILS_ENV: test
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
ci_node_total: [5]
|
|
ci_node_index: [0, 1, 2, 3, 4]
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: ruby/setup-ruby@v1
|
|
with:
|
|
bundler-cache: true
|
|
- name: Setup NPM
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
cache: "npm"
|
|
node-version-file: ".node-version"
|
|
- name: Install node packages
|
|
run: npm clean-install
|
|
- name: Install ImageMagick
|
|
run: sudo apt-get update && sudo apt-get install imagemagick
|
|
- name: Remove image-bundled Chrome
|
|
run: sudo apt-get purge google-chrome-stable
|
|
- name: Setup Chrome/Chromium 128
|
|
uses: browser-actions/setup-chrome@v1
|
|
with:
|
|
chrome-version: 128
|
|
install-chromedriver: true
|
|
install-dependencies: true
|
|
- name: Copy secrets and database files
|
|
run: for i in config/*.example; do cp "$i" "${i/.example}"; done
|
|
- name: Setup database
|
|
run: bundle exec rake db:setup
|
|
- name: Compile assets
|
|
run: bundle exec rake assets:precompile > /dev/null 2>&1
|
|
- name: Run test suite
|
|
env:
|
|
KNAPSACK_PRO_TEST_SUITE_TOKEN_RSPEC: ${{ secrets.KNAPSACK_PRO_TEST_SUITE_TOKEN_RSPEC }}
|
|
KNAPSACK_PRO_CI_NODE_TOTAL: ${{ matrix.ci_node_total }}
|
|
KNAPSACK_PRO_CI_NODE_INDEX: ${{ matrix.ci_node_index }}
|
|
KNAPSACK_PRO_FIXED_QUEUE_SPLIT: true
|
|
KNAPSACK_PRO_LOG_LEVEL: info
|
|
run: bin/knapsack_pro_rspec
|
|
- name: Coveralls Parallel
|
|
if: ${{ env.TEST_COVERAGE == 1 }}
|
|
uses: coverallsapp/github-action@master
|
|
with:
|
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
flag-name: run-${{ matrix.ci_node_index }}
|
|
parallel: true
|
|
- name: Upload screenshots
|
|
if: failure()
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: screenshots-${{ matrix.ci_node_index }}
|
|
path: tmp/capybara/
|
|
coveralls:
|
|
permissions:
|
|
contents: none
|
|
runs-on: ubuntu-24.04
|
|
needs: tests
|
|
steps:
|
|
- name: Finish coveralls
|
|
if: ${{ env.TEST_COVERAGE == 1 }}
|
|
uses: coverallsapp/github-action@master
|
|
with:
|
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
parallel-finished: true
|