jenkins-jnlp pipeline 流水线
- k8s安装jenkins-master请参看之前的。
https://blog.csdn.net/weixin_43606975/article/details/119944602?spm=1001.2014.3001.5501 - 安装插件pipeline
- 创建流水线
![在这里插入图片描述](https://img-blog.csdnimg.cn/1c026e5473394d31970bb5a330228048.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCx5piv546p5YS_Leibi-WEvw==,size_20,color_FFFFFF,t_70,g_se,x_16)
- pipeline语法
properties(
[
parameters([
string(defaultValue: '', name: 'GIT_TAG', description: '请根据发布类型进行选择发布:\n1,输入-TESTING-发布-最新代码-到灰度\n2,输入-LATEST-发布-最新代码-到生产\n3,输入-版本号-发布-制定版本-到生产 ' )
])
]
)
def label = "mypod-${UUID.randomUUID().toString()}"
def app_name = "tomee"
podTemplate(label: 'label', cloud: 'kubernetes', namespace: 'default' , containers: [
containerTemplate(
name: 'jnlp',
image: 'registry.cn-beijing.aliyuncs.com/abcdocker/jenkins:v1.4'
),
],
volumes: [
hostPathVolume(mountPath: '/var/run/docker.sock', hostPath: '/var/run/docker.sock'), #前面是物理机的卷,后面是容器的卷
hostPathVolume(mountPath: '/usr/bin/docker', hostPath: '/usr/bin/docker'),
hostPathVolume(mountPath: '/root/.ssh/', hostPath: '/root/.ssh/'),
hostPathVolume(mountPath: '/opt/apache-maven-3.6.1', hostPath: '/opt/apache-maven-3.6.1')
],)
{
node('label') { #这个标签可以选择自己的其他节点,写上就好。
stage('Task') {
if ("$GIT_TAG" == 'lzx') {
stage('拉取代码') {
git credentialsId: '20854938-2b1f-47a4-a7e1-a6390cd772c7', url: 'http://192.168.2.45/root/test.git'
def mytag = sh returnStdout: true, script: 'git describe --always --tag'
sh "git checkout -b $mytag"
echo "mytag $mytag ${mytag} ----"
// echo "dai ma"
}
stage('run shell') {
echo "dai ma xia"
// sh '''
// export MAVEN_HOME=/opt/apache-maven-3.6.1
// export PATH=$MAVEN_HOME/bin:$PATH
// mkdir -p /root/repo
// cp /opt/apache-maven-3.6.1/bin/mvn /usr/bin/
// mvn clean package -Dmaven.test.skip=true
// '''
}
stage('部署到K8S'){
// def mytag = sh returnStdout: true, script: 'git describe --always --tag'
// def image_name = "${app_name}:${mytag}".minus("\n")
// sh """
// sed -i 's#tomcat:latest#${registry}/${namespace}/${image_name}#' java-deploy.yaml
// """
// sh """
// sed -i 's#tomcat#${app_name}#' java-deploy.yaml
// """
kubernetesDeploy configs: 'java-deploy.yaml', kubeconfigId: "670cc3bd-4c53-49f7-a5a1-a38ae4013bf0"
}
}
else if ("$GIT_TAG" == '2'){
sh '''
ssh root@192.168.2.39 "kubectl rollout undo deployment/mydeploy -n default"
'''
}
else {
echo 'shu ru can shu bu dui'
}
}
}
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/bed36501ba2d41e89c7a03f7b5459edf.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCx5piv546p5YS_Leibi-WEvw==,size_20,color_FFFFFF,t_70,g_se,x_16)
- 也可以用构建化参数:需要装插件。
![在这里插入图片描述](https://img-blog.csdnimg.cn/0deda40090b443dd93c4f2381d6c9215.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCx5piv546p5YS_Leibi-WEvw==,size_20,color_FFFFFF,t_70,g_se,x_16)
5.点击下面的流水线语法:可以获取git 的凭证id。
![在这里插入图片描述](https://img-blog.csdnimg.cn/f96dba4f309e480cb45c07e94f12c1c7.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCx5piv546p5YS_Leibi-WEvw==,size_20,color_FFFFFF,t_70,g_se,x_16)
6.生成git凭证id:
![在这里插入图片描述](https://img-blog.csdnimg.cn/8e16b2d1fa93402ab9e957a1c60dbe1a.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCx5piv546p5YS_Leibi-WEvw==,size_20,color_FFFFFF,t_70,g_se,x_16)
7.启动流水线。
![在这里插入图片描述](https://img-blog.csdnimg.cn/79994ca9e2e94117b60d7b92aba7c9d5.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCx5piv546p5YS_Leibi-WEvw==,size_20,color_FFFFFF,t_70,g_se,x_16)
8.查看jenkins-jnlp容器已经启动。
![在这里插入图片描述](https://img-blog.csdnimg.cn/e8eef443e6b74eb881d2f13db77b22ec.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCx5piv546p5YS_Leibi-WEvw==,size_20,color_FFFFFF,t_70,g_se,x_16)
。。。。。。。EDN。。。。。。。。。