基于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,通过被动推送代码时按规定触发主动构建。