Skip to content
gitlab-ci.yml 2.96 KiB
Newer Older
# VARIABLES
variables:
  DOCKER_BUILDKIT: 1
  DOCKER_DRIVER: overlay2
  DOCKER_HOST: tcp://localhost:2375
  DOCKER_TLS_CERTDIR: ""
Дмитрий Сафронов's avatar
oO  
Дмитрий Сафронов committed
  GIT_URL:
    value: ""
    description: "ОБЯЗАТЕЛЬНАЯ ПЕРЕМЕННАЯ: http(s) адрес репозитория системной конфигурации"
  GIT_LOGIN:
    value: ""
    description: "НЕобязательная переменная: логин репозитория системной конфигурации"
  GIT_PASSWORD:
    value: ""
    description: "НЕобязательная переменная: пароль репозитория системной конфигурации"

##########################################################################################################

## PIPELINE DEFINITION
stages:
  - check
  - deploy

##########################################################################################################

### COMMON SECTION
.common: &common
  image: registry.cyberbrain.pw/ansible/ansible
  before_script:
    - eval $(ssh-agent -s); echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null
    - mkdir -p ~/.ssh && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
    - chmod -R o-w ../
    - export INVENTORY_DIRECTORY="`pwd`"
    - mkdir -p /tmp/checkout
    - git config --global credential.helper store
    - echo "https://${GIT_LOGIN}:${GIT_PASSWORD}@$(echo ${GIT_URL} | sed -r 's#([^/])/[^/].*#\1#' | sed -e 's|https://||g')" > ~/.git-credentials

##########################################################################################################

### CHECK SECTION
check:
  <<: *common
  stage: check
  variables:
    GIT_DEPTH: 1
    ANSIBLE_FORCE_COLOR: "True"
    ANSIBLE_HOST_KEY_CHECKING: "False"
  only:
    refs:
      - trunk
    variables:
      - $GIT_URL =~ /^\S+$/
  script:
    - echo "Checking configuration [${GIT_URL}] with parameters [${PARAMETERS}]"
    - git clone "${GIT_URL}" /tmp/checkout
    - cd /tmp/checkout
    - ls -la
Дмитрий Сафронов's avatar
Дмитрий Сафронов committed
    - sh setup.sh ${PARAMETERS} --check -u ${USERNAME:-maintenance} -i "${INVENTORY_DIRECTORY}/inventory.ini"
Дмитрий Сафронов's avatar
Дмитрий Сафронов committed
    - sh run.sh ${PARAMETERS} --check -u ${USERNAME:-maintenance} -i "${INVENTORY_DIRECTORY}/inventory.ini" "${PLAYBOOK:-deploy.yml}"

##########################################################################################################

### DEPLOY SECTION
deploy:
  <<: *common
  stage: deploy
  variables:
    GIT_DEPTH: 1
    ANSIBLE_FORCE_COLOR: "True"
    ANSIBLE_HOST_KEY_CHECKING: "False"
    ANSIBLE_STDOUT_CALLBACK: "actionable"
  only:
    refs:
      - master
    variables:
      - $GIT_URL =~ /^\S+$/
  script:
    - echo "Deploying configuration [${GIT_URL}] with parameters [${PARAMETERS}]"
    - git clone "${GIT_URL}" /tmp/checkout
    - cd /tmp/checkout
Дмитрий Сафронов's avatar
Дмитрий Сафронов committed
    - sh setup.sh ${PARAMETERS} -u ${USERNAME:-maintenance} -i "${INVENTORY_DIRECTORY}/inventory.ini"
Дмитрий Сафронов's avatar
Дмитрий Сафронов committed
    - sh run.sh ${PARAMETERS} -u ${USERNAME:-maintenance} -i "${INVENTORY_DIRECTORY}/inventory.ini" "${PLAYBOOK:-deploy.yml}"