# 集成构建工具
嘿嘿,大家好。 构建工具是用来将代码编译打包成制品的工具。例如前端项目我们一般使用npm进行打包,后端java项目我们一般使用maven、gradle进行打包。构建工具很多很多,但是集成到gitlab中是一样的。所以这里简单介绍使用gitlabCI集成npm/maven完成前后端项目的构建。
# 软件包下载
- maven软件包下载 (opens new window)
- gradle软件包下载 (opens new window)
- ant软件包下载 (opens new window)
- node软件包下载 (opens new window)
# 环境配置
首先,我们需要在runner机器中安装配置好apache-maven。
代码语言:javascript复制#解压
tar zxf apache-maven-xxxx.tar.gz -C /usr/local
tar zxf gradle-xxxx.tar.gz -C /usr/local
tar zxf node-xxxxx.tar.gz -C /usr/local
tar zxf apache-ant-xxxx.tar.gz -C /usr/local
#添加环境变量
vim /etc/profile
export MAVEN_HOME=/usr/local/apache-maven-3.6.0
export ANT_HOME=/usr/local/apache-ant-1.10.5
export GRADLE_HOME=/usr/local/gradle-5.3
export NODE_HOME=/usr/local/node-v10.15.3-linux-x64
export JAVA_HOME=/usr/local/jdk1.8.0_201
export PATH=$PATH:$MAVEN_HOME/bin:$ANT_HOME/bin:$GRADLE_HOME/bin:$NODE_HOME/bin
export PATH=$PATH:$JAVA_HOME/bin
# 生效全局环境变量
source /etc/profile
# maven集成模板库配置
我们首先在jobs目录中创建一个build.yml,然后在里面编写build作业模板。
代码语言:javascript复制.build:
stage: build
tags:
- build
script:
- $BUILD_SHELL
- ls
我们计划将测试相关的job都定义在jobs/test.yml中,我们开始创建并编写test作业。运行测试shell并收集单元测试报告。
代码语言:javascript复制#单元测试
.test:
stage: test
tags:
- build
script:
- $TEST_SHELL
- ls
artifacts:
reports:
junit: ${JUNIT_REPORT_PATH}
然后我们在template目录中创建maven流水线模板。 templates/java-pipeline.yml
代码语言:javascript复制include:
- project: 'cidevops/cidevops-gitlabci-service'
ref: master
file: 'jobs/build.yml'
- project: 'cidevops/cidevops-gitlabci-service'
ref: master
file: 'jobs/test.yml'
variables:
BUILD_SHELL: 'mvn clean package -DskipTests' ##构建命令
CACHE_DIR: 'target/'
TEST_SHELL : 'mvn test' ##测试命令
JUNIT_REPORT_PATH: 'target/surefire-reports/TEST-*.xml' ##单元测试报告
cache:
paths:
- ${CACHE_DIR}
stages:
- build
- test
build:
stage: build
extends: .build
test:
stage: test
extends: .test
最后我们在项目中添加.gitlab-ci.yml来引用模板构建流水线。
代码语言:javascript复制include:
- project: 'cidevops/cidevops-gitlabci-service'
ref: master
file: 'templates/java-pipeline.yml'
variables:
BUILD_SHELL: 'mvn clean package -DskipTests'
TEST_SHELL: 'mvn test'
CACHE_DIR: 'target/'
好的,上面我们已经实现了构建,但是一般还回运行单元测试。接下来我们实现。
# npm
template/web-pipeline.yml
代码语言:javascript复制include:
- project: 'cidevops/cidevops-gitlabci-service'
ref: master
file: 'jobs/build.yml'
variables:
BUILD_SHELL: 'npm run build' ##构建命令
CACHE_DIR : "dist/" ##构建缓存
cache:
paths:
- ${CACHE_DIR}
- node_modules/
stages:
- install
- build
install:
stage: install
script:
- 'npm install'
build:
stage: build
extends: .build