使用gitlab 的CI/CD流程
1.安装runner
2.注册runner
3.编写流水线脚本
一. 安装Runner (本文的安装方式)
Docker 上安装runner 文档地址:https://docs.gitlab.com/runner/install/docker.html
docker run -d --name gitlab-runner --restart always \
-v /srv/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
--add-host=mygitlab.com:192.168.1.112 \
gitlab/gitlab-runner:latest
如果在测试环境下需要指定域名host的可以加参数 --add-host=www.test.com:192.168.1.10,省去以后进了容器在手动修改的麻烦。
附:
Linux上直接安装runner
curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh" | sudo bash
yum install gitlab-runner
二.注册Runner
容器启动后,进入到容器,输入命令:
gitlab-runner register
输入gitlab地址, token, 描述, tag, 用什么执行。
image.png
token的获取方法(gitlab-->管理中心-->概述-->runner)
image.png添加成功。刷新页面
image.png
可进入到容器后免交互来注册:
root@c01b8d257966:/# gitlab-runner register \
--non-interactive \
--executor "shell" \
--url "http://192.168.1.112:85" \
--registration-token "WWmieRLSrNcs268VxQWe" \
--description "252-runner" \
--tag-list "ceshi" \
--run-untagged="true" \
--locked="false"
image.png
三.流水线脚本
dev分支创建一个.gitlab-ci.yml的文件,我这里已经创建好了
image.png
内容:
stages:内容的3个阶段
为了方便看,任务名我这里写的中文,不过不影响。
stage和 开始的stages里定义的是对应的。
tag: 这里写的是你注册git-runner的tag!!!!
only:只在dev触发的时候才运行。
stages:
- build
- test
- devploy
goujian:
stage: build
tags:
- abc
script:
- echo "代码编译......"
only:
- dev
测试:
stage: test
tags:
- abc
script:
- echo "测试代码......"
only:
- dev
项目上线:
stage: devploy
tags:
- abc
script:
- echo "$USER 部署代码......"
- scp index.html root@192.168.1.112:/var/www/html/
only:
- dev
。。。连着遇到3个问题:
1.出现找不到分支
7c4395846ebe591e154bdffc7e7922f.png
通过查看日志(gitlab-runner exec docker job_name),发现gitlab在被触发后拉取项目的时候采用的默认http协议的克隆地址,而我的http方式地址没有改过,还是默认容器的名字。 自己测了一下 手动克隆当然也是会失败。
解决方法:修改http:方式克隆地址为可用地址,成功!!
vim /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
gitlab-ctl restart
image.png
2.可以获取分支了,但是还是失败,如下
image.png
解决办法:
修改gitlab配置(设置--CI/CD,将Git strategy修改成git clone)
image.png
3.到最后一步部署文件到远程机器,出现没有权限
image.png
可以看到我在脚本这个步骤输出一个变量,结果为当前执行用户为gitlab-runner ,我们要做ssh免密通信要在
gitlab-runner这个用户去做。
su - gitlab-runner
ssh-keygen
一路回车
ssh-copy-id root@192.168.1.112
输一次密码,完成与远端机器免密通信
再次运行,成功。
image.png
image.png
网友评论