先决条件
jenkins部署完成 | 这里用的是2.486 |
部署方式 | k8s集群使用sts部署 |
git仓库 | gitlab本地自己搭的gitlab |
项目地址 | https://github.com/pig-mesh/pig.git |
项目是开源项目.我个人为了贴近生产环境所以拉倒了gitlab中.
编辑Jenkinsfile阶段
创建流水线
创建gitlab代码拉取凭据
这里使用的是用户名密码的方式,(后面直接根据url地址关联到这个用户名密码即可使用)
配置流水线信息
正常情况下需要配置流水线的基础配置信息,但是这里说了使用声明式的配置方式,所有基础配置都在jenkinsfile中,
这里创建项目组以及创建仓库的步骤就不说了.
项目是一个分布式项目,所以有顶级pom文件个子pom文件.这里说明一下,有些问题等我搞明白了后续再补充,
顶级pom文件中是包含子pom文件的.其中module字段中的名称就是各个子项目的项目名称.所以在进行构建的时候需要名称一致进行构建打包操作.具体以操作名称后面的Jenkinsfile中会体现.
书写Jenkinsfile文件,
env.serviceName = "${env.JOB_NAME}".split('_')[0]
def jdks = ["jdk17":"/opt/java/openjdk",
"jdk11":"/opt/java/java11"
]
currentBuild.displayName = "${env.serviceName}"
currentBuild.description = "serviceName: ${env.serviceName}"
pipeline{
agent any
parameters {
string (name: 'srcUrl',defaultValue:'http://192.168.59.30:28080/devops8/pig.git',description:'代码仓库地址')
choice (name: 'javaVersion', choices: ['jdk17','jdk11','jdk8'], description: 'jdk版本-根据java版本来选择')
choice (name: 'branchName', choices: ['main','master','jdk17','dev','test',], description: '仓库分支分支')
string (name: 'VERSION',defaultValue:'RELEASE-1.1.1',description:'构建版本')
}
//这里用于初始化环境变量
stages{
stage("init"){
stage{
script{
sh """
export JAVA_HOMES=${jdks["${params.javaVersion}"]}
echo \$JAVA_HOMES
"""
}
}
}
//这里拉取代码
stage("run"){
steps{
script {
//script
//拉取仓库代码
checkout scmGit(branches: [[name: "${params.branchName}"]],
extensions: [],
userRemoteConfigs: [[credentialsId: 'gitlab-admin', //添加凭据
url: "${params.srcUrl}"]])
sh 'ls -l '
echo "${params.VERSION}"+'版本号码'
echo "${params.serviceName}"+'服务名称'
}
}
}
//这里构建jar包
stage("Build"){
steps{
script {
sh "mvn clean package -pl ${env.serviceName} -am"
sh "ls ./pig-register/target"
}
}
}
}
}
说明一下:
这里大致分成几个部分,
全局环境变量
1.环境变量