k8s中jenkins构建maven项目22

Posted tty之星

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了k8s中jenkins构建maven项目22相关的知识,希望对你有一定的参考价值。

上次第20的内容是通过jenkins构建内容,但是没有使用maven进行编译

现在开始实现一下

1、首先使用jenkinssalve构建maven,就必须让jenkins有maven

首先基于原来的jenkins镜像,cnych/jenkins:jnlp6作为基础镜像然后把maven工具放到镜像,然后添加环境变量,可以出现mvn -version出现成功就行

网上有资料可以自己操作,这里是dockerfile的命令

 

2、配置jenkins

因为maven编译需要第三方包,一般不配置国内仓库回到国外下载,会有超时,所以要准备一个settings。xml文件

改成阿里的

 

然后创建configmap文件然后挂载到jenkinsslave的镜像

kubectl create configmap settings.xml --from-file=settings.xml -n kube-ops

 

 

接下来开始挂载,需要挂载的比较多

 

 

 

 

保存完成就行

 

3、开始构建,先简单测试一下使用-s指定settings.xml文件

 

 

node(\'haimaxy-jnlp\'){
    stage(\'build\') {
      echo "1.Clone Stage"
      sh "mvn archetype:generate -DgroupId=org.javaboy -DartifactId=clb -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false -s /home/jenkins/settings/settings.xml"
    }
    stage(\'package\') {
      echo "2.Test Stage"
      sh "cd /home/jenkins/agent/workspace/kube-ops/clb && mvn package"
    }
    stage(\'install\') {
      echo "3.Build Docker Image Stage"
      sh "cd /home/jenkins/agent/workspace/kube-ops/clb  && mvn install"
    }
}

构建没有问题,说明maven没问题

 

 

4、开始构建一个tomcat项目

 

node(\'haimaxy-jnlp\'){
        stage(\'Clone\') {
        echo "1.Clone Stage"
        git credentialsId: \'5789c68f-ebf6-45b8-b9e5-5648c1a3eb09\', url: \'http://139.155.71.51/root/tomcat.git\'
     script {
    //获取comment id
        env.imageTag = sh (script: \'git rev-parse --short HEAD ${GIT_COMMIT}\', returnStdout: true).trim()
      }
   }    

    stage(\'build\') {
      echo "2.mvn clean"
      sh "cd /home/jenkins/agent/workspace/bbs/solo-master && mvn clean -Dmaven.test.skip=true  install -s /home/jenkins/settings/settings.xml"
    }
    stage(\'build dockerfile\') {
      echo "3.build dockerfile"
      sh \'\'\'
cd /home/jenkins/agent/workspace/bbs/solo-master/target
REPOSITORY=10.4.7.52/cnych/jenkins-demo:${imageTag}
cat >> Dockerfile << EOF
FROM tomcat:7
RUN mkdir /usr/local/tomcat/webapps/ROOT
ADD ./solo.jar /usr/local/tomcat/webapps/ROOT
USER root
EOF
docker build -t $REPOSITORY .
      \'\'\'
    }
    stage(\'docker push  \') {
      echo "docker run"
      sh \'\'\'
      REPOSITORY=10.4.7.52/cnych/jenkins-demo:${imageTag}
      docker login http://10.4.7.52 -u admin -p Harbor12345
      docker push $REPOSITORY
      \'\'\'
    }
        stage(\'kubectl apply\'){
          echo "kubectl apply"
          sh \'\'\'
REPOSITORY=10.4.7.52/cnych/jenkins-demo:${imageTag}
cat >> tomcat.yaml << EOF          
apiVersion: apps/v1
kind: Deployment
metadata:
  name: tomcat-deployment
  labels:
    app: tomcat
spec:
  replicas: 3
  selector:
    matchLabels:
      app: tomcat
  template:
    metadata:
      labels:
        app: tomcat
    spec:
      containers:
      - name: tomcat
        image: \\$REPOSITORY
        ports:
        - containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
  name: tomcat-service
  labels:
    app: tomcat
spec:
  ports:
  - port: 8080
    targetPort: 8080
    nodePort: 31305
  selector:
    app: tomcat
  type: NodePort
EOF
          \'\'\'
      sh "kubectl delete -f tomcat.yaml"
      sh "kubectl apply -f tomcat.yaml"
      
    }

}

 

这里可以参考一下这个文档

https://cnsre.cn/posts/210608607296/

 

 

5、开始构建

 

 

看看容器是否启动

 

访问一下试试

这是我从github 找的一个solo开源的文件,测试的编译,吧包放到了自己的gitlab上面,然后测试编译,所以会有报错

了解编译过程就行,需要自己测试可以下载从github上面

 

在看看镜像

 

 

说明tag生成成功了

今天演示到这里,后面在写一下回滚更新

 

 

 

以上是关于k8s中jenkins构建maven项目22的主要内容,如果未能解决你的问题,请参考以下文章

Maven 无法在 jenkins 解析 POM

jenkins(三)部署后台服务

Jenkins——Jenkins 构建Maven项目(三种风格的项目构建自由风格Maven风格Pipeline流水线风格)

Jenkins构建Maven项目和Pipeline项目

Jenkins构建Maven项目和Pipeline项目

K8S系列---jenkins主从构建发布流程