Подтвердить что ты не робот

Разверните контейнер докеров для цифровой капли из gitlab-ci

Итак, вот что я хочу сделать.

  • Нажмите, чтобы выполнить мастеринг в git
  • Имейте gitlab-ci услышать, что нажимают начало конвейера
  • Конвейер создает код и помещает контейнер докера в реестр gitlab.
  • Трубопровод входит в цифровую капельую воду через ssh
  • Конвейер вытаскивает контейнер докера из реестра gitlab
  • Конвейер запускает контейнер

Я могу подняться до шага 4 без проблем. Но шаг 4 просто терпит неудачу. Я пробовал подход ssh key:

Но это не сработало.

Итак, я попробовал простой текстовый пароль:

image: gitlab/dind:latest

before_script:
 - apt-get update -y && apt-get install sshpass

stages:
 - deploy

deploy:
  stage: deploy
  script:
    - sshpass -p "mypassword" ssh [email protected] 'echo $HOME'

эта версия просто выходит с помощью code 1 так

Псевдотерминал не будет выделен, потому что stdin не является терминалом.

ln: failed to create symbolic link '/sys/fs/cgroup/systemd/name=systemd': Operation not permitted
/usr/local/bin/wrapdocker: line 113:    54 Killed                  docker daemon $DOCKER_DAEMON_ARGS &> /var/log/docker.log
Timed out trying to connect to internal docker host. 

Есть ли лучший способ сделать это? Как я могу, по крайней мере, получить доступ к моей капле из среды сборки gitlab-ci?

4b9b3361

Ответ 1

Я только что ответил на этот связанный вопрос: Создать приложение реакции + Gitlab CI + капля Digital Ocean - конвейер завершился успешно, но контейнер Docker был удален сразу после

Вот решение, которое он использует для установки кредитов ssh:

before_script:
  ## Install ssh agent (so we can access the Digital Ocean Droplet) and run it.
  - apk update && apk add openssh-client
  - eval $(ssh-agent -s)

  ## Write the environment variable value to the agent store, create the ssh directory and give the right permissions to it.
  - echo "$SECRETS_DIGITAL_OCEAN_DROPLET_SSH_KEY" | ssh-add -
  - mkdir -p ~/.ssh
  - chmod 700 ~/.ssh

  ## Make sure that ssh will trust the new host, instead of asking
  - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config

И чтобы проверить:

- ssh -t ${SECRETS_DIGITAL_OCEAN_DROPLET_USER}@${SECRETS_DIGITAL_OCEAN_DROPLET_IP} 'echo $HOME'

Код кредита отправляется на https://stackoverflow.com/users/6655011/leonardo-sarmento-de-castro.