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