基于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-alpineWORKDIR /home/appADD zhgc-web/build/libs/zhgc-web-*.jar web.jarEXPOSE 8080CMD 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,通过被动推送代码时按规定触发主动构建。