131天前2020-06-18 13:33:41 |    抢沙发  184 
最近公司团队扩大,开始使用协同开发了,于是引入了gitlab版本控制,但是每次更新代码后都要手动去同步到内部测试环境,这是一个比较麻烦的事情,于是研究了一下gitlab的CI/CD功能。折腾出来了不敢独享于是贡献出来和大家一起分享。

CI/CD

1,在被更新机器上更新机器上的git版本

#安装源
yum install http://opensource.wandisco.com/centos/7/git/x86_64/wandisco-git-release-7-2.noarch.rpm
#安装git
yum install git
#更新git
yum update git
2,在被更新机器上安装 gitlab-runner

Gitlab Runner 镜像使用帮助
注意: gitlab-runner 镜像支持 x86-64 和 ARM64(aarch64) 架构

Debian/Ubuntu 用户
首先信任 GitLab 的 GPG 公钥:

curl https://packages.gitlab.com/gpg.key 2> /dev/null | sudo apt-key add - &>/dev/null
再选择你的 Debian/Ubuntu 版本,文本框中内容写进 /etc/apt/sources.list.d/gitlab-runner.list

你的Debian/Ubuntu版本:  

deb http://mirrors.tuna.tsinghua.edu.cn/gitlab-runner/debian buster main
安装 gitlab-runner:
sudo apt-get update
sudo apt-get install gitlab-runner


CentOS/RHEL

新建 /etc/yum.repos.d/gitlab-runner.repo

vim /etc/yum.repos.d/gitlab-runner.repo
内容如下:
[gitlab-runner]
name=gitlab-runner
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-runner/yum/el$releasever-$basearch/
repo_gpgcheck=0
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/gpg.key

再执行

sudo yum makecache
sudo yum install gitlab-runner
安装后后我们就要进行注册了:

gitlab-ci-multi-runner register
注册的时候会有互动,如下:

#输入gitf服务器的地址:(可在咱们的项目CI/CD里面找到:设置---CI/CD---Runner 往下翻可以看到手动设置specific Runner中包含 地址和token)
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
http://git.xxx.com/

#输入token(可在咱们的项目CI/CD里面找到:设置---CI/CD---Runner 往下翻可以看到手动设置specific Runner中包含 地址和token)
Please enter the gitlab-ci token for this runner:
tuabbbbbbbbMRn

#输入你的客户端描述,这个可以自己随意命名,可以是服务器名称或者项目名称都可以
Please enter the gitlab-ci description for this runner:
[centos-server]: lan-server-runner

#这是输入一个标签名称(可以随意不重要)
Please enter the gitlab-ci tags for this runner (comma separated):
my-release
#输入要runner的执行方式,我们这里直接使用shell方式去更新;所有输入shell
Registering runner... succeeded                     runner=tuaBMuyR
Please enter the executor: docker+machine, custom, docker, docker-ssh, parallels, shell, ssh, virtualbox, docker-ssh+machine, kubernetes:
shell
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!

gitlab runner位置图:

gitlab

url和token位置图:

url和token位置图

3,完成以后我们就要对服务进行注册了(这一步其实可以不用做因为我们是yum安装的,所有这一步安装的时候就已经自动做掉了);

gitlab-ci-multi-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
PS:/home/gitlab-runner是咱们的 gitlab-runner的家目录,也是脚本执行的目录。

4,启动服务

gitlab-ci-multi-runner start
到这里我们在gitlab的CI/CD中应该就能看到注册的gitlab-runner了;

如图:

注册

5,然后我们要在被执行脚本的服务器上进行ssh免登陆操作了。

su gitlab-runner
mkdir ~/.ssh
cd~/.ssh
ssh-keygen  #(然后 一路回车)
#查看公钥:
cat id_rsa.pub
6,然后去gitlab上创建一个自动任务的用户,注册好后把用户添加到项目里面,给他记录者的权限就OK了,只要有拉取权限就行。
7,然后登陆该用户去添加一下ssh公钥就OK了(用户设置---部署公钥)。
8,完成以后我们就要创建执行脚本了。

su gitlab-runner
cd ~
mkdir bin
cd bin/
vim deploy
代码如下:

#!/bin/bash
if [ $# -ne 2 ]
then
  echo "arguments error!"
  exit 1
else
  deploy_path="/data/web/$1/$2"
  if [ ! -d "$deploy_path" ]
  then
    project_path="git@git.xxxx.com:"$1/$2".git"
    git clone $project_path $deploy_path
  else
    cd $deploy_path
    git pull
  fi
fi
这里大概解释一下脚本吧:

脚本的意思是:先检测是否有两个参数传递进来,如果没有就直接显示 arguments error 然后退出脚本。
如果有两个参数传递进来就设置一下更新的目标路径:deploy_path
然后判断目标文件夹是否存在,如果不存在就git clone 拉取;
如果存在那就git pull更新

然后给予脚本执行权限:

chmod +x deploy
9,添加环境变量

su gitlab-runner
cd ~
vim .bash_profile
PATH修改为如下:

PATH=$PATH:$HOME/.local/bin:$HOME/bin:/home/gitlab-runner/bin
保存退出
执行

source  .bash_profile 
root用户下

vim /etc/profile
在底部修改 PATH为:

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/git/bin:/home/gitlab-runner/bin
保存退出  执行

source /etc/profile
10,授权部署目录权限:

chown -R gitlab-runner:gitlab-runner /data/web/
PS:/data/web/为你的项目部署目录

11,运行测试:
手动测试脚本的话直接输入 deploy 分组名称 项目名称 回车
PS:如果你的被执行电脑没有ssh登陆过gitlab服务器的话一定要手动执行一次因为要解决yes确认的操作;
如果手动执行没问题就说明脚本已经OK了
然后我们就要 在项目的根目录下新建一个.gitlab-ci.yml文件

内容如下:

stages:
  - deploy
deploy:
  stage: deploy
  script:
    - deploy 分组名称 项目名称
  only:
    - master
  tags:
    - shell
然后我们就可以直接先push上去一下,然后我们再修改一下文件再push。
完成后进入gitlab看一下CI/CD是否已经完成,如果未完成那么就看一下错误。

发表评论

暂无评论

登录

忘记密码 ?

切换登录

注册

扫一扫二维码分享