Move db migration CI to GitHub Actions (#23624)
parent
77779ddebc
commit
1d9ed91643
3 changed files with 208 additions and 91 deletions
@ -0,0 +1,100 @@ |
||||
name: Test one step migrations |
||||
on: |
||||
push: |
||||
branches-ignore: |
||||
- 'dependabot/**' |
||||
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-one-step.yml"]' |
||||
|
||||
test: |
||||
runs-on: ubuntu-latest |
||||
needs: pre_job |
||||
if: needs.pre_job.outputs.should_skip != 'true' |
||||
|
||||
services: |
||||
postgres: |
||||
image: postgres:14.5 |
||||
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.0 |
||||
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@v3 |
||||
|
||||
- name: Install native Ruby dependencies |
||||
run: 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 migrations up to v2.4.0 |
||||
run: './bin/rails db:migrate VERSION=20180514140000' |
||||
|
||||
- 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' |
||||
|
||||
- name: Populate database with test data |
||||
run: './bin/rails tests:migrations:populate_v2_4_3' |
||||
|
||||
- name: Run all remaining migrations |
||||
run: './bin/rails db:migrate' |
||||
|
||||
- name: Check migration result |
||||
run: './bin/rails tests:migrations:check_database' |
@ -0,0 +1,108 @@ |
||||
name: Test two step migrations |
||||
on: |
||||
push: |
||||
branches-ignore: |
||||
- 'dependabot/**' |
||||
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"]' |
||||
|
||||
test: |
||||
runs-on: ubuntu-latest |
||||
needs: pre_job |
||||
if: needs.pre_job.outputs.should_skip != 'true' |
||||
|
||||
services: |
||||
postgres: |
||||
image: postgres:14.5 |
||||
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.0 |
||||
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@v3 |
||||
|
||||
- name: Install native Ruby dependencies |
||||
run: 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' |
Loading…
Reference in new issue