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'