Рубрики
Uncategorized

Гитлаб трубопровод с AWS Codedeploy

Поточная схема 1. Создайте CodeDeploy, перейдите по ссылке, чтобы создать функцию лямбды WH … Tagged with Gitlab, Codedeploy, CICD, DevOps.

Блок -схема

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»