Move db migration CI to GitHub Actions (#23624)
parent
77779ddebc
commit
1d9ed91643
@ -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