Jenkins pipeline配置
示例1
//定义代码仓地址
def git_url = 'https://github.com/lookforstar/jenkins-demo.git'
//定义SWR登录指令
def swr_login = 'docker login -u cn-east-3@xxxxx -p xxxxx swr.cn-east-3.myhuaweicloud.com'
//定义SWR区域
def swr_region = 'cn-east-3'
//定义需要上传的SWR组织名称
def organization = 'container'
//定义镜像名称
def build_name = 'jenkins-demo'
//部署集群的证书ID
def credential = 'k8s-token'
//集群的APIserver地址,需保证从Jenkins集群可以正常访问该地址
def apiserver = 'https://192.168.0.100:6443'
pipeline {
agent any
stages {
stage('Clone') {
steps{
echo "1.Clone Stage"
git url: git_url
script {
build_tag = sh(returnStdout: true, script: 'git rev-parse --short HEAD').trim()
}
}
}
stage('Test') {
steps{
echo "2.Test Stage"
}
}
stage('Build') {
steps{
echo "3.Build Docker Image Stage"
sh "docker build -t swr.${swr_region}.myhuaweicloud.com/${organization}/${build_name}:${build_tag} ."
//${build_tag}表示获取上文中的build_tag变量作为镜像标签,为git rev-parse --short HEAD命令的返回值,即commit ID。
}
}
stage('Push') {
steps{
echo "4.Push Docker Image Stage"
sh swr_login
sh "docker push swr.${swr_region}.myhuaweicloud.com/${organization}/${build_name}:${build_tag}"
}
}
stage('Deploy') {
steps{
echo "5. Deploy Stage"
echo "This is a deploy step to test"
script {
sh "cat k8s.yaml"
echo "begin to config kubenetes"
try {
withKubeConfig([credentialsId: credential, serverUrl: apiserver]) {
sh 'kubectl apply -f k8s.yaml'
//该YAML文件位于代码仓中,此处仅做示例,请您自行替换
}
println "hooray, success"
} catch (e) {
println "oh no! Deployment failed! "
println e
}
}
}
}
}
}
示例2
node('master'){
stage('Prepare') {
echo "0. Prepare Stage"
script {
image_pull_secret = 'default-secret'
swr_endpoint = 'swr.ap-southeast-2.myhuaweicloud.com'
swr_org = 'paas-poc'
image_name = 'jenkins-sample01'
docker_login_username = 'ap-southeast-2@OLEWXUQMRAC8LNMUPSW3'
docker_login_password = '1f31195cba059bae0f79d42aaa39e2cf93b4da44ec7a386a0c3e6d9c154f2db0'
}
}
stage('Clone') {
echo "1.Clone Stage"
git url: "https://github.com/ibusybox/jenkins-demo.git"
script {
build_tag = sh(returnStdout: true, script: 'git rev-parse --short HEAD').trim()
}
}
stage('Test') {
echo "2.Test Stage"
}
stage('Build') {
echo "3.Build Docker Image Stage"
sh "docker build -t ${swr_endpoint}/${swr_org}/${image_name}:${build_tag} ."
}
stage('Push') {
echo "4.Push Docker Image Stage"
sh "docker login -u ${docker_login_username} -p ${docker_login_password} ${swr_endpoint}"
sh "docker push ${swr_endpoint}/${swr_org}/${image_name}:${build_tag}"
}
stage('Deploy') {
echo "5. Deploy Stage"
echo "This is a deploy step to test"
sh "sed -i 's/cnych\\/jenkins-demo:<BUILD_TAG>/${swr_endpoint}\\/${swr_org}\\/${image_name}:${build_tag}/' *.yaml"
sh "sed -i 's/<IMAGE_PULL_SECRET>/${image_pull_secret}/' *.yaml"
sh "cat *.yaml"
echo "begin to config kubenetes"
try {
kubernetesDeploy(
kubeconfigId: "weather2",
configs: "k8s.yaml")
println "hooray, success"
} catch (e) {
println "oh no! Deployment failed! "
println e
}
}
}
