Skip to content

Instantly display the 'You reported the X' message #755

Instantly display the 'You reported the X' message

Instantly display the 'You reported the X' message #755

# GitHub action that checks:
# - that the migrations and the related code changes are not in the same pull request
# - that the schema.rb and data_schema.rb files are included in the pull request that introduces the corresponding migration
# Based on https://github.com/marketplace/actions/changed-files
name: Isolated Migrations
on:
pull_request
jobs:
check_changed_files:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Group files that have changed
id: changed-files-yaml
uses: tj-actions/changed-files@v40
with:
files_yaml: |
linters:
- '.github/workflows/isolated_migrations.yml'
- 'src/api/.rubocop*.yml'
migrations:
- src/api/db/migrate/**
- src/api/db/schema.rb
- src/api/db/data/**
- src/api/db/data_schema.rb
not_migrations:
- '!src/api/db/migrate/**'
- '!src/api/db/schema.rb'
- '!src/api/db/data/**'
- '!src/api/db/data_schema.rb'
- '!src/api/db/attribute_descriptions.rb'
- '!src/api/db/seeds.rb'
- '!.github/workflows/isolated_migrations.yml'
- '!src/api/.rubocop*.yml'
schema_migrations:
- src/api/db/migrate/**
data_migrations:
- src/api/db/data/**
schema:
- src/api/db/schema.rb
data_schema:
- src/api/db/data_schema.rb
- name: List the files related to linters that this PR changes
if: steps.changed-files-yaml.outputs.linters_any_changed == 'true'
run: |
for file in ${{ steps.changed-files-yaml.outputs.linters_all_changed_files }}; do
echo "- $file"
done
- name: List the files related to migrations that this PR changes
if: steps.changed-files-yaml.outputs.migrations_any_changed == 'true'
run: |
for file in ${{ steps.changed-files-yaml.outputs.migrations_all_changed_files }}; do
echo "- $file"
done
- name: List the files not related to migrations that this PR changes
if: steps.changed-files-yaml.outputs.not_migrations_any_changed == 'true'
run: |
for file in ${{ steps.changed-files-yaml.outputs.not_migrations_all_changed_files }}; do
echo "- $file"
done
- name: Check if the Pull Request contains code changes together with migrations
if: (steps.changed-files-yaml.outputs.migrations_any_changed == 'true') && (steps.changed-files-yaml.outputs.not_migrations_all_changed_files_count > 0)
run: |
echo "There are code changes together with migrations. Please split them into two Pull Requests"
exit 1
- name: Missing schema changes
if: (steps.changed-files-yaml.outputs.schema_migrations_any_changed == 'true') && (steps.changed-files-yaml.outputs.linters_any_changed == 'false') && (steps.changed-files-yaml.outputs.schema_any_changed == 'false')
run: |
echo "You introduced some schema migration, please introduce the schema.rb changes as well"
exit 1
- name: Missing data schema changes
if: (steps.changed-files-yaml.outputs.data_schema_migrations_any_changed == 'true') && (steps.changed-files-yaml.outputs.linters_any_changed == 'false') && (steps.changed-files-yaml.outputs.data_schema_any_changed == 'false')
run: |
echo "You introduced some data migrations, please introduce the data_schema.rb changes as well"
exit 1