在k8s里使用pipeline调用jenkins-slave
在k8s里使用pipeline调用jenkins-slave
1. pipeline调用jenkins-slave
2. pipeline使用官方一个实例测试
2.1 在jenkins里配置以上红色标记示例
-
编写jenkins项目
-
配置pipeline文件
podTemplate(label:'jenkins-slave', cloud:'kubernetes', containers: [ containerTemplate( name: 'jnlp', image: 'harbor.scajy.org/library/jenkins-slave:1.8', ), ]) { node ("jenkins-slave") { stage('拉取代码') { echo '拉取代码' git credentialsId: 'f9d39981-7fdc-40ba-9a7a-e44022549503', url: 'git@10.100.24.87:k8s/tomcat_java_demo.git' } stage('编译打包') { echo '编译打包' } stage('部署发布') { echo '部署发布' } } }
-
保存重新部署测试
3. 正式部署CI编译代码
3.1 编写代码示例
// 公共
def registry = "harbor.scajy.org" // harbor的连接地址
// 项目
def project = "k8s" // harbor的项目目录
def app_name = "java-demo" // 项目名称
def image_name = "${registry}/${project}/${app_name}:${BUILD_NUMBER}" // 推送harbor的全路径,BUILD_NUMBER是取得当前jenkins构建的号,为版本号
def git_address = "git@10.100.24.87:k8s/tomcat_java_demo.git" // 根据项目要更换git地址
def base_image = "${registry}/library/tomcat:latest" // 构建项目需要的基础镜像
// 认证
def secret_name = "registry-pull-secret"
def docker_registry_auth = "22473425-d3fc-419b-8c08-04dea86c3e3d" // harbor仓库key,这个key要去jenkins查找
def git_auth = "f9d39981-7fdc-40ba-9a7a-e44022549503" // git代码仓库的key,这个key要去jenkins查找
def k8s_auth = "80e66a86-d189-4555-b1ef-054285031b7a"
podTemplate(label: 'jenkins-slave', cloud: 'kubernetes', containers: [
containerTemplate(
name: 'jnlp', // 模板
image: "${registry}/library/jenkins-slave:1.8" // jenkins-slave从服务器镜像
),
],
volumes: [
hostPathVolume(mountPath: '/var/run/docker.sock', hostPath: '/var/run/docker.sock'),
hostPathVolume(mountPath: '/usr/bin/docker', hostPath: '/usr/bin/docker')
],
)
{
node("jenkins-slave"){
// 第一步
stage('拉取代码'){
checkout([$class: 'GitSCM', branches: [[name: '${Branch}']], userRemoteConfigs: [[credentialsId: "${git_auth}", url: "${git_address}"]]])
}
// 第二步
stage('代码编译'){
sh "mvn clean package -Dmaven.test.skip=true"
}
// 第三步
stage('构建镜像'){
withCredentials([usernamePassword(credentialsId: "${docker_registry_auth}", passwordVariable: 'password', usernameVariable: 'username')]) {
sh """
echo '
FROM ${base_image}
RUN rm -rf /usr/local/tomcat/webapps/*
ADD target/*.war /usr/local/tomcat/webapps/ROOT.war
' > Dockerfile
ls
ls target
docker build -t ${image_name} .
docker login -u ${username} -p '${password}' ${registry}
docker push ${image_name}
"""
}
}
}
}
3.2 在jenkins开始实行案例
3.2.1 登陆jenkins
3.2.2 在jenkins配置项目使用的key
-
点击系统管理
-
点击配置manage credentials
-
添加凭据
-
添加连接密钥
-
添加harbor密钥
-
保存后,我们可以看到ID
-
使用pipeline流水线语法,保存账号和密码
3.2.3 案例部署
-
点击配置
-
参数化构建过程
-
配置pipeline
下面是配置代码详细// 公共 def registry = "harbor.scajy.org" // harbor的连接地址 // 项目 def project = "k8s" // harbor的项目目录 def app_name = "java-demo" // 项目名称 def image_name = "${registry}/${project}/${app_name}:${BUILD_NUMBER}" // 推送harbor的全路径,BUILD_NUMBER是取得当前jenkins构建的号,为版本号 def git_address = "git@10.100.24.87:k8s/tomcat_java_demo.git" // 根据项目要更换git地址 def base_image = "${registry}/library/tomcat:latest" // 构建项目需要的基础镜像 // 认证 def secret_name = "registry-pull-secret" def docker_registry_auth = "22473425-d3fc-419b-8c08-04dea86c3e3d" // harbor仓库key,这个key要去jenkins查找 def git_auth = "f9d39981-7fdc-40ba-9a7a-e44022549503" // git代码仓库的key,这个key要去jenkins查找 def k8s_auth = "80e66a86-d189-4555-b1ef-054285031b7a" podTemplate(label: 'jenkins-slave', cloud: 'kubernetes', containers: [ containerTemplate( name: 'jnlp', // 模板 image: "${registry}/library/jenkins-slave:1.8" // jenkins-slave从服务器镜像 ), ], volumes: [ hostPathVolume(mountPath: '/var/run/docker.sock', hostPath: '/var/run/docker.sock'), hostPathVolume(mountPath: '/usr/bin/docker', hostPath: '/usr/bin/docker') ], ) { node("jenkins-slave"){ // 第一步 stage('拉取代码'){ checkout([$class: 'GitSCM', branches: [[name: '${Branch}']], userRemoteConfigs: [[credentialsId: "${git_auth}", url: "${git_address}"]]]) } // 第二步 stage('代码编译'){ sh "mvn clean package -Dmaven.test.skip=true" } // 第三步 stage('构建镜像'){ withCredentials([usernamePassword(credentialsId: "${docker_registry_auth}", passwordVariable: 'password', usernameVariable: 'username')]) { sh """ echo ' FROM ${base_image} RUN rm -rf /usr/local/tomcat/webapps/* ADD target/*.war /usr/local/tomcat/webapps/ROOT.war ' > Dockerfile ls ls target docker build -t ${image_name} . docker login -u ${username} -p '${password}' ${registry} docker push ${image_name} """ } } } }
-
点击构建,
-
验证是否构建成功
-
登陆harbor验证镜像是否上传了
分类:
k8s
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何给本地部署的DeepSeek投喂数据,让他更懂你
· 超详细,DeepSeek 接入PyCharm实现AI编程!(支持本地部署DeepSeek及官方Dee
· 用 DeepSeek 给对象做个网站,她一定感动坏了
· .NET 8.0 + Linux 香橙派,实现高效的 IoT 数据采集与控制解决方案
· DeepSeek处理自有业务的案例:让AI给你写一份小众编辑器(EverEdit)的语法着色文件