下面来说说CI/CD是怎么实现的:
登录gitlab-runner机器
切换runner普通用户
[root@localhost ~]# su - gitlab-runner
编写.gitlab-ci.yml文件
随便创建一个目录,叫什么无所谓
[gitlab-runner@localhost ~]$ mkdir git
将gitlab上想要发布的项目克隆到这个目录里
[gitlab-runner@localhost git]$ git clone git@gitlab.xxx.com:xxx/xxx.git
因为我们的项目是大工程,里面带着很多子工程,所以就需要通过yml文件,将项目分离出去
比方说我们想发布bb项目,但是bb项目属于aa这个大项目的子项目,所以就进aa大工程目录下
在项目目录里面创建一个.gitlab-ci.yml文件,如下
[gitlab-runner@localhost ~]$ cat .gitlab-ci.yml
1
2
3
4
5
6
7
8 job 1:
stage: test
script:
- git subtree push -q --prefix=bb git@gitlab.xx.com:bb1/bb.git dev
only:
- dev
tags:
- shell
这样就可以将bb项目分离出去,相当于创建了一个新的项目
进入bb目录,也编写.gitlab-ci.yml文件,这个就是我们需要编译的脚本,中间可以穿插maven、node和shell的一系列命令
[gitlab-runner@localhost bb]$ cat .gitlab-ci.yml
1
2
3
4
5
6
7
8
9
10 job 1:
stage: build
script:
- rm -rf /opt/M2_REPO/com/bb/*
- mvn clean package -P test -Dmaven.test.skip
- bash -x /opt/bb/shell/bb.sh
only:
- dev
tags:
- shell
编写完yml文件后都需要提交下
git add .
git commit -m “add gitlab-ci.yml”
git push origin dev
另外包括传包,启动等命令都可以在yml文件里面体现,这样只要dev分支有commit的改变了,gitlab-ci就会自动创建job来自动发布