开放 API 与 Webhook
  1. 个人访问令牌
  2. WebHook
文件管理与 Wiki
  1. 项目文件管理
  2. 项目 Wiki

持续集成的执行方式

文章内容

「CODING 持续集成」的执行方式为云主机,您可以自由的使用这台云主机来构建,可以安装 JDK,GCC 等构建工具,也可以使用预装的 Docker 来构建,以下提供了示例配置供参考。

本地模式

这种方式必须设置 agent 为 agent any,持续集成将在操作系统下运行构建程序。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
pipeline {
agent any
stages {
stage("检出") {
steps {
sh 'ci-init'
checkout(
[$class: 'GitSCM', branches: [[name: env.GIT_BUILD_REF]],
userRemoteConfigs: [[url: env.GIT_REPO_URL]]]
)
}
}
stage("环境") {
steps {
sh 'apt update'
sh 'apt install -y maven'
sh 'java -version'
sh 'mvn --version'
}
}
stage("构建") {
steps {
echo "构建中..."
sh 'mvn package' // mvn 示例
echo "构建完成."
archiveArtifacts artifacts: '**/target/*.jar', fingerprint: true // 收集构建产物
}
}
stage("测试") {
steps {
echo "单元测试中..."
sh 'make test' // make 示例
echo "单元测试完成."
junit 'target/surefire-reports/*.xml' // 收集单元测试报告的调用过程
}
}
stage("部署") {
steps {
echo "部署中..."
// 请在这里放置收集单元测试报告的调用过程,例如:
// sh 'mvn tomcat7:deploy' // Maven tomcat7 插件示例:
// sh './deploy.sh' // 自研部署脚本
echo "部署完成"
}
}
}
}

使用预装 Docker 构建

这种方式可以使用 hub.docker.com 上的镜像资源,或使用 Dockerfile 创建自定义镜像。可以构建任何语言,任何版本,例如:

1
2
3
4
docker.image('maven:latest')
docker.image('php:latest')
docker.image('php:5.2.17')
docker.image('go:1.11.00')

完整的例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
node {
stage("检出") {
sh 'ci-init'
checkout(
[$class: 'GitSCM', branches: [[name: env.GIT_BUILD_REF]], userRemoteConfigs: [[url: env.GIT_REPO_URL]]]
)
sh 'pwd'
}
docker.image('maven:latest').inside("-v /root/.m2:/root/.m2") {
stage("构建") {
echo "构建中..."
sh 'java -version'
sh 'mvn package -Dmaven.test.failure.ignore -Dmaven.test.skip=true' // mvn 示例
echo "构建完成."
archiveArtifacts artifacts: '**/target/*.jar', fingerprint: true // 收集构建产物
}
stage("测试") {
echo "单元测试中..."
sh 'java -jar target/webflux-0.0.1-SNAPSHOT.jar &'
sleep 20
sh 'mvn test -Dmaven.test.failure.ignore' // mvn 示例
echo "单元测试完成."
junit 'target/surefire-reports/*.xml' // 收集单元测试报告的调用过程
}
stage("部署") {
echo "部署中..."
// 请在这里放置收集单元测试报告的调用过程,例如:
// sh 'mvn tomcat7:deploy' // Maven tomcat7 插件示例:
// sh './deploy.sh' // 自研部署脚本
echo "部署完成"
}
}
}
上一篇如何构建持续集成?
文档是否对您有用?
感谢反馈有用
感谢反馈没用