Использование SSH в задании gitlab для перезапуска Docker-контейнера - PullRequest
0 голосов
/ 18 сентября 2018

Я пытаюсь добавить некоторое непрерывное развертывание для API машинописного текста, созданного с помощью узла и mongodb.

Я хотел бы сделать это через экземпляр gitlab, который у меня уже есть:

Runnerconfig (/etc/gitlab-runner/config.toml):

[[runners]]
  name = "runner"
  url = "https://git.[DOMAIN].[EXT]"
  token = "[ID]"
  executor = "docker"
  [runners.docker]
    tls_verify = false
    image = "mhart/alpine-node:6.5"
    privileged = false
    disable_cache = false
    volumes = ["/cache"]
    shm_size = 0
  [runners.cache]

Итак, моя работа по развертыванию выглядит следующим образом:

Deployment_preprod:
  stage: Deploy
  before_script:
    # https://docs.gitlab.com/ee/ci/ssh_keys/
    - 'which ssh-agent || ( apk add --no-cache --virtual openssh-client )'
    - eval $(ssh-agent -s)
    - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null
    - mkdir -p ~/.ssh
    - echo "$SSH_KNOWN_HOSTS" > ~/.ssh/known_hosts
    - chmod 644 ~/.ssh/known_hosts
    - chmod 700 ~/.ssh
  script:
    - scp -r dist  user@[IP]:/home/[user]/preprod-back
    - ssh -tt user@[IP] cd /home/[user]/preprod-back && yarn run doc && docker-compose restart
  environment:
    name: preprod
    url: https://preprod.api.[DOMAIN].[EXT]
  only:
    - develop

Вопрос: эта работасбой на /bin/sh: eval: line 91: docker-compose: not found, что меня удивляет, так как запуск docker-compose [что угодно] просто отлично работает на стороне сервера, когда я захожу на сервер через ssh.

1 Ответ

0 голосов
/ 19 сентября 2018

&& сбивает вас с толку.Вы должны заключить в кавычки всю удаленную команду.

script:
  - scp -r dist  user@[IP]:/home/[user]/preprod-back
  - ssh -tt user@[IP] "cd /home/[user]/preprod-back && yarn run doc && docker-compose restart"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...