commit 9d603036af7518f19b7b5dc4c190249eb217e888 Author: pashko Date: Tue Jun 18 14:20:51 2024 +0800 Add gitlab-ci.yml diff --git a/gitlab-ci.yml b/gitlab-ci.yml new file mode 100644 index 0000000..0ef19eb --- /dev/null +++ b/gitlab-ci.yml @@ -0,0 +1,118 @@ +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 + + +# ----------------------------------------------------------------------------------------- + + + + + + + + + + + + + + + +