Примеры yml для Gitlab CI/CD
В этом примере образ проекта загружается в приватный docker regestry (для дальнейшего деплоя).
delivery-job:
stage: delivery
image: docker
script:
- docker login -p $DEPLOY_PASSWORD -u $DEPLOY_USER $ZS_DOCKER_REG_HOST
- docker images
- docker tag project_name $ZS_DOCKER_REG_HOST/project_name:$CI_COMMIT_REF_SLUG
- docker push $ZS_DOCKER_REG_HOST/project_name:$CI_COMMIT_REF_SLUG
only:
- branches
except:
- master
tags:
- docker
when: manual
delivery-job:
stage: delivery
image: docker
script:
- docker login -p $DEPLOY_PASSWORD -u $DEPLOY_USER $ZS_DOCKER_REG_HOST
- docker images
- docker tag project_name $ZS_DOCKER_REG_HOST/project_name:$CI_COMMIT_REF_SLUG
- docker push $ZS_DOCKER_REG_HOST/project_name:$CI_COMMIT_REF_SLUG
only:
- branches
except:
- master
tags:
- docker
when: manual
delivery-job: stage: delivery image: docker script: - docker login -p $DEPLOY_PASSWORD -u $DEPLOY_USER $ZS_DOCKER_REG_HOST - docker images - docker tag project_name $ZS_DOCKER_REG_HOST/project_name:$CI_COMMIT_REF_SLUG - docker push $ZS_DOCKER_REG_HOST/project_name:$CI_COMMIT_REF_SLUG only: - branches except: - master tags: - docker when: manual
Пример запуска ansible сценария для деплоя:
deploy-stage:
stage: deploy
image: romandockerxxx/zs:1
before_script:
- ansible --version
#- ansible-lint --version
- mkdir secret
- echo "$ANSIBLE_SSHKEY_PRIVATE" > secret/ansible.key ## import ansible ssh key
- chmod 400 secret/ansible.key
- export ANSIBLE_HOST_KEY_CHECKING=False
script:
- ansible-playbook --private-key secret/ansible.key -i .ansible/hosts.yml .ansible/deploy-stage.yml
# environment:
# name: staging/${CI_COMMIT_REF_SLUG}
# url: https://backend-${CI_COMMIT_REF_SLUG}.hostname.com
# on_stop: destroy-stage
# auto_stop_in: 1 week
when: manual
only:
- branches
except:
- master
tags:
- docker
deploy-stage:
stage: deploy
image: romandockerxxx/zs:1
before_script:
- ansible --version
#- ansible-lint --version
- mkdir secret
- echo "$ANSIBLE_SSHKEY_PRIVATE" > secret/ansible.key ## import ansible ssh key
- chmod 400 secret/ansible.key
- export ANSIBLE_HOST_KEY_CHECKING=False
script:
- ansible-playbook --private-key secret/ansible.key -i .ansible/hosts.yml .ansible/deploy-stage.yml
# environment:
# name: staging/${CI_COMMIT_REF_SLUG}
# url: https://backend-${CI_COMMIT_REF_SLUG}.hostname.com
# on_stop: destroy-stage
# auto_stop_in: 1 week
when: manual
only:
- branches
except:
- master
tags:
- docker
deploy-stage: stage: deploy image: romandockerxxx/zs:1 before_script: - ansible --version #- ansible-lint --version - mkdir secret - echo "$ANSIBLE_SSHKEY_PRIVATE" > secret/ansible.key ## import ansible ssh key - chmod 400 secret/ansible.key - export ANSIBLE_HOST_KEY_CHECKING=False script: - ansible-playbook --private-key secret/ansible.key -i .ansible/hosts.yml .ansible/deploy-stage.yml # environment: # name: staging/${CI_COMMIT_REF_SLUG} # url: https://backend-${CI_COMMIT_REF_SLUG}.hostname.com # on_stop: destroy-stage # auto_stop_in: 1 week when: manual only: - branches except: - master tags: - docker
Запуск джобы при изменении только определённых файлов и для определённых веток:
only:
changes:
- '*.js'
- '*.css'
- '*.less'
refs:
- develop
- master
only:
changes:
- '*.js'
- '*.css'
- '*.less'
refs:
- develop
- master
only: changes: - '*.js' - '*.css' - '*.less' refs: - develop - master