You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
119 lines
3.0 KiB
119 lines
3.0 KiB
name: Test two step migrations |
|
on: |
|
push: |
|
branches-ignore: |
|
- 'dependabot/**' |
|
- 'renovate/**' |
|
pull_request: |
|
|
|
jobs: |
|
pre_job: |
|
runs-on: ubuntu-latest |
|
|
|
outputs: |
|
should_skip: ${{ steps.skip_check.outputs.should_skip }} |
|
|
|
steps: |
|
- id: skip_check |
|
uses: fkirc/skip-duplicate-actions@v5 |
|
with: |
|
paths: '["Gemfile*", ".ruby-version", "**/*.rb", ".github/workflows/test-migrations-two-step.yml", "lib/tasks/tests.rake"]' |
|
|
|
test: |
|
runs-on: ubuntu-latest |
|
needs: pre_job |
|
if: needs.pre_job.outputs.should_skip != 'true' |
|
|
|
strategy: |
|
fail-fast: false |
|
|
|
matrix: |
|
postgres: |
|
- 14-alpine |
|
- 15-alpine |
|
|
|
services: |
|
postgres: |
|
image: postgres:${{ matrix.postgres}} |
|
env: |
|
POSTGRES_PASSWORD: postgres |
|
POSTGRES_USER: postgres |
|
options: >- |
|
--health-cmd pg_isready |
|
--health-interval 10s |
|
--health-timeout 5s |
|
--health-retries 5 |
|
ports: |
|
- 5432:5432 |
|
redis: |
|
image: redis:7-alpine |
|
options: >- |
|
--health-cmd "redis-cli ping" |
|
--health-interval 10s |
|
--health-timeout 5s |
|
--health-retries 5 |
|
ports: |
|
- 6379:6379 |
|
|
|
env: |
|
CONTINUOUS_INTEGRATION: true |
|
DB_HOST: localhost |
|
DB_USER: postgres |
|
DB_PASS: postgres |
|
DISABLE_SIMPLECOV: true |
|
RAILS_ENV: test |
|
BUNDLE_CLEAN: true |
|
BUNDLE_FROZEN: true |
|
BUNDLE_WITHOUT: 'development production' |
|
BUNDLE_JOBS: 3 |
|
BUNDLE_RETRY: 3 |
|
|
|
steps: |
|
- uses: actions/checkout@v4 |
|
|
|
- name: Install native Ruby dependencies |
|
run: | |
|
sudo apt-get update |
|
sudo apt-get install -y libicu-dev libidn11-dev |
|
|
|
- name: Set up bundler cache |
|
uses: ruby/setup-ruby@v1 |
|
with: |
|
ruby-version: .ruby-version |
|
bundler-cache: true |
|
|
|
- name: Create database |
|
run: './bin/rails db:create' |
|
|
|
- name: Run migrations up to v2.0.0 |
|
run: './bin/rails db:migrate VERSION=20171010025614' |
|
|
|
- name: Populate database with test data |
|
run: './bin/rails tests:migrations:populate_v2' |
|
|
|
- name: Run pre-deployment migrations up to v2.4.0 |
|
run: './bin/rails db:migrate VERSION=20180514140000' |
|
env: |
|
SKIP_POST_DEPLOYMENT_MIGRATIONS: true |
|
|
|
- name: Populate database with test data |
|
run: './bin/rails tests:migrations:populate_v2_4' |
|
|
|
- name: Run migrations up to v2.4.3 |
|
run: './bin/rails db:migrate VERSION=20180707154237' |
|
env: |
|
SKIP_POST_DEPLOYMENT_MIGRATIONS: true |
|
|
|
- name: Populate database with test data |
|
run: './bin/rails tests:migrations:populate_v2_4_3' |
|
|
|
- name: Run all remaining pre-deployment migrations |
|
run: './bin/rails db:migrate' |
|
env: |
|
SKIP_POST_DEPLOYMENT_MIGRATIONS: true |
|
|
|
- name: Run all post-deployment migrations |
|
run: './bin/rails db:migrate' |
|
|
|
- name: Check migration result |
|
run: './bin/rails tests:migrations:check_database'
|
|
|