jenkinsfile example

// 需要插件 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}"
'''
}
}*/
}
}
posted @   蒲公英PGY  阅读(152)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示