Назад | Перейти на главную страницу

Gitlab CI - Развертывание через SSH на удаленный сервер

У меня есть среда Gitlab, использующая Gitlab CI, для нового проекта, чтобы свидетельствовать о скомпилированных файлах и копировать через rsync на рабочий сервер.

Машина, на которой выполняется сборка этих ресурсов, является образом докера (узел 6), но теперь мне нужно скопировать полученные файлы из этой команды контейнера Docker на сервер с помощью Linux ... Моя проблема заключается в подключении через ssh через rsync.

На данный момент у меня есть:

stages:
  - deploy

before_script:
    - npm i
    - npm run build

job_deploy:
  stage: deploy
  script:
    - ssh-keygen -t rsa -b 4096 -C '' -f ~/.ssh/deploy_rsa
    - ssh-keyscan -H 8.8.8.8 >> ~/.ssh/known_hosts
    - ssh-copy-id -i ~/.ssh/deploy_rsa.pub $SERVER_USER@8.8.8.8
    - rsync -avuz $CI_PROJECT_DIR/dist/ $SERVER_USER@8.8.8.8:/var/wwww/example.com
  only:
    - master

По этому я получаю:

    /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
    /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
    Permission denied, please try again.
    Permission denied, please try again.
    Permission denied (publickey,password).

ssh-copy-id запрашивает пароль. Ты можешь использовать sshpass -e и установите переменную среды SSHPASS в Gitlab.

Вы не передаете ключ ssh в rsync. Вы должны сделать что-то вроде этого, чтобы выполнить команду ssh для правильной идентификации ключа ssh:

rsync -avuz -e 'ssh -i ~/.ssh/deploy_rsa' $CI_PROJECT_DIR/dist/ $SERVER_USER@8.8.8.8:/var/wwww/example.com