导航菜单

  • 0.api
  • 0.Async
  • 0.module
  • 1.ES2015
  • 2.Promise
  • 3.Node
  • 4.NodeInstall
  • 5.REPL
  • 6.NodeCore
  • 7.module&NPM
  • 8.Encoding
  • 9.Buffer
  • 10.fs
  • 11.Stream-1
  • 11.Stream-2
  • 11.Stream-3
  • 11.Stream-4
  • 12-Network-2
  • 12.NetWork-3
  • 12.Network-1
  • 13.tcp
  • 14.http-1
  • 14.http-2
  • 15.compress
  • 16.crypto
  • 17.process
  • 18.yargs
  • 19.cache
  • 20.action
  • 21.https
  • 22.cookie
  • 23.session
  • 24.express-1
  • 24.express-2
  • 24.express-3
  • 24.express-4
  • 25.koa-1
  • 26.webpack-1-basic
  • 26.webpack-2-optimize
  • 26.webpack-3-file
  • 26.webpack-4.tapable
  • 26.webpack-5-AST
  • 26.webpack-6-sources
  • 26.webpack-7-loader
  • 26.webpack-8-plugin
  • 26.webpack-9-hand
  • 26.webpack-10-prepare
  • 28.redux
  • 28.redux-jwt-back
  • 28.redux-jwt-front
  • 29.mongodb-1
  • 29.mongodb-2
  • 29.mongodb-3
  • 29.mongodb-4
  • 29.mongodb-5
  • 29.mongodb-6
  • 30.cms-1-mysql
  • 30.cms-2-mysql
  • 30.cms-3-mysql
  • 30.cms-4-nunjucks
  • 30.cms-5-mock
  • 30.cms-6-egg
  • 30.cms-7-api
  • 30.cms-8-roadhog
  • 30.cms-9-yaml
  • 30.cms-10-umi
  • 30.cms-12-dva
  • 30.cms-13-dva-ant
  • 30.cms-14-front
  • 30.cms-15-deploy
  • 31.dva
  • 31.cms-13-dva-antdesign
  • 33.redis
  • 34.unittest
  • 35.jwt
  • 36.websocket-1
  • 36.websocket-2
  • 38.chat-api-1
  • 38.chat-api-2
  • 38.chat-3
  • 38.chat-api-3
  • 38.chat
  • 38.chat2
  • 38.chat2
  • 39.crawl-0
  • 39.crawl-1
  • 39.crawl-2
  • 40.deploy
  • 41.safe
  • 42.test
  • 43.nginx
  • 44.enzyme
  • 45.docker
  • 46.elastic
  • 47.oauth
  • 48.wxpay
  • index
  • 52.UML
  • 53.design
  • index
  • 54.linux
  • 57.ts
  • 56.react-ssr
  • 58.ts_react
  • 59.ketang
  • 59.ketang2
  • 61.1.devops-linux
  • 61.2.devops-vi
  • 61.3.devops-user
  • 61.4.devops-auth
  • 61.5.devops-shell
  • 61.6.devops-install
  • 61.7.devops-system
  • 61.8.devops-service
  • 61.9.devops-network
  • 61.10.devops-nginx
  • 61.11.devops-docker
  • 61.12.devops-jekins
  • 61.13.devops-groovy
  • 61.14.devops-php
  • 61.15.devops-java
  • 61.16.devops-node
  • 61.17.devops-k8s
  • 62.1.react-basic
  • 62.2.react-state
  • 62.3.react-high
  • 62.4.react-optimize
  • 62.5.react-hooks
  • 62.6.react-immutable
  • 62.7.react-mobx
  • 62.8.react-source
  • 63.1.redux
  • 63.2.redux-middleware
  • 63.3.redux-hooks
  • 63.4.redux-saga
  • 63.5.redux-saga-hand
  • 64.1.router
  • 64.2.router-connected
  • 65.1.typescript
  • 65.2.typescript
  • 65.3.typescript
  • 65.4.antd
  • 65.4.definition
  • 66-1.vue-base
  • 66-2.vue-component
  • 66-3.vue-cli3.0
  • 66-4.$message组件
  • 66-5.Form组件
  • 66-6.tree
  • 66-7.vue-router-apply
  • 66-8.axios-apply
  • 66-9.vuex-apply
  • 66-10.jwt-vue
  • 66-11.vue-ssr
  • 66-12.nuxt-apply
  • 66-13.pwa
  • 66-14.vue单元测试
  • 66-15.权限校验
  • 67-1-network
  • 68-2-wireshark
  • 7.npm2
  • 69-hooks
  • 70-deploy
  • 71-hmr
  • 72.deploy
  • 73.import
  • 74.mobile
  • 75.webpack-1.文件分析
  • 75.webpack-2.loader
  • 75.webpack-3.源码流程
  • 75.webpack-4.tapable
  • 75.webpack-5.prepare
  • 75.webpack-6.resolve
  • 75.webpack-7.loader
  • 75.webpack-8.module
  • 75.webpack-9.chunk
  • 75.webpack-10.asset
  • 75.webpack-11.实现
  • 76.react_optimize
  • 77.ts_ketang_back
  • 77.ts_ketang_front
  • 78.vue-domdiff
  • 79.grammar
  • 80.tree
  • 81.axios
  • 82.1.react
  • 82.2.react-high
  • 82.3.react-router
  • 82.4.redux
  • 82.5.redux_middleware
  • 82.6.connected
  • 82.7.saga
  • 82.8.dva
  • 82.8.dva-source
  • 82.9.roadhog
  • 82.10.umi
  • 82.11.antdesign
  • 82.12.ketang-front
  • 82.12.ketang-back
  • 83.upload
  • 84.graphql
  • 85.antpro
  • 86.1.uml
  • 86.2.design
  • 87.postcss
  • 88.react16-1
  • 89.nextjs
  • 90.react-test
  • 91.react-ts
  • 92.rbac
  • 93.tsnode
  • 94.1.JavaScript
  • 94.2.JavaScript
  • 94.3.MODULE
  • 94.4.EventLoop
  • 94.5.文件上传
  • 94.6.https
  • 94.7. nginx
  • 95.1. react
  • 95.2.react
  • 96.1.react16
  • 96.2.fiber
  • 96.3.fiber
  • 97.serverless
  • 98.websocket
  • 100.1.react-basic
  • 101.1.monitor
  • 101.2.monitor
  • 102.java
  • 103.1.webpack-usage
  • 103.2.webpack-bundle
  • 103.3.webpack-ast
  • 103.4.webpack-flow
  • 103.5.webpack-loader
  • 103.6.webpack-tapable
  • 103.7.webpack-plugin
  • 103.8.webpack-optimize1
  • 103.9.webpack-optimize2
  • 103.10.webpack-hand
  • 103.11.webpack-hmr
  • 103.11.webpack5
  • 103.13.splitChunks
  • 103.14.webpack-sourcemap
  • 103.15.webpack-compiler1
  • 103.15.webpack-compiler2
  • 103.16.rollup.1
  • 103.16.rollup.2
  • 103.16.rollup.3
  • 103.16.vite.basic
  • 103.16.vite.source
  • 103.16.vite.plugin
  • 103.16.vite.1
  • 103.16.vite.2
  • 103.17.polyfill
  • 104.1.binary
  • 104.2.binary
  • 105.skeleton
  • 106.1.react
  • 106.2.react_hooks
  • 106.3.react_router
  • 106.4.redux
  • 106.5.redux_middleware
  • 106.6.connected-react-router
  • 106.6.redux-first-history
  • 106.7.redux-saga
  • 106.8.dva
  • 106.9.umi
  • 106.10.ketang
  • 106.11.antdesign
  • 106.12.antpro
  • 106.13.router-6
  • 106.14.ssr
  • 106.15.nextjs
  • 106.16.1.cms
  • 106.16.2.cms
  • 106.16.3.cms
  • 106.16.4.cms
  • 106.16.mobx
  • 106.17.fomily
  • 107.fiber
  • 108.http
  • 109.1.webpack_usage
  • 109.2.webpack_source
  • 109.3.dll
  • 110.nest.js
  • 111.xstate
  • 112.Form
  • 113.redux-saga
  • 114.react+typescript
  • 115.immer
  • 116.pro5
  • 117.css-loader
  • 118.1.umi-core
  • 119.2.module-federation
  • 119.1.module-federation
  • 120.create-react-app
  • 121.react-scripts
  • 122.react-optimize
  • 123.jsx-runtime
  • 124.next.js
  • 125.1.linux
  • 125.2.linux-vi
  • 125.3.linux-user
  • 125.4.linux-auth
  • 125.5.linux-shell
  • 125.6.linux-install
  • 125.7.linux-system
  • 125.8.linux-service
  • 125.9.linux-network
  • 125.10.nginx
  • 125.11.docker
  • 125.12.ci
  • 125.13.k8s
  • 125.14.k8s
  • 125.15.k8s
  • 125.16.k8s
  • 126.11.react-1
  • 126.12.react-2
  • 126.12.react-3
  • 126.12.react-4
  • 126.12.react-5
  • 126.12.react-6
  • 126.12.react-7
  • 126.12.react-8
  • 127.frontend
  • 128.rollup
  • 129.px2rem-loader
  • 130.health
  • 131.hooks
  • 132.keepalive
  • 133.vue-cli
  • 134.react18
  • 134.2.react18
  • 134.3.react18
  • 135.function
  • 136.toolkit
  • 137.lerna
  • 138.create-vite
  • 139.cli
  • 140.antd
  • 141.react-dnd
  • 142.1.link
  • 143.1.gulp
  • 143.2.stream
  • 143.3.gulp
  • 144.1.closure
  • 144.2.v8
  • 144.3.gc
  • 145.react-router-v6
  • 146.browser
  • 147.lighthouse
  • 148.1.basic
  • 148.2.basic
  • 148.3.basic
  • 148.4.basic
  • 148.5.basic
  • 149.1.vite
  • 149.2.vite
  • 149.3.vite
  • 149.4.vite
  • 150.react-window
  • 151.react-query
  • 152.useRequest
  • 153.transition
  • 154.emotion
  • 155.1.formily
  • 155.2.formily
  • 155.3.formily
  • 155.3.1.mobx.usage
  • 155.3.2.mobx.source
  • 156.vue-loader
  • 103.11.mf
  • 157.1.react18
  • 158.umi4
  • 159.rxjs
  • 159.rxjs2
  • 160.bff
  • 161.zustand
  • 162.vscode
  • 163.emp
  • 164.cors
  • 1. 持续集成
  • 2. Jenkins
  • 3. Git安装
    • 3.1 git服务器
      • 3.1.1 安装git
      • 3.1.2 创建git用户
      • 3.1.3 创建仓库
    • 3.2 git客户端(web服务器)
      • 3.2.1 安装git
      • 3.2.2 免密码登录
        • 3.2.2.1 生成秘钥
        • 3.2.2.2 拷贝公钥
        • 3.2.2.3 允许公钥登录
  • 4. Jenkins
    • 4.1 安装JDK
    • 4.2 修改配置文件
    • 4.3 生效配置
    • 4.4 安装jenkins
    • 4.5 关闭防火墙
    • 4.6 启动jenkins
    • 4.7 选择java版本
    • 4.8 运行用户
    • 4.8 访问jenkins
    • 4.9 安装maven
    • 4.10 使用jenkins
    • 4.11 下载插件加速
    • 4.12 创建管理员用户
    • 4.13 主要功能
  • 5. 角色和用户管理
  • 6. 参数化构建
  • 7. 主从模式
  • 8. 流水线
  • 9. 邮件通知
  • 10. 发布PHP项目
    • 10.1 创建本地项目
    • 10.2 拉取代码
    • 10.3 部署环境
    • 10.4 创建项目
      • 10.4.1 构建参数
      • 10.4.2 pipeline脚本
  • 11. 发布Java项目
    • 11.1 创建本地项目
    • 10.2 拉取代码
    • 10.3 部署环境
    • 10.4 pipeline脚本
  • 12. Jenkins+Docker实现持续集成

1. 持续集成 #

  • 持续集成(Continuous Integration,CI) 代码合并、构建、布署、测试在一起,不断执行这个过程并对结果进行反馈
  • 持续部署(Continuous Deloyment,CD) 部署到生产环境
  • 持续交付(Continuous Delivery,CD) 部署到生产环境,给用户使用
  • DevOps 是一个完整的面向IT运维的工作流,以 IT 自动化以及持续集成(CI)、持续部署(CD)为基础,来优化程式开发、测试、系统运维等所有环节

cicd

2. Jenkins #

cicdwithoutdocker

dockercicd

3. Git安装 #

3.1 git服务器 #

3.1.1 安装git #

yum install -y git

3.1.2 创建git用户 #

useradd git
passwd git

3.1.3 创建仓库 #

su - git
mkdir -p ~/repos/app.git
cd ~/repos/app.git
git --bare init

3.2 git客户端(web服务器) #

3.2.1 安装git #

yum install -y git
cd /usr/local/src
git clone git@192.168.20.131:/home/git/repos/app.git
cd app
git config --global user.email "zhufengjiagou@126.com"
git config --global user.name "zhufengjiagou"
touch index.html
git add -A
git commit -m"init"
git push origin master

3.2.2 免密码登录 #

3.2.2.1 生成秘钥 #
  • 先登录web服务器生成秘钥并拷贝公钥
    ssh-keygen -t rsa
    cat ~/.ssh/id_rsa.pub 
3.2.2.2 拷贝公钥 #
  • 再登录git服务器
  • 要注意如果你要免登录git用户,就需要把自己的公钥拷贝到git用户的authorized_keys文件里
ssh-keygen -t rsa
chmod 700 /home/git/.ssh
vi /home/git/.ssh/authorized_keys 
chmod 600 /home/git/.ssh/authorized_keys
3.2.2.3 允许公钥登录 #
  • 再登录git服务器
  • vim /etc/ssh/sshd_config
PubkeyAuthentication yes
systemctl restart sshd

4. Jenkins #

  • jdk
  • jenkins官网

4.1 安装JDK #

  • jdk
cd /usr/local/src
wget http://upload-markdown-images.oss-cn-beijing.aliyuncs.com/jdk1.8.0_211.tar.gz
tar -xzvf jdk1.8.0_211.tar.gz 
cp -r /usr/local/src/jdk1.8.0_211 /usr/java
rm -rf /usr/bin/java && ln -s /usr/java/jdk1.8.0_211/bin/java /usr/bin/java

4.2 修改配置文件 #

vi /etc/profile

JAVA_HOME=/usr/java/jdk1.8.0_211
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin

4.3 生效配置 #

source /etc/profile
java --version

4.4 安装jenkins #

wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum install -y jenkins

4.5 关闭防火墙 #

systemctl stop firewalld.service
systemctl disable firewalld.service
javap -v JNLPMain.class
J2SE 8 = 52
J2SE 7 = 51
J2SE 6.0 = 50
J2SE 5.0 = 49
JDK 1.4 = 48
JDK 1.3 = 47
JDK 1.2 = 46
JDK 1.1 = 45

4.6 启动jenkins #

systemctl start jenkins
systemctl daemon-reload
systemctl status jenkins

4.7 选择java版本 #

vi /etc/init.d/jenkins

candidates="
#/etc/alternatives/java
#/usr/lib/jvm/java-1.8.0/bin/java
#/usr/lib/jvm/jre-1.8.0/bin/java
#/usr/lib/jvm/java-1.7.0/bin/java
#/usr/lib/jvm/jre-1.7.0/bin/java
/usr/bin/java
"

4.8 运行用户 #

一定要改一下root用户,不然流水线SCM拉不到脚本 vi /etc/sysconfig/jenkins

JENKINS_USER="root"

4.8 访问jenkins #

http://192.168.20.133:8080

4.9 安装maven #

yum install maven -y

# rpm -ql maven

/etc/m2.conf
/etc/maven
/etc/maven/settings.xml
/usr/bin/mvn
/usr/share/maven/conf/settings.xml

4.10 使用jenkins #

  • jenkins
  • OWASP(Open Web Application Security Project),开放式Web应用程序安全项目,它识别项目依赖关系,并检查是否存在任何已知的和公开的漏洞.
  • PAM(Pluggable Authentication Modules )是由Sun提出的一种认证机制。它通过提供一些动态链接库和一套统一的API,将系统提供的服务和该服务的认证方式分开,使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序,同时也便于向系统中添加新的认证手段。 PAM模块是一种嵌入式模块,修改后即时生效。
  • LDAP(Light Directory Access Portocol),它是基于X.500标准的轻量级目录访问协议
插件名称 插件作用
Folders (https://plugins.jenkins.io/cloudbees-folder),这个插件支持用户使用目录管理项目,目录支持嵌套,并且支持目录中创建视图
OWASP Markup Formatter OWASP标记格式化程序插件,使用OWASP Java HTML Sanitizer ,可以在项目描述等中输入安全的HTML标记
Build Timeout 构建超时,此插件允许构建在指定的时间过后自动终止
Credentials Binding 证书绑定
Timestamper 将时间戳添加到控制台输出
Workspace Cleanup (https://plugins.jenkins.io/ws-cleanup),这个插件支持在构建前后 删除或者部分删除workspace
Ant 向Jenkins添加Apache Ant支持
Gradle 这个插件允许Jenkins直接调用Gradle构建脚本
Pipeline 管道,一套插件可让您协调自动化
Pipeline: GitHub Groovy Libraries 允许从GitHub动态加载Pipeline Groovy库
Pipeline: Stage View 查看每一步的执行结果
GitHub Branch Source GitHub组织文件夹插件
Git (https://plugins.jenkins.io/git),支持使用Github、GitLab、Gerrit等系统管理代码仓库
Subversion (https://plugins.jenkins.io/subversion),支持Subversion系统管理源代码
SSH Slaves SSH登录到一个远程服务器以执行必要的脚本
Matrix Authorization Strategy 矩阵授权策略插件,提供基于矩阵的安全授权策略(全局和每个项目)
PAM Authentication 为Jenkins添加Unix可插入身份验证模块(PAM)支持
LDAP (https://plugins.jenkins.io/ldap),这个插件允许使用LDAP对用户进行认证,LDAP 服务器可以为Active Directory 或者 OpenLDAP
Email Extension 这个插件是Jenkins的电子邮件发布者的替代品。它允许配置电子邮件通知的各个方面:发送电子邮件时,应该收到谁以及电子邮件说明的内容
Mailer 发邮件服务
Localization: Chinese (Simplified) 本地化构建

4.11 下载插件加速 #

  • mirrors
  • update-center

4.12 创建管理员用户 #

4.13 主要功能 #

  • 新建任务
  • 用户
  • 构建历史
  • 系统管理
  • 我的视图
  • Credentials
  • 新建视图

5. 角色和用户管理 #

  • 安装 Role-based Authorization Strategy 插件

manageroles

assignusers

jprojects

6. 参数化构建 #

  • Extended Choice Parameter 插件
  • Git Parameter 插件

parameterbuild

execshell

extendparameterbuild

buildspec

vi /etc/sysconfig/jenkins 一定要改一下root用户,不然流水线SCM拉不到脚本

JENKINS_USER="root"
git branch test
git checkout test
git branch
touch 5.txt
git add -A
git commit -m"add 5.txt"
git git push origin test
git push origin test

7. 主从模式 #

masterslave2

configureslave

limitproject

configslave2

8. 流水线 #

  • Pipeline 插件

mystageview

pipelinegrammar

node {
    stage ('checkout'){
       echo "checkout"
    }
    stage ('build'){
        echo "build"
    }
    stage ('deploy'){
        echo "deploy"
    }
    stage ('test'){
        echo "test"
    }
}

scmscript

node('slave') {
    stage ('checkout'){
       echo "checkout2"
       sleep time: 10, unit: 'SECONDS'
    }
    stage ('build'){
        echo "build"
    }
    stage ('deploy'){
        echo "deploy"
    }
    stage ('test'){
        echo "test"
    }
}

9. 邮件通知 #

  • Email Extension Plugin 插件

10. 发布PHP项目 #

10.1 创建本地项目 #

  • 先登录git服务器创建php仓库
mkdir -p /home/git/repos/dev-php.git
cd /home/git/repos/dev-php.git
git init --bare

10.2 拉取代码 #

  • 拉取并初始化本地仓库
    git clone  git@192.168.20.131:/home/git/repos/dev-php.git
    cd php
    echo "<?php echo info()?>" > index.php
    git add -A
    git commit -m"add index.php"
    git push origin master

10.3 部署环境 #

  • 安装php
  • 安装nginx

10.4 创建项目 #

10.4.1 构建参数 #

constphp

phppipeline

10.4.2 pipeline脚本 #

  • 先在git服务器里创建一个dev-php项目
  • 然后到web服务器上克隆此项目并在里面添加文件
  • 在pipeline服务器里添加新的脚本
  • 给web服务器添加标签名并在pipeline脚本中引用

  • web服务器上的工作目录 /var/lib/jenkins/workspace/dev-php

  • credentialsId git/git

cat /root/pipeline/Jenkinsfile-php

node('webserver') {
    stage ('checkout'){
       checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '8e8e63f9-4806-4f2e-8633-c92badbdefd7', url: "git@192.168.20.131:/home/git/repos/${JOB_NAME}.git"]]])
    }
    stage ('build'){
       sh '''rm -rf ${WORKSPACE}/.git
       [ -e /data/backup ] ||  mkdir -p /data/backup
       [ -e /usr/share/nginx/html/${JOB_NAME} ] || mkdir /usr/share/nginx/html/${JOB_NAME}
       mv /usr/share/nginx/html/${JOB_NAME} /data/backup/${JOB_NAME}"-$(date +%F_%T)"
       cp -rf ${WORKSPACE} /usr/share/nginx/html'''
    }
    stage ('test'){
        sh "curl http://www.${JOB_NAME}.com/status"
    }
}

11. 发布Java项目 #

11.1 创建本地项目 #

  • 先登录git服务器创建java仓库
mkdir -p /home/git/repos/dev-java.git
cd /home/git/repos/dev-java.git
git init --bare

10.2 拉取代码 #

  • 拉取并初始化本地仓库
    git clone git@github.com:zhufengnodejs/blog2.git
    git clone git@192.168.20.131:/home/git/repos/dev-java.git
    git add -A && git commit -m"blog2" && git push origin master

10.3 部署环境 #

  • jdk
  • maven
  • tomcat

10.4 pipeline脚本 #

node ("webserver") {
   stage('git checkout') { 
       checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '8e8e63f9-4806-4f2e-8633-c92badbdefd7', url: "git@192.168.20.131:/home/git/repos/${JOB_NAME}.git"]]])
   }
   stage('maven build') {
        sh '''export JAVA_HOME=/usr/java/jdk1.8.0_211
        /usr/bin/mvn clean package'''
   }
   stage('deploy') {
        sh '''
        JENKINS_NODE_COOKIE=dontkillme
        export JAVA_HOME=/usr/java/jdk1.8.0_211
        TOMCAT_NAME=tomcat
        TOMCAT_HOME=/usr/local/$TOMCAT_NAME
        WWWROOT=$TOMCAT_HOME/webapps/ROOT

        if [ -d $WWWROOT ]; then
           mv $WWWROOT /data/backup/${TOMCAT_NAME}-$(date +"%F_%T")
        fi
        unzip ${WORKSPACE}/target/*.war -d $WWWROOT
        PID=$(ps -ef |grep $TOMCAT_NAME |egrep -v "grep|$$" |awk '{print $2}')
        [ -n "$PID" ] && kill -9 $PID
        /bin/bash $TOMCAT_HOME/bin/startup.sh'''
   }
   stage('test') {
       sh "curl http://www.de-java.com/status.html"
   }
}

12. Jenkins+Docker实现持续集成 #

node ("webserver") { 
   stage('Git Checkout') { 
        checkout([$class: 'GitSCM', branches: [[name: '$Tag']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[url: 'git@192.168.0.219:/home/git/solo.git']]])
   }
   stage('Maven Build') {
        sh '''
        export JAVA_HOME=/usr/local/jdk1.8
        /usr/local/maven3.5/bin/mvn clean package -Dmaven.test.skip=true
        '''
   }
   stage('Build and Push Image') {
    sh '''
        REPOSITORY=192.168.0.2/project/dev-docker:${Tag}
        cat > Dockerfile << EOF
        FROM 192.168.0.2/library/tomcat-85:latest
        RUN rm -rf /usr/local/tomcat/webapps/ROOT
        COPY target/*.war /usr/local/tomcat/webapps/ROOT.war
        CMD ["catalina.sh", "run"]
        EOF
        docker build -t $REPOSITORY .
        docker login -u zhangrenyang -p xxx= 192.168.0.2
        docker push $REPOSITORY
    '''
   }
   stage('Deploy to Docker') {
        sh '''
        REPOSITORY=192.168.0.219/project/dev-docker:${Tag}
        docker rm -f dev-docker: |true
        docker image rm $REPOSITORY |true
        docker login -u zhangrenyang -p xxx= 192.168.0.2
        docker container run -d --name dev-docker -v /usr/local/jdk1.8:/usr/local/jdk -p 88:8080 $REPOSITORY
        '''
   }
}

访问验证

请输入访问令牌

Token不正确,请重新输入