ci: ejecutar migraciones F2.2.1 sobre PostgreSQL real
This commit is contained in:
@@ -34,6 +34,90 @@ jobs:
|
|||||||
- run: npm test
|
- run: npm test
|
||||||
- run: npm run build
|
- run: npm run build
|
||||||
|
|
||||||
|
migrations:
|
||||||
|
name: DB · migrations on PostgreSQL 16/PostGIS
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
services:
|
||||||
|
postgres:
|
||||||
|
image: postgis/postgis:16-3.4
|
||||||
|
env:
|
||||||
|
POSTGRES_USER: dhv2_owner
|
||||||
|
POSTGRES_PASSWORD: owner_test_password
|
||||||
|
POSTGRES_DB: dhv2_ci
|
||||||
|
ports:
|
||||||
|
- 5432:5432
|
||||||
|
options: >-
|
||||||
|
--health-cmd "pg_isready -U dhv2_owner -d dhv2_ci"
|
||||||
|
--health-interval 5s
|
||||||
|
--health-timeout 5s
|
||||||
|
--health-retries 20
|
||||||
|
env:
|
||||||
|
DB_HOST: 127.0.0.1
|
||||||
|
DB_PORT: 5432
|
||||||
|
DB_NAME: dhv2_ci
|
||||||
|
DB_MIGRATION_USER: dhv2_owner
|
||||||
|
DB_MIGRATION_PASSWORD: owner_test_password
|
||||||
|
DB_APP_USER: dhv2_app
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
working-directory: api-v3
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: '24'
|
||||||
|
cache: npm
|
||||||
|
cache-dependency-path: api-v3/package-lock.json
|
||||||
|
- name: PostgreSQL client
|
||||||
|
run: |
|
||||||
|
command -v psql >/dev/null || {
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install -y postgresql-client
|
||||||
|
}
|
||||||
|
- name: Prepare roles and extensions
|
||||||
|
env:
|
||||||
|
PGPASSWORD: owner_test_password
|
||||||
|
run: |
|
||||||
|
psql -v ON_ERROR_STOP=1 -h 127.0.0.1 -U dhv2_owner -d dhv2_ci <<'SQL'
|
||||||
|
CREATE EXTENSION IF NOT EXISTS postgis;
|
||||||
|
CREATE EXTENSION IF NOT EXISTS pgcrypto;
|
||||||
|
DO $$
|
||||||
|
BEGIN
|
||||||
|
IF NOT EXISTS (SELECT 1 FROM pg_roles WHERE rolname='dhv2_app') THEN
|
||||||
|
CREATE ROLE dhv2_app LOGIN PASSWORD 'app_test_password';
|
||||||
|
END IF;
|
||||||
|
END
|
||||||
|
$$;
|
||||||
|
GRANT CONNECT ON DATABASE dhv2_ci TO dhv2_app;
|
||||||
|
GRANT USAGE ON SCHEMA public TO dhv2_app;
|
||||||
|
|
||||||
|
-- ResetProductionOperationalData was an intentionally late, one-time
|
||||||
|
-- production operation with an older timestamp. On a clean CI database
|
||||||
|
-- it must be considered already executed; otherwise it would run before
|
||||||
|
-- structural migrations that existed in production when the reset ran.
|
||||||
|
CREATE TABLE IF NOT EXISTS typeorm_migrations (
|
||||||
|
id SERIAL PRIMARY KEY,
|
||||||
|
timestamp bigint NOT NULL,
|
||||||
|
name varchar NOT NULL
|
||||||
|
);
|
||||||
|
INSERT INTO typeorm_migrations (timestamp,name)
|
||||||
|
VALUES (1788652800000,'ResetProductionOperationalData1788652800000')
|
||||||
|
ON CONFLICT DO NOTHING;
|
||||||
|
SQL
|
||||||
|
- run: npm ci
|
||||||
|
- run: npm run build
|
||||||
|
- name: Run every pending migration
|
||||||
|
run: npm run migration:run
|
||||||
|
- name: Assert no pending migrations
|
||||||
|
run: npm run migration:show | tee /tmp/migrations.txt && grep -Fq 'Pending migrations: no' /tmp/migrations.txt
|
||||||
|
- name: Assert F2.2.1 reference import
|
||||||
|
env:
|
||||||
|
PGPASSWORD: owner_test_password
|
||||||
|
run: |
|
||||||
|
test "$(psql -At -h 127.0.0.1 -U dhv2_owner -d dhv2_ci -c "SELECT count(*) FROM assets a JOIN asset_types t ON t.id=a.asset_type_id WHERE a.data_origin='IMPORT' AND a.source_name='Tablas de yacimiento(1).xlsx' AND lower(t.code)='yacimiento'")" = "230"
|
||||||
|
test "$(psql -At -h 127.0.0.1 -U dhv2_owner -d dhv2_ci -c "SELECT count(*) FROM assets WHERE (operational_area_id IS NULL) <> (operator_company_id IS NULL)")" = "0"
|
||||||
|
test "$(psql -At -h 127.0.0.1 -U dhv2_owner -d dhv2_ci -c "SELECT count(*) FROM source_documents WHERE document_number IN ('DH-F221-TERRITORIO','DH-F221-APP')")" = "2"
|
||||||
|
|
||||||
web:
|
web:
|
||||||
name: WEB · typecheck, build
|
name: WEB · typecheck, build
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|||||||
Reference in New Issue
Block a user