环境准备
- Centos 7
- Docker 24.0.7
- Docker-Compose 2.21.0
- Docker-Harbor 2.9.1
- Jenkins 2.434
- Jdk 8
- Maven 3.9.1
- Git 2.39.2
Docker、Docker-Compose安装
查看我另外的文章:# Centos离线安装Docker、Docker-compose
Docker-Harbor 安装
查看我另外的文章:# Centos 离线安装 Docker-Harbor
Jenkins 安装
查看我另外的文章:# Docker安装Jenkins,并容器化
部署配置
-
Jenkins 安装插件
Publish Over SSH
、Gitee
或者Gitlab
。 -
Jenkins 系统配置->全局工具配置,配置Maven、Git、Jdk
-
Jenkins 系统管理 -> 系统配置,配置
Publish over SSH
-
新建任务 -> 流水线
-
任务配置
-
根据前面
脚本路径
在项目中创建Jenkinsfile
文件添加下面内容作为初始模板
typescriptpipeline { agent any stages { stage('第一步') { steps { echo "第一步" } } stage('第二步') { steps { echo "第二步" } } stage('第三步') { steps { echo "第三步" } } stage('第四步') { steps { echo "第四步" } } } }
-
根据 Jenkins 的流水线语法提示生成
Jenkinsfile
脚本内容进入
流水线语法
,通过Jenkins
流水线生成模板生成从
Gitee
拉取代码Maven构建打包项目
打包镜像并上传Harbor
拉取镜像并启动项目
-
最终生成的
Jenkinsfile
文件内容为phppipeline { agent any stages { stage('从Gitee拉取代码') { steps { checkout scmGit(branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: '1', url: 'https://gitee.com/liboshuai01/xxl-job.git']]) } } stage('Maven构建打包项目') { steps { sh '/opt/module/maven/apache-maven-3.9.2/bin/mvn clean install -DskipTests' } } stage('打包镜像并上传Harbor') { steps { sh '''cd xxl-job-admin docker build -t xxl-job:latest ./ docker login -u admin -p Rongshu@2024 10.0.0.38:8004 docker tag xxl-job:latest 10.0.0.38:8004/library/xxl-job:latest docker push 10.0.0.38:8004/library/xxl-job:latest docker image prune -f''' } } stage('拉取镜像并启动项目') { steps { sshPublisher(publishers: [sshPublisherDesc(configName: 'root@one', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''#!/bin/bash source /etc/profile cd /opt/projects/xxl-job docker login -u admin -p Rongshu@2024 10.0.0.38:8004 docker pull 10.0.0.38:8004/library/xxl-job:latest docker image prune -f docker-compose up -d''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)]) } } } }
-
项目中用到的
Dockerfile
内容如下bashFROM openjdk:8-jre-slim LABEL author="boshuai.li" ENV PARAMS="" ENV TZ=PRC RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone ADD target/xxl-job-admin-*.jar /app.jar ENTRYPOINT ["sh","-c","java -jar $JAVA_OPTS /app.jar $PARAMS"]
-
项目中用到的
docker-compose.yaml
内容如下rubyversion: '3' services: xxl_job: image: 10.0.0.38:8004/library/xxl-job:latest container_name: xxl-job restart: on-failure:3 volumes: - /opt/projects/xxl-job/logs:/opt/projects/xxl-job/logs ports: - 8088:8088
部署验证
-
点击
立即构建
,可以看到下图 -
查看
xxl-job
容器服务是否启动 -
查看
Harbor
仓库中是否有推送的镜像