Jenkins集成Helm进行应用持续发布

Jenkins集成Helm进行应用持续发布

目标

  • 在开发过程中,对开发的应用版本进行持续迭代并且发布到kubernetes集群中
  • 使用Helm工具以chart升级的方式完成不同版本应用的发布升级

前提

  • 在使用Helm之前,已经完成了Jenkins的部署,并且已经正常运行脚本与Kubernetes平台进行
  • 通过kubectl命令执行配置文件完成应用的版本更新

实现步骤

  • helm chart制作,此步骤略

  • 包含helm工具的jenkins容器镜像制作

    制作完成的镜像文件 harbor.3incloud.com/library/jenkins-jnlp:latest

    -w1118

  • 初始化应用安装

    helm init --client-only && helm repo add --username jenkins --password password myharbor https://harbor.3incloud.com/chartrepo/XXXX && helm repo update

    这里主要就是在slave中初始化helm,并且添加私有的chart仓库

  • Jenkins完成应用持续部署

    helm upgrade --reuse-values --set-string image.tag='${build_tag}' deploy-name --version 0.1.0 myharbor/chart-name

    通过重新设定chart的image.tag完成容器的版本升级,--reuse-values 表示在原本参数的基础上进行更新

完整的Pipeline脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
node('worker') {
stage('Clone') {
echo "1.Clone Stage"
git credentialsId: 'gitlab-auth', url: 'https://gitlab.3incloud.com/xxx/xxx-server.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 harbor.3incloud.com/xxx/xxx-server:${build_tag} ."
}
stage('Push') {
echo "4.Push Docker Image Stage"
withDockerRegistry(credentialsId: 'harbor-ci', url: 'https://harbor.3incloud.com') {
sh "docker push harbor.3incloud.com/xxx/xxx-server:${build_tag}"
}
}
stage('Deploy') {
echo "5. Deploy Stage"
sh "helm init --client-only && helm repo add --username jenkins --password password myharbor https://harbor.3incloud.com/chartrepo/xxx && helm repo update"
sh "helm upgrade --reuse-values --set-string image.tag='${build_tag}' avic-server --version 0.1.0 myharbor/xxx-server"
}
}

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×