У меня есть среда 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