Erlo

kubernetes下jenkins实战maven项目编译构建

时间:2020-10-03   阅读:106次   来源:博客园
页面报错
点赞

关于kubernetes环境的jenkins集群

在kubernetes环境部署的jenkins集群,执行任务时会新建pod,任务完成后pod被销毁,架构如下所示:
在这里插入图片描述
在kubernetes搭建jenkins集群的细节,请参考《Helm部署和体验jenkins》

编译构建maven项目

环境信息

  1. kubernetes:1.15
  2. jenkins:2.190.2
  3. maven:3.6.3
  4. spring-cloud-alibaba:2.1.1.RELEASE

创建pipeline任务

pipeline {
    agent {
        label 'my-jenkins-jenkins-slave'
    }
    tools {
        maven 'mvn-3.6.3'
    }
    stages {
        stage('Checkout') {
            steps {
                echo '从GitHub下载spring-cloud-alibaba工程的源码(2.1.1.RELEASE归档包)'
                sh 'wget https://github.com/alibaba/spring-cloud-alibaba/archive/v2.1.1.RELEASE.tar.gz'
                echo '下载结束,解压归档包'
                sh 'tar -zxf v2.1.1.RELEASE.tar.gz'
            }
        }        
        stage('Build') {
            steps {
                echo '开始编译构建'
                sh 'cd spring-cloud-alibaba-2.1.1.RELEASE && mvn clean package -U -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -s /home/jenkins/settings/settings.xml'
                
            }
        }
        stage('Save') {
            steps {
                echo '将构建结果保存到宿主机'
                sh 'cd spring-cloud-alibaba-2.1.1.RELEASE/spring-cloud-alibaba-nacos-discovery/target && cp .#zs#.jar /home/jenkins/jenkins_output/'
                echo '传送完毕'
            }
        }
        stage('Clean') {
            steps {
                echo '清理Maven工程'
                sh 'cd spring-cloud-alibaba-2.1.1.RELEASE && mvn clean'
                echo '清理完毕'
            }
        }
    }
}

上述脚本有以下几点需要注意:
a. lable等于my-jenkins-jenkins-slave,这个要和Pod Templates设置中的标签列表保持一致,如下图红框所示:
在这里插入图片描述
b. 编译构建的命令是"mvn clean package -U -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -s /home/jenkins/settings/settings.xml",这里面使用了指定位置的settings.xml文件,该文件来自configmap的挂载,这样就用上了自定义的settings.xml,里面可以配置局域网的nexus信息;
c. 为了缩短编译构建时间,mvn命令中使用了参数-Dmaven.test.skip=true和-Dmaven.javadoc.skip=true,分别用来跳过单元测试和jave文档制作;
d. 构建结果被复制到/home/jenkins/jenkins_output/,这个路径已经被映射到宿主机的/usr/local/jenkins_output目录,因为只是演示,所以这里只复制了一个子工程的构建结果;
e. 清理阶段的mvn clean其实没什么意义,因为pod很快就会被销毁,这里只是个参考作用,如果有远程资源或者数据库相关的清理操作可以在此执行;

执行pipeline任务

欢迎关注我的公众号:程序员欣宸

https://github.com/zq2599/blog_demos

相关推荐

提交留言

评论留言

还没有评论留言,赶紧来抢楼吧~~

吐槽小黑屋()

* 这里是“吐槽小黑屋”,所有人可看,只保留当天信息。

  • Erlo吐槽

    Erlo.vip2021-08-04 22:32:07Hello、欢迎使用吐槽小黑屋,这就是个吐槽的地方。
  • 返回顶部

    给这篇文章打个标签吧~

    棒极了 糟糕透顶 好文章 PHP JAVA JS 小程序 Python SEO MySql 确认