Gitlab配置CI/CD 使用ssh完成自动化部署

一、创建ssh公钥免密登陆服务器

1. 执行ssh-keygen命令生成ssh密钥对

执行后~/.ssh/目录下,会新生成两个文件:id_rsa.pub和id_rsa

ssh-keygen

2. 执行ssh-copy-id命令将公钥传送到服务器

ssh-copy-id root@host

3. 测试免密码登陆

ssh root@host

二、添加变量

1. gitlab项目/群组 -> 设置 -> CI/CD -> 变量

SSH_USER = root
SSH_HOST = 服务器ip
SSH_KNOWN_HOSTS = 文件 ~/.ssh/known_host 有你服务器ip的一行
SSH_PRIVATE_KEY = 文件 ~/.ssh/id_rsa 里的内容

三、添加.gitlab-ci.yml

每次合并到master的提交都可以在 CI/CD->流水线中查看,更新代码到服务器

stage:
  - Deploy
Deplpy:
  stage: Deploy
  only:
    - master
  before_script:
    - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
    - eval $(ssh-agent -s)
    - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null
    - mkdir -p ~/.ssh
    - chmod 700 ~/.ssh
    - echo "$SSH_KNOWN_HOSTS" > ~/.ssh/known_hosts
    - chmod 644 ~/.ssh/known_hosts
  when: manual #手动确认之后才能构建
  script:
    - pwd
    - ls -l
    #主要同步代码的命令,可以在这里排除一些文件,同步权限,配置服务器的项目路径等。重点参考rsync命令的用法。
    - rsync -aztp --exclude ".gitlab-ci.yml" ./ $SSH_USER@$SSH_HOST:/data/wwwroot/laravel

四、记得配置runner


版权声明:本文为Hannnnnnnnnnnnn原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。