Блок -схема
1. Создать Codedeploy
- Перейдите по ссылке, чтобы создать функцию Lambda, которая запускается с помощью события уведомления S3, а затем создайте развертывание кода.
- Задача трубопровода Gitlab будет продвигать deploy.zip до S3, так что функция Lambda создаст развертывание кода для запуска сценария установки в целевом экземпляре с помощью CodeDeploy-Agent
2. Gitlab Dipeline Works для создания и развертывания
Image_version.txt
упакован вDeploy.zip
Для CodedePloy получите версию для развертывания- Структура Codedeploy:
- Приложение: service_name (приложение, API, MyWeb и т. Д.)
- Группа развертывания: branch_name (функция, разработка, Hotfix, Master, Integration и т. Д.) , каждый из них будет иметь одинаковый или другой целевой экземпляр
- .gitlab-ci.yml
build: stage: build script: - echo compile and package - echo tag image version - branch_name=$(echo $CI_COMMIT_REF_NAME | sed 's/\//-/g') - version="$branch_name-$CI_PIPELINE_ID" - echo login ECR and push image - eval $(aws ecr get-login --no-include-email --region ap-northeast-1) - docker tag app:latest myimage:${version} - docker push myimage:${version} only: refs: - feature - develop - integration - hotfix - master changes: - src/**/* tags: - build-runner deploy: stage: deploy script: - echo "Deploy app" - branch_name=$(echo $CI_COMMIT_REF_NAME | sed 's/\//-/g') - version="$branch_name-$CI_PIPELINE_ID" - echo $version > codedeploy/image_version.txt - cd codedeploy - zip -r deploy.zip appspec.yml image_version.txt scripts - aws s3 cp deploy.zip s3://codedeploy/automation/${CI_COMMIT_REF_NAME}/app/deploy.zip --metadata x-amz-meta-application-name=app,x-amz-meta-deploymentgroup-name=${obj} only: refs: - feature - develop - integration - hotfix - master changes: - src/**/* tags: - deploy-runner
3. Установить скрипт
- Сценарий запускается в целевом экземпляре Codedeploy-Agent
УСТАНОВИТЬ.sh
$ cat codedeploy/scripts/install.sh #!/bin/bash # Script is run on instance # Get app version dir=$(dirname "$0") version=$(cat ${dir}/../image_version.txt) # Tracking version OPS_DIR="/ect/ops" export APP_VERSION=${version} # Compose up docker-compose up -d app
4. appspec.yml
version: 0.0 os: linux hooks: BeforeInstall: - location: scripts/install.sh timeout: 300 runas: root
🌠 Блог · GitHub · Web · LinkedIn · Группа · Страница · Twitter 🌠
Ref: https://github.com/vumdao/codedeploy
Оригинал: «https://dev.to/vumdao/gitlab-pipeline-with-aws-codedeploy-30cl»