1. 删除gitlab默认创建的项目,通用->高级->最下面
2. 在gitlab上创建一个空白项目
3. 新建SpringBoot项目(可自行编写)
(可选) 修改SpringBoot版本号
4. 远程gitlab与本地项目关联
4.1 为此项目创建本地git版本控制,默认是master分支
4.2 先commit到本地git仓库
4.3 找到gitlab的项目地址
4.4 关联gitlab项目地址到本地
4.5 push(可能需要输入账号密码)
5. 安装gitlab-runner(可另开cmd同步执行第 6 步)
可以看到流水线已经开始执行任务了,但还是阻塞状态,因为还未配置gitlab-runner,先点取消
5.1 进入runner安装页面
5.2 可以看到,文档很详细,把所有命令都写好了(需要注意注册最后面token的替换),直接安装->注册,root用户可以把sudo去掉
注册的时候 executor 暂时选用shell,描述自行输入,其他选项直接回车
5.3 刷新页面,可以看到绿色的圆点,就说明gitlab-runner可以使用了
6. 安装maven
yum install maven
mvn -v
创建本地仓库文件夹
cd /home
mkdir javaDevelop
sudo chmod -R 777 javaDevelop/
根据maven的安装位置,去配置setting
vi /usr/share/maven/conf/settings.xml
i
第 55 行 增加本地仓库地址
<localRepository>/home/javaDevelop</localRepository>
第 159 行 增加阿里云仓库地址
<mirror>
<id>aliyun</id>
<name>Nexus aliyun</name>
<mirrorOf>*</mirrorOf>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
第 218 行 增加JDK1.8配置
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
7. 编辑本地项目(可自行编写)
7.1 修改配置文件为.yml,并添加如下内容
spring:
profiles:
active: dev
application:
name: cool
server:
port: 6676
servlet:
context-path: /cool
7.2 新建application-dev.yml和application-prd.yml
branch: dev
branch: prd
7.3 新建test包,CoolController类
package com.application.cool.test;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @description: 测试
* @author: 哼唧兽
* @date: 9999/9/21
**/
@RestController
public class CoolController {
@Value("${branch}")
private String branch;
@GetMapping
public String cool() {
return "cool";
}
@GetMapping("/branch")
public String branch() {
return branch;
}
}
7.4 在master分支新建dev,commit&push
7.5 在dev分支新建prd,修改application.yml,commit&push
spring:
profiles:
active: prd
application:
name: cool
server:
port: 6676
servlet:
context-path: /cool
8. 为prd配置流水线
.gitlab-ci.yml文件是gitlab-runner核心文件,此文件是基于 executor 来编写的,因为我安装时指定的是shell,所以需要在机器上安装maven;如果选择docker,就需要指定一个docker镜像来运行此文件的命令(待开发…).目前来说,能够打包已能满足要求,至于版本控制暂不涉及
针对测试环境,可以在CI/CD->计划中,指定时间打包某一分支
stages:
- build
# 构建 Job
build-job:
stage: build
only:
- prd
script:
- echo "=============== 开始打包任务 ==============="
- java -version
- mvn -version
- mvn clean
- mvn compile
- echo "=============== 开始打包任务 ==============="
- mvn package -Dmaven.test.skip=true
- echo "=============== 关 闭 进 程 ==============="
- pwd
- whoami
cache:
key: maven-cache
paths:
- /home/javaDevelop
上述命令具体解释请见官网,说2个关键的
cache : 可以不用每次打包的时候都去网上拉取,后续打包就会像本地一样快
only : 只要prd分支push后,gitlab-runner就会自动开始打包
9. 查看Build日志&查看jar包
可以看到最终打包的位置以及负责打包的用户是gitlab-runner
最终生成的jar文件名称是可以通过pom定义的,可自行搜索文档解决
cd /home/gitlab-runner/builds/DTsmH1Up/0/gitlab/gitlab-instance-4d624447/cool/target/
ll
10. 运行jar文件
新开一个cmd,后台运行jar文件
cd ~
mkdir cool
cd cool
cp /home/gitlab-runner/builds/DTsmH1Up/0/gitlab/gitlab-instance-4d624447/cool/target/cool-1.0-SNAPSHOT.jar ./
nohup java -jar cool-1.0-SNAPSHOT.jar >cool.log 2>&1 &
为6676端口关闭防火墙
firewall-cmd --query-port=6676/tcp
firewall-cmd --zone=public --add-port=6676/tcp --permanent
firewall-cmd --reload
ps -ef | grep cool-1.0-SNAPSHOT.jar | grep -v grep | awk '{print $2}' | xargs kill -9