zoukankan      html  css  js  c++  java
  • 03.pipeline实现项目自动编译docker镜像自动打包

    https://jenkins.io/zh/doc/book/pipeline/ 官方教程,可以中文。Jenkinsfile就是把pipeline内容保存到文件,然后提交到svn等版本控制库中。安装blue ocean流水线插件。

     打开后如下图所示:

     修改Jenkins有别的命名空间的权限

    # rbac.yaml文件添加内容如下,后提交
    ---
    apiVersion: rbac.authorization.k8s.io/v1beta1
    kind: ClusterRoleBinding
    metadata:
      name: jenkins-myself
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: admin
    subjects:
    - kind: ServiceAccount
      name: jenkins2
      namespace: kube-ops

    添加svn-get项目,使用SCM方式获取pipeline流水线文件

     其中Jenkinsfile-svn-get文件内容如下,流水线定义步骤为:从svn上拉取nginx源码 --> 安装编译时依赖文件 --> 编译 --> 把编译后的文件打包 --> 调用定义的dockerfile开始构建镜像 --> 推送镜像到仓库 --> 调用kubectl完成镜像部署(这里也可以定义yaml文件来实现)

    node('haimaxy-jnlp'){
      checkout(
        [
          $class: 'SubversionSCM', 
          additionalCredentials: [], 
          excludedCommitMessages: '', 
          excludedRegions: '', 
          excludedRevprop: '', 
          excludedUsers: '', 
          filterChangelog: false, 
          ignoreDirPropChanges: false, 
          includedRegions: '', 
          locations: [
            [cancelProcessOnExternalsFail: true, 
            credentialsId: '1', 
            depthOption: 'infinity', 
            ignoreExternalsOption: true, 
            local: '.', remote: 'svn://192.168.31.9/nginx']
            ], 
          quietOperation: true, 
          workspaceUpdater: [$class: 'UpdateUpdater']
        ]
      )
      stage('yum'){
           sh 'rpm --rebuilddb && yum --nogpgcheck -y install pcre-devel zlib-devel gcc'
       }
      stage("build nginx"){
          sh './configure --prefix=/usr/local/nginx && make && make install'
      }
      stage('tar'){
           sh 'tar zcvf nginx.tar.gz /usr/local/nginx'
       }
       stage('docker build'){
           sh 'docker build -t 192.168.31.9:5000/jenkins-build-nginx -f dockerfile . '
       }
       stage('docker push'){
        sh 'docker push 192.168.31.9:5000/jenkins-build-nginx'
       }
             stage('kubectl run'){
                    sh 'kubectl run nginx --image=192.168.31.9:5000/jenkins-build-nginx --image-pull-policy=Always --namespace=default'
             }
    }

    dockerfile文件内容如下

    FROM 192.168.31.9:5000/openvz-centos7
    ADD nginx.tar.gz /
    RUN echo 'daemon off;' >> /usr/local/nginx/conf/nginx.conf
    CMD /usr/local/nginx/sbin/nginx

    最终效果如下:

     

  • 相关阅读:
    【技巧】断点调试你的express项目
    day39-Spring 18-Spring的JDBC模板:查询的操作
    day39-Spring 17-Spring的JDBC模板:完成增删改的操作
    day39-Spring 16-Spring的JDBC模板:设置参数到属性文件
    day39-Spring 15-Spring的JDBC模板:C3P0连接池配置
    day39-Spring 14-Spring的JDBC模板:DBCP连接池配置
    day39-Spring 13-Spring的JDBC模板:默认连接池的配置
    day39-Spring 12-Spring的JDBC模板:快速入门
    day39-Spring 11-Spring的AOP:基于AspectJ的XML配置方式
    day39 10-Spring的AOP:基于AspectJ的切点定义
  • 原文地址:https://www.cnblogs.com/djoker/p/12375900.html
Copyright © 2011-2022 走看看