关于linux搭建git-runner,实现ci/cd自动部署
整理最近搭建gitlab的ci/cd流程,方便自己以后使用,本文只记录服务器端,关于gitlab服务器搭建,以及windows端runner实现会在其他博客中说明,通俗易懂部分不做说明
将可能遇到的问题写在前面
1.runner部署完成,提交代码.CI/CD
流水中出现相应的任务,但一直在执行中(卡在pedding状态),这个问题遇到两种情况
(1)在流水任务中显示pendding状态,并且有提示stuck,点进去后显示没有该项目指定的tag存在,请,检查你的gitlab-ci.yml配置中指定执行该任务的的runnner与注册runner名称是否一致
(2)没有任何提示,只是一直显示pendding状态,删掉runner重新注册,问题解决
2.执行失败
查看是否已将文件所有者改为gitlab-runner
准备工作
1.从仓库中把项目拉下来
2.在gitlab创建一个runner用户
3.在代码中写好.gitlab-ci.yml中配置
.gitlab-ci.yml简要说明
以下为master分支和test分支分别对应正式和测试环境,当更新不同分支时,根据tag触发不同的runner实现相应服务器的代码更新
stages:
- build
job1:
stage: build
tags:
- master //指定由哪个runner运行
script:
# 打开到项目目录
- cd /www/wwwroot/yyy
#更新对应分支代码
- git pull origin master
only:
# 只有master分支才执行
- master
job2:
stage: build
tags:
- test
script:
# 打开到项目目录
- cd /www/wwwroot/xxx
- git pull origin test
only:
# 只有test分支才执行测试
- test
1.线上环境安装git
yum -y install git
2.安装runner
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash
yum install gitlab-ci-multi-runner
3.注册runner
gitlab-ci-multi-runner register
在注册是需要填写一些必要信息,信息如下
1.项目地址
2.项目token
3.runner的描述(本人作为备注来使用一般记录xx服务器yy项目zz环境)
4.runner标签(在只有一个环境时不需要在意此处,当有多个环境a,b,c时每个环境需要有一个tag标签,用于当某个分支更新时去执行哪个runner,下面会做简单说明)
5.是否运行在没有tag的build上面,根据情况选择true或false
6.是否锁定runner到当前项目(这里我没用感受过直接的效果直接选择true)
7.选择执行器,有很多种选择,根据具体情况,我在linux上直接部署的选择shell,在windows选择powershell
4.查看runner状态,并运行
gitlab-ci-multi-runner verify #查看状态
gitlab-ci-multi-runner run #运行runner
5.修改文件所有者
chown -hR gitlab-runner:gitlab-runner /yyy/xxx
6.切换到gitlab-runner用户
su gitlab-runner
7.配置git
git config --global user.email "runner@qq.com"
git config --global user.name "gitlab-runner"
8.生成ssh
1 mkdir ~/.ssh
2 cd ~/.ssh
3 ssh-keygen
4 cd /home/gitlab-runner/.ssh/
5 cat id_rsa.pub
获取gitlab-runner的ssh并更新到gitlab服务器中
此时配置已完成,提交本地代码,在gitlab中查看ci/cd流水查看执行情况,测试功能是否实现即可