но не совсем все понял. Просто для билда моего проекта есть компос файл, в нем описано какие контейнеры запустить, обычно я выполнял build/up этого компос файла и проект благополучно билдился. Но теперь я хочу сделать автоматический процес билда в гитлабе, и я не пойму подходит ли для меня вариант доккер раннера. Я создаю докер раннер, прописую в gitlab-ci.yml build/up своего компос файла и я так понимаю что получается какая-то шляпа, у меня контейнеры в контейнере создаются получается? Как это работает? Мне нужно содержимое компос файла перенести в gitla-ci.yml или что?
у тебя докер в докере запускается а там уже как опишешь процесс, у меня дальше идет билд докер файла и копирование но я все одним докером делаю, в докер ранере у меня запускается кастомный контейнер
--- services: - docker:dind variables: GIT_DEPTH: "1" stages: - build - docker - deploy build: stage: build image: microsoft/dotnet:2.0.7-sdk-2.1.200 cache: key: build-cache paths: - .nuget/ artifacts: paths: - docker/bin expire_in: 1 day script: - dotnet restore --packages .nuget/packages src - dotnet publish -c Release -o $PWD/docker/bin src/Blythe.Web/Blythe.Web.csproj docker: stage: docker image: docker:stable cache: {} dependencies: - build before_script: - echo "$CI_BUILD_TOKEN" | docker login --username gitlab-ci-token "$CI_REGISTRY" --password-stdin script: - docker build --file docker/Dockerfile --tag $CI_REGISTRY_IMAGE:latest --tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA ./docker - docker push $CI_REGISTRY_IMAGE:latest - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA only: - develop - master .ssh_key: &ssh_key before_script: - > if [[ -z "${SSH_PRIVATE_KEY}" ]]; then echo "ERR not set variable or not protect." exit 1 fi - apk add --no-cache --update openssh-client - eval $(ssh-agent -s) - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null - mkdir -p ~/.ssh - chmod 700 ~/.ssh - echo "$SSH_KNOWN_HOSTS" > ~/.ssh/known_hosts - chmod 644 ~/.ssh/known_hosts stage_server: stage: deploy image: docker:stable variables: SERVER: **** USER_SSH: **** PROJECT_DIR: '***' TYPE: 'stage' cache: {} dependencies: [] <<: *ssh_key script: - ssh $USER_SSH@$SERVER -t 'set -e ; mkdir -p '$PROJECT_DIR - scp ./docker/docker-compose-$TYPE.yml $USER_SSH@$SERVER:$PROJECT_DIR/docker-compose.yml - echo "IMAGE=$CI_REGISTRY_IMAGE:$CI_COMMIT_SHA" > ./.env_$TYPE - scp ./.env_$TYPE $USER_SSH@$SERVER:$PROJECT_DIR/.env - ssh $USER_SSH@$SERVER -t 'set -e ; cd '$PROJECT_DIR' ; docker-compose up -d --remove-orphans' only: variables: - $SSH_PRIVATE_KEY prod_server: stage: deploy image: docker:stable variables: SERVER: **** USER_SSH: **** PROJECT_DIR: '****' TYPE: 'prod' cache: {} dependencies: [] <<: *ssh_key script: - ssh $USER_SSH@$SERVER -t 'set -e ; mkdir -p '$PROJECT_DIR' ; /usr/local/bin/backup.py blythe blythe_postgres_1 blythe' - scp ./docker/docker-compose-$TYPE.yml $USER_SSH@$SERVER:$PROJECT_DIR/docker-compose.yml - echo "IMAGE=$CI_REGISTRY_IMAGE:$CI_COMMIT_SHA" > ./.env_$TYPE - scp ./.env_$TYPE $USER_SSH@$SERVER:$PROJECT_DIR/.env - ssh $USER_SSH@$SERVER -t 'set -e ; cd '$PROJECT_DIR' ; docker-compose up -d --remove-orphans ' only: - master when: manual ## vim: foldmethod=marker:tabstop=2:shiftwidth=2:softtabstop=2
Обсуждают сегодня