如何在docker使用的运行程序中使用.gitlab-ci.yml进行部署?

时间:2019-08-28 16:29:06

标签: deployment gitlab runner

我使用本教程https://frenchco.de/article/Add-un-Runner-Gitlab-CE-Docker

安装了docker和gitlab +跑步程序

问题是,当我尝试修改.gitlab-ci.yml以在主机上进行部署时,我做不到。

我的.yml:

stages:
  - deploy

deploy_develop:
   stage: deploy
   before_script:
     - apk update && apk add bash && apk add openssh && apk add rsync
     - apk add --no-cache bash
   script:
     - mkdir -p ~/.ssh
     - ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa
     - cat ~/.ssh/id_rsa.pub
     - rsync -hrvz ~/ root@172.16.1.97:~/web_dev/www/test/
   environment:
     name: develop

问题是在ssh或rsync中,我的工作中总是出现相同的错误消息:

$ rsync -hrvz ~/ root@172.16.1.97:~/web_dev/www/test/
Host key verification failed.
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(226) [sender=3.1.3]

我试图在主机中复制ssh id_rsa和id_rsa.pub,这是相同的。

当然可以,因为我的跑步者在码头上可以吗?这很奇怪,因为自从.yml执行以来,我设法对主机(172.16.1.97)进行ping操作。一个主意有我的问题吗?

1 个答案:

答案 0 :(得分:0)

您好像没有将公共密钥添加到部署用户的主机服务器上的authorized_keys中?

例如,我使用gitlab-ci部署我的Web应用程序,因此我在主机上添加了用户gitlab,并将公钥添加到authorized_keys,然后可以与{ {1}}到该服务器。

我的ssh gitlab@IP -i PRIVATE_KEY如下:

gitlab-ci.yml

我在其中将私钥的内容作为变量添加到了gitlab-instance中。 (请参阅https://docs.gitlab.com/ee/ci/variables/

deploy-app: stage: deploy image: ubuntu before_script: - apt-get update -qq - 'which ssh-agent || ( apt-get install -qq openssh-client )' - eval $(ssh-agent -s) - ssh-add <(cat "$DEPLOY_SERVER_PRIVATE_KEY") - mkdir -p ~/.ssh - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config' - chmod 755 ./deploy.sh script: - ./deploy.sh 看起来像这样:

deploy.sh

这可能有帮助吗?对于我来说,它工作正常,并且在这种特殊情况下,scp / ssh会给出比rsync更直观的错误消息。