1、项目中找到 settings->ci/cd->runner->Set up a specific Runner manually

gitlab-ci 配置 服务器自动拉取_ssh


gitlab-ci 配置 服务器自动拉取_ssh_02


2、这里我的 gitlab-runner 已经装好过了,我们需要到 安装 gitlab 的服务器中执行下

gitlab-runner register

这个命令,这时弹出的容器中需要输入 url和token,我们使用1 中找到的
输入完以后再输入描述,自己看着写,这时还会要求输入 Enter tags for the runner
这里我理解的tags是后面 .gitlab-ci.yml 文件中一tags,他们一致时就会触发,然后进行自动化部署
这里我们输入 auto-upload-test 确定后又让你输入
Enter an executor: docker, docker-ssh, parallels, ssh, custom, shell, virtualbox, docker+machine, docker-ssh+machine, kubernetes:
这里我们会用到 shell,到时候让 gitlab-ci.yml 调用 sh 文件,我们就输入个
shell

Enter tags for the runner (comma-separated):
auto-upload-test
Registering runner... succeeded                     runner=eG2jn6vJ
Enter an executor: docker, docker-ssh, parallels, ssh, custom, shell, virtualbox, docker+machine, docker-ssh+machine, kubernetes:
shell

确定后就注册成功了,这时我们可以看见刚才设置的 runner

gitlab-ci 配置 服务器自动拉取_服务器_03

3、这时我们打开项目中的 .gitlab-ci.yml ,这里注意,前面有个点,这里我们需要把 tags修改成我们刚才设置的

script 是我们要执行的脚本路径
only 是只在 master分支上面的代码有变化时进行操作
tags 就是我们之前设置的

stages:
  - deploy
deploy:
    stage: deploy
    script:
      - /root/autoupload.sh
    only:
      - master
    tags:
      - auto-upload-test

不然会提示错误,并且执行不了

This job is stuck because you don't have any active runners online or available with any of these tags assigned to them: autopull

Go to project CI settings

这里的 autopull就是我们修改前的 tags

4、编写 sh 文件,并把 sh文件放到对应的位置中

#!/bin/bash
ssh root@192.168.*.* << ssh233
cd /usr/local/apache-tomcat-8.5.28/***
git pull origin master
pwd
ssh233

这里是利用免登录配置,把gitlab服务器上的 /root/.ssh/id_rsa.pub 里的内容复制到目标服务器中的 /root/.ssh/authorized_keys,就可以免密码登录了。
这里是在代码服务器上免密登录到目标服务器中,在目标服务器上面拉取代码

登录到对应要发布的服务器上,拉取 gitlab的代码,这样就能达到 git上传后能自动发布到对应的服务器上。这里的 * 号改成对应的ip地址与文件存放路径即可