Docker 使用ssh密钥在服务器上运行作业
我想在此服务器上部署serverBNP-prod1 我试着在下面写这段代码。使用此代码,我应该在哪里添加ssh本地密钥 多谢各位Docker 使用ssh密钥在服务器上运行作业,docker,ssh,gitlab-ci,Docker,Ssh,Gitlab Ci,我想在此服务器上部署serverBNP-prod1 我试着在下面写这段代码。使用此代码,我应该在哪里添加ssh本地密钥 多谢各位 job_deploy_prod: stage: deploy only: - master - tags when: manual environment: name: prod variables: SERVER: serverBNP-prod1 SSH_OPTS: -p 22 -l udoc -o BatchMode=true -o StrictHostKey
job_deploy_prod:
stage: deploy
only:
- master
- tags
when: manual
environment:
name: prod
variables:
SERVER: serverBNP-prod1
SSH_OPTS: -p 22 -l udoc -o BatchMode=true -o StrictHostKeyChecking=no
script:
- export VERSION=$(fgrep -m 1 -w version pom.xml | sed -re 's/^.*>(.*)<.*$/\1/')
- ssh $SSH_OPTS -i $HOME/.ssh/id_rsa $SERVER "docker login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.gitlab.com"
- ssh $SSH_OPTS -i $HOME/.ssh/id_rsa $SERVER "docker rm -f proj"
- ssh $SSH_OPTS -i $HOME/.ssh/id_rsa $SERVER "docker pull registry.gitlab.com/bnp/proj:$VERSION"
- ssh $SSH_OPTS -i $HOME/.ssh/id_rsa $SERVER "docker run -d -p 8080:8080 -e 'SPRING_PROFILES_ACTIVE=prod' -v /etc/localtime:/etc/localtime -v /etc/timezone:/etc/timezone --name proj registry.gitlab.com/bnp/proj:$VERSION"
job\u deploy\u prod:
阶段:部署
仅:
-主人
-标签
时间:手动
环境:
姓名:prod
变量:
服务器:serverBNP-prod1
SSH\u选项:-p 22-l udoc-o BatchMode=true-o StrictHostKeyChecking=no
脚本:
-导出版本=$(fgrep-m1-w VERSION pom.xml | sed-re的/^.*>(*)您可以:
- 使用类型为
文件
的设置
/CI-CD
/变量
,将私钥数据放入其中,或
- 如果您只有服务器的用户名和密码,则可以使用“sshpass”命令,并在CI-CD变量部分提供
sshpass
环境变量
有关如何使用GitLab CI/CD环境变量(文件类型、安全性等)的更多详细信息,请参见:
您可以屏蔽变量,但要注意,与Jenkins相反,当用户在Gitlab中有足够的权限查看/编辑设置时,无法删除“显示值”按钮,因此您必须仔细选择您的项目权限,例如,允许其他人拥有开发人员权限,但没有维护人员权限(允许编辑设置)