GitLab-CI通过ssh进行自动部署

需求

通过gitlab-ci实现文件的自动部署

实现过程

文档托管在gitlab上, 每次代码更新, 会自动出发gitlab-ci构建
在构建脚本中, 通过ssh 登录远程服务器执行git拉取文档的命令

过程

首先需要在服务器上生成ssh证书

注意该证书的用户必须与ssh远程登录的用户一样, 例如我们的用户名是root

将公钥添加到gitlab上, 以便于该用于可以拉取代码

CI/CD Piplines中设置 Secret Variables, 包括 DEPLOY_SERVERSSH_PRIVATE_KEY

其中 SSH_PRIVATE_KEY 的内容是服务器上的私钥, DEPLOY_SERVER 是服务器地址

编写 .gitlab-ci.yml 文件, 注入密钥, 通过ssh执行远程命令

完整代码

# 使用alpine镜像, 该镜像很少,只有几兆
image: alpine
stages:
    - deploy
before_script:
    # 预先装 ssh-agent
    - 'which ssh-agent || ( apk update && apk add openssh-client)'
    # 启动服务
    - eval $(ssh-agent -s)
    # 将私钥写入deploy.key 文件
    - echo "$SSH_PRIVATE_KEY" > deploy.key
    # 配置较低权限
    - chmod 0600 deploy.key
    # 注入密钥
    - ssh-add deploy.key
    - mkdir -p ~/.ssh    
    - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
 
release-doc:
    stage: deploy
    script:
        # 连接远程服务器并执行拉取代码的命令
        - ssh root@$DEPLOY_SERVER "cd /path/to/wiki && git pull origin master"
    only:
        - master
    environment:
        name: production
        url: http://$DEPLOY_SERVER
        

相关文档

Using SSH keys

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

少湖说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值