共计 2089 个字符,预计需要花费 6 分钟才能阅读完成。
基于 Windows+Docker 的单机版测试环境实际。
我的项目不大,开发周期不长。后期配置好,后续应用整体比拟丝滑。
0. 简介
应用 SpringBoot3 + JDK17
搭建的我的项目,构建工具应用Gradle 8.0
。
波及到的知识点
- Docker, Dockerfile, Docker-Compose
- Gitlab
- Jenkins
- IDEA (Jenkins Control plugins)
1. Docker
假如 Windows 环境,Docker
曾经装置结束。默认已装置Docker Compose
1.1 Dockerfile
镜像形容文件,比较简单的 Java SpringBoot 我的项目
FROM openjdk:17-alpine
WORKDIR /home/app
ADD zhgc-web/build/libs/zhgc-web-*.jar web.jar
EXPOSE 8080
CMD java $JAVA_OPTS -jar "web.jar"
1.2 Docker Compose
应用 Docker Compose
的目标,次要是服务编排以及资源限度,比单纯的应用 Docker 不便一些。
也是比较简单的docker-conpose.yml
version: '3'
services:
zhgc:
image: zhgc-web:latest
container_name: zhgc-web
ports:
- '18010:8080'
environment:
SPRING_PROFILES_ACTIVE: test
JAVA_OPTS: '-Xmx2g -Xmx2g'
deploy:
resources:
limits:
cpus: '2'
memory: 3G
restart_policy:
condition: on-failure
delay: 5s
max_attempts: 3
window: 120s
2. Jenkins
想必能看到这篇文章的,对 Jenkins
都不会生疏。根本的部署、配置就不再叙述。
假如已搭建好环境。官方网站 https://www.jenkins.io/
2.1 举荐插件 Blue Ocean
界面简洁且直观,特地是配合Pipeline
。
2.2 Jenkins Pipeline
官网文档,曾经很具体。可粗读一遍,后续依据须要再细读。https://www.jenkins.io/doc/book/pipeline/
一个绝对残缺且简略的 Pipeline 示例
pipeline {
agent any
tools {
// 指定 jdk17 这个须要在 Jenkins 的 Tools 中的 JDK 中增加
jdk 'jdk17'
}
stages {stage('Build-Project') {
steps {
//
echo 'build'
bat(
label: 'Gradle',
script: './gradlew build'
)
}
// reports
post {
success {
// publish html 公布制品
publishHTML target: [
allowMissing: false,
alwaysLinkToLastBuild: false,
keepAll: true,
reportDir: 'zhgc-web/build/reports/tests/test',
reportFiles: 'index.html',
reportName: 'Test Report'
]
}
}
}
stage('Build-Docker') {
steps {
bat(
label: 'Docker',
script: 'docker build -t zhgc-web:latest .'
)
}
}
stage('Deploy') {
steps {
bat(
label: 'Deploy docker-compose',
script: 'docker-compose up -d'
)
}
}
}
// 推送 测试文档
post {
always {junit 'zhgc-web/build/test-results/**/*.xml'}
}
}
2.3 参数化构建
文档地址: https://www.jenkins.io/doc/book/pipeline/syntax/#parameters-e…
parameters {choice(name: 'APPS', choices: ['all', 'agent', 'taskcenter'])
}
应用 stage
配合 when
来决定是否走某个构建步骤
3 IDEA 装置 Jenkins 插件
测试发现,明码只能应用API-TOKEN
。
Crumb Data
的获取地址为:http://xxx.xx/crumbIssuer/api/xml?tree=crumb
返回数据为
<defaultCrumbIssuer _class='hudson.security.csrf.DefaultCrumbIssuer'>
<crumb>6cc4228225e28cd67807a3982381ca1efda341672db606c1ca6d29da67f117d3</crumb>
</defaultCrumbIssuer>
其实这块,还能够应用 Gitlab 和 Jenkins 配合 WebHook,通过被动推送代码时按规定触发主动构建。
正文完