Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .no-web-no-mr: &no-web-no-mr
- if: '$CI_PIPELINE_SOURCE == "web" || $CI_PIPELINE_SOURCE == "merge_request_event"'
- when: never
- .no-mr: &no-mr
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
- when: never
- workflow:
- # convert master branch name to base saltenv
- rules:
- - if: $CI_COMMIT_BRANCH == "master"
- variables:
- SALTENV: saltenv=base pillarenv=base
- - variables:
- SALTENV: saltenv="$CI_COMMIT_BRANCH" pillarenv="$CI_COMMIT_BRANCH"
- - <<: *no-mr
- .manual-without-duplicate-pipelines:
- rules:
- - <<: *no-mr
- - when: manual
- # let the jobs be skipped, since rules force allow_failure to be false
- # https://docs.gitlab.com/13.12/ee/ci/yaml/index.html#allow_failure
- allow_failure: true
- .salt-master:
- image: docker:latest
- extends:
- - .manual-without-duplicate-pipelines
- tags:
- - devops-ci-master.build.company.ru
- # before_script:
- # - sleep 10; echo "Timer for salt-master gitfs git pull scheduler"
- variables:
- MASTER: docker exec -i devops-ci-master
- dependencies: []
- #
- # Autosyncing pillars & salt modules to ALL servers
- saltutil.sync_all to ALL servers:
- stage: salt-master-last-stage
- rules:
- - <<: *no-web-no-mr
- - if: '$CI_COMMIT_REF_NAME == "master" && $CI_PIPELINE_SOURCE != "trigger"'
- changes:
- - pillar/**/*
- - salt/_*/*
- when: on_success
- allow_failure: true
- extends:
- - .salt-master
- script:
- - $MASTER salt -C "*" saltutil.sync_all || true
- branch $COMMAND on $TARGET:
- stage: salt-master
- extends:
- - .salt-master
- script:
- - $MASTER salt -C "$TARGET" saltutil.refresh_grains || true
- - $MASTER salt -C "$TARGET" saltutil.refresh_pillar || true
- - echo salt -C "$TARGET" $COMMAND $SALTENV
- - $MASTER salt -C "$TARGET" $COMMAND $SALTENV
- branch async $COMMAND on $TARGET:
- stage: salt-master
- extends:
- - .salt-master
- script:
- - echo salt -C "$TARGET" $COMMAND $SALTENV
- - jid=$($MASTER salt -C "$TARGET" $COMMAND $SALTENV --async | cut -d' ' -f6)
- - while [ "$($MASTER salt-run jobs.active | grep $jid)" != '' ]; do echo waiting executing $jid command':' salt -C "$TARGET" $COMMAND $SALTENV; done;
- - $MASTER salt-run jobs.lookup_jid jid=$jid missing=False returned=True
- - $MASTER salt-run jobs.lookup_jid jid=$jid missing=True returned=False
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement