先创建一个Dockerfile

只增加了maven命令(也可以把下面挂载的目录都打包进来),推到镜像仓库

FROM jenkins/inbound-agent

MAINTAINER jzc
USER root

# 安装 maven
ADD apache-maven-3.6.2-bin.tar.gz /usr/local
RUN    ln -s /usr/local/apache-maven-3.6.2/bin/mvn /usr/bin/mvn && \
       ln -s /usr/local/apache-maven-3.6.2 /usr/local/apache-maven && \
       mkdir -p /usr/local/apache-maven/repo

COPY settings.xml /usr/local/apache-maven/conf/settings.xml

USER jenkins

这个tag为:172.21.114.171:80/k8s-image/jenkins-slave-mvn:v4,下面的image要用

新建jenkins的pipline:

挂载主机目录(这里在做docker镜像的时候,没有把这些命令打包进去。)

1,/var/run/docker.sock  #用来打包docker镜像
     /usr/bin/docker
2,/home    #这里包含了我的.kube目录(里面有kubeconfig令牌)和kubectl二进制文件,用来操作k8s集群


3,/usr/bin/git  #保证你的主机安装了git,用来git clone代码
     /usr/lib64/libpcre.so.1.2.0 #这个是git的依赖库,需要改名

 pipline测试代码:

//测试
def label = "test-${UUID.randomUUID().toString()}"

podTemplate(label: 'label', cloud: 'kubernetes', containers: [
    containerTemplate(
        name: 'jnlp', 
        image: '172.21.114.171:80/k8s-image/jenkins-slave-mvn:v4'
    ),
],
  volumes: [
    hostPathVolume(mountPath: '/var/run/docker.sock', hostPath: '/var/run/docker.sock'),
    hostPathVolume(mountPath: '/usr/bin/docker', hostPath: '/usr/bin/docker'),
    hostPathVolume(mountPath: '/home/jenkins', hostPath: '/home'),
    hostPathVolume(mountPath: '/usr/bin/git', hostPath: '/usr/bin/git'),
    hostPathVolume(mountPath: '/lib/libpcre.so.1', hostPath: '/usr/lib64/libpcre.so.1.2.0'),
],)
{
    node('label') {
        stage('Task') {
            stage('1-拉取代码') {

                  sh "git --version"
            }
            stage('2-编译打包') {
                  sh "mvn --version"
            }
            
            stage('3-构建上传镜像') {

                 sh "docker --version"

                
            }         
            stage('4-部署'){
                sh "/home/jenkins/kubectl get pod"
            }
        }
    }
}

点击构建,输出结果:

 

这几个命令都没问题。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐