stages: - cleanup.views - diff.tables - diff.views # ----------------------------------------------------------------------------------------- .functions: &functions | function isUpToDateDiffTables() { status=$(mvn liquibase:status -Denv=diff.tables) if [[ $status == *'is up to date'* ]]; then echo "database is already up to date" & exit 0 fi; } # ----------------------------------------------------------------------------------------- .ssh_key_job: &ssh_key_job - eval $(ssh-agent -s) - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - - mkdir -p ~/.ssh - chmod 700 ~/.ssh - cp "$SSH_KNOWN_HOSTS" ~/.ssh/known_hosts - chmod 644 ~/.ssh/known_hosts - echo "$SSH_PRIVATE_KEY" >> ~/.ssh/id_rsa # ----------------------------------------------------------------------------------------- cleanup.views-job: stage: cleanup.views before_script: - *ssh_key_job script: - mvn liquibase:diff -Denv=cleanup.views -X > cleanup.views/liquibase_log/liquibase_log_diff.view-${CI_JOB_NAME}_${CI_PIPLINE_ID}.log - mvn liquibase:update -Denv=cleanup.views rules: - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' when: manual artifacts: paths: - cleanup.views/changelog-dir/diff.views.changelog/view-diifChangeLog-${CI_JOB_NAME}_${CI_PIPLINE_ID}.sql - cleanup.views/liquibase_log/liquibase_log_diff.view-${CI_JOB_NAME}_${CI_PIPLINE_ID}.log expire_in: 4 week # ----------------------------------------------------------------------------------------- diff.tables-job: stage: diff.tables before_script: - *ssh_key_job - *functions script: - mvn liquibase:diff -Denv=diff.tables -X > diff.tables/liquibase_log/liquibase_log_diff-$(date +%Y%m%d%H%M%S).log - sed -i 's/JSONB DEFAULT \x7B\x7D/\jsonb DEFAULT \x27\x7B\x7D\x27/g' diff.tables/changelog-dir/diff-changelog/*.sql - sed -i 's/JSONB DEFAULT \[\]/\jsonb DEFAULT \x27\[\]\x27/g' diff.tables/changelog-dir/diff-changelog/*.sql - sed -i 's/\x220001-01-01T00:00:00+00:00\x22/\x27\[\x220001-01-01T00:00:00+00:00\x22\]\x27/g' diff.tables/changelog-dir/diff-changelog/*.sql - sed -i 's/JSONB DEFAULT \x7B\x7D/\jsonb DEFAULT \x27\x7B\x7D\x27\x3A\x3Ajsonb/g' diff.tables/changelog-dir/diff-changelog/*.sql - sed -i 's/JSONB DEFAULT \[\]/\jsonb DEFAULT \x27\[\]\x27\x3A\x3Ajsonb/g' diff.tables/changelog-dir/diff-changelog/*.sql - sed -i 's/\x3F/\x3F\x3F/g' diff.tables/changelog-dir/diff-changelog/*.sql - mv diff.tables/changelog-dir/diff-changelog/*.sql diff.tables/changelog-dir/update-changelog/ - mvn liquibase:update -Denv=diff.tables -X > diff.tables/liquibase_log/liquibase_log_update.tables-${CI_JOB_NAME}_${CI_PIPLINE_ID}.log - mvn liquibase:history -Denv=diff.tables > diff.tables/liquibase_log/liquibase_log_history.tables-${CI_JOB_NAME}_${CI_PIPLINE_ID}.log rules: - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' when: manual artifacts: paths: - diff.tables/changelog-dir/diff.changelog/tables-diffChangeLog-${CI_JOB_NAME}_${CI_PIPLINE_ID}.sql - diff.tables/liquibase_log/liquibase_log_history.tables-${CI_JOB_NAME}_${CI_PIPLINE_ID}.log - diff.tables/liquibase_log/liquibase_log_history.tables-${CI_JOB_NAME}_${CI_PIPLINE_ID}.log expire_in: 4 week # ----------------------------------------------------------------------------------------- diff.views-job: stage: diff.views before_script: - *ssh_key_job script: - mvn liquibase:diff -Denv=diff.views -X > diff.views/liquibase_log/liquibase_log_diff.views-${CI_JOB_NAME}_${CI_PIPLINE_ID}.log - mvn liquibase:history -Denv=diff.views > diff.views/liquibase_log/liquibase_log_history.views-${CI_JOB_NAME}_${CI_PIPLINE_ID}.log - sed -i 's/JSONB DEFAULT \x7B\x7D/\jsonb DEFAULT \x27\x7B\x7D\x27/g' diff.views/changelog-dir/diff-changelog/*.sql - sed -i 's/JSONB DEFAULT \[\]/\jsonb DEFAULT \x27\[\]\x27/g' diff.views/changelog-dir/diff-changelog/*.sql - sed -i 's/\x220001-01-01T00:00:00+00:00\x22/\x27\[\x220001-01-01T00:00:00+00:00\x22\]\x27/g' diff.views/changelog-dir/diff-changelog/*.sql - sed -i 's/JSONB DEFAULT \x7B\x7D/\jsonb DEFAULT \x27\x7B\x7D\x27\x3A\x3Ajsonb/g' diff.views/changelog-dir/diff-changelog/*.sql - sed -i 's/JSONB DEFAULT \[\]/\jsonb DEFAULT \x27\[\]\x27\x3A\x3Ajsonb/g' diff.views/changelog-dir/diff-changelog/*.sql - sed -i 's/\x3F/\x3F\x3F/g' diff.views/changelog-dir/diff-changelog/*.sql - mv diff.views/changelog-dir/diff-changelog/*.sql diff.views/changelog-dir/update-changelog/ - mvn liquibase:update -Denv=diff.views -X > diff.views/liquibase_log/liquibase_log_update.views-${CI_JOB_NAME}_${CI_PIPLINE_ID}.log - mvn liquibase:history -Denv=diff.views > diff.views/liquibase_log/liquibase_log_history.views-${CI_JOB_NAME}_${CI_PIPLINE_ID}.log - rm -rf diff.views/changelog-dir/update-changelog/*.sql rules: - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' when: manual artifacts: paths: - diff.views/liquibase_log/liquibase_log_diff.views-${CI_JOB_NAME}_${CI_PIPLINE_ID}.log - diff.views/liquibase_log/liquibase_log_update.views-${CI_JOB_NAME}_${CI_PIPLINE_ID}.log - diff.views/liquibase_log/liquibase_log_history.views-${CI_JOB_NAME}_${CI_PIPLINE_ID}.log expire_in: 4 week # -----------------------------------------------------------------------------------------