gitlab-ci自动部署(二)

下面来说说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来自动发布

Donate