| // 需要插件 Pipeline Pipeline-Maven Pipeline-Utility-Steps git |
| def createVersion() { |
| // 定义一个版本号作为当次构建的版本,输出结果 20191210175842_69 |
| // return new Date().format('yyyyMMddHHmmss') + "_${env.BUILD_ID}" |
| return new Date().format('yyyyMMdd') + "_${env.BUILD_ID}" |
| |
| } |
| |
| pipeline { |
| agent any |
| |
| environment { |
| GIT_CREDS = credentials('e32346ef-255b-407a-9425-84a358e594c6') //定义git密码 |
| git_branch = 'feature/devops-wj' //git 分支号 |
| |
| service_v = readMavenPom().getVersion() // 获取maven版本号 |
| buildTime = createVersion() //获取时间戳 |
| |
| imageurl = "my.harbor.com/" //定义镜像url |
| deployenv = 'dev' //部署环境 |
| servicename = "gittest" //定义服务名称 |
| |
| serviceport = '8080' // 服务端口号 |
| |
| imagename = "${imageurl}${deployenv}/${servicename}:${service_v}_${buildTime}" //镜像名称 |
| |
| } |
| parameters { |
| // git分支选择参数,第一次使用默认分支构建,之后会出现选择分支的操作 |
| gitParameter branchFilter: 'origin/(.*)', defaultValue: 'dev', name: 'BRANCH', type: 'PT_BRANCH' |
| } |
| |
| stages { |
| stage('git colne') { |
| steps { |
| // 获取最新代码 |
| // git branch: "${git_branch}", credentialsId: 'e32346ef-255b-407a-9425-84a358e594c6', url: 'http://gitserver/mp/gittest.git' |
| git branch: "${params.BRANCH}", credentialsId: 'e32346ef-255b-407a-9425-84a358e594c6', url: "${git_url}" // 动态获取分支 |
| } |
| } |
| stage('maven清理并编译') { |
| steps { |
| // script{ |
| // IMAGE_TAG = readMavenPom().getVersion() |
| // } |
| withMaven(maven: 'maven3') { |
| sh "mvn clean compile package -U -DskipTests=true" |
| } |
| } |
| } |
| /* |
| stage('maven清理并编译') { |
| steps { |
| script{ |
| IMAGE_TAG = readMavenPom().getVersion() |
| } |
| // maven 编译jar包 |
| sh ''' |
| echo ${IMAGE_TAG} |
| /var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/maven3/bin/mvn clean compile package -U |
| ''' |
| } |
| }*/ |
| stage('create dockerfile'){ |
| steps { |
| // 动态生产dockerfile |
| sh """ |
| echo '''FROM 192.168.1.252:8443/library/jiuqi_jdk:201 |
| WORKDIR /home |
| RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone |
| COPY *-bootstrap/target/*-bootstrap-*.jar ${servicename}-bootstrap.jar |
| EXPOSE ${serviceport} |
| ENV JAVA_TOOL_OPTIONS="-Xms512m -Xmx512m -Dspring.profiles.active=${deployenv} -Dspring.cloud.nacos.server-addr=192.168.1.253:8848" |
| ENTRYPOINT java -jar \$JAVA_TOOL_OPTIONS ${servicename}-bootstrap.jar |
| ''' > Dockerfile |
| """ |
| } |
| } |
| stage('docker build and push register'){ |
| steps{ |
| script{ |
| //构建镜像并推送到harbor仓库 |
| sh ''' |
| containerid=$(docker ps -a | grep ${servicename} | awk '{print $1}') |
| if [ "$containerid" != "" ];then |
| docker rm -f $containerid |
| fi |
| imageid=$(docker images | grep ${servicename} | awk '{print $3}') |
| if [ "$imageid" != "" ];then |
| docker rmi $imageid |
| fi |
| docker build -t ${imagename} . |
| docker push ${imagename} |
| ''' |
| } |
| } |
| }/* |
| stage('ansible run docker container') { |
| steps{ |
| // 运行docker run |
| sh ''' |
| ansible-playbook /var/jenkins_home/ansible_script/deploy.yml -e "servicename=${servicename} imagename=${imagename} port=${serviceport}" |
| ''' |
| } |
| }*/ |
| } |
| |
| } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通