самодостаточный реестр gitlab CI / CD для отправки в службу ECS - PullRequest
0 голосов
/ 05 января 2019

Я использую самодостаточный gitlab на Ubuntu 16.04. Я успешно создал ECS и сервисы. теперь я хочу развернуть свой микросервис в aws ecs. Я не знаю, как отправить свой личный образ докера реестра в ECS. У меня есть файл gitlab-ci.yml:

image: docker:latest
services:
  - docker:dind
stages:
- build
- package
- deploy
variables:
GRADLE_OPTS: "-Dorg.gradle.daemon=false"
DOCKER_DRIVER: overlay
before_script:
#  - echo `pwd` # debug
#  - echo "$CI_BUILD_NAME, $CI_BUILD_REF_NAME $CI_BUILD_STAGE" # debug
- export GRADLE_USER_HOME=`pwd`/.gradle
- export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
- chmod +x gradlew

 cache:
 paths:
 - .gradle/wrapper
 - .gradle/caches

build:
 stage: build
 image: openjdk:8-jdk
tags:
 - tag
script:
 - ./gradlew assemble
artifacts:
 paths:
   - build/libs/*.jar
 expire_in: 1 week
 only:
- master

 docker-build:
 stage: package
tags:
- tag
script:
- docker build -t registry.gitlab.example.com/root/abc:latest .
- docker login registry.gitlab.example.com -u gitlab-ci-token -p xyz
- docker push registry.gitlab.example.com/root/abc:latest
deploy:
 tags:
  - tag
 script:

after_script:
 - echo "End CI"

URL внешнего реестра в файле gitlab.rb:

registry.gitlab.example.com

но как сделать это в развертывании ecs? У меня есть публичный IP-адрес компьютера с Ubuntu.

1 Ответ

0 голосов
/ 06 января 2019

Возможно, вы получаете возможность использовать ECR с ECS. Чтобы перейти на AWS ECS, вам нужен URL; выглядит примерно так: xxxxxxxxxxxx.dkr.ecr.your-region.amazonaws.com/url. Затем вы можете сделать что-то вроде следующего в вашем gitlab-ci.yml:

variables:
  REPOSITORY_URL: your_url

build:
  stage: build
  script:
    - $(aws ecr get-login --no-include-email --region us-east-1)
    - docker build -t $REPOSITORY_URL .
    - docker push $REPOSITORY_URL
  tags:
    - docker

Не забудьте сделать эти переменные в настройках (AWS_ACCESS_KEY_ID & AWS_SECRET_ACCESS_KEY). Вы также можете установить aws-cli в before-script

...