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

    最终效果如下:

     

  • 相关阅读:
    iScroll.js 用法参考
    行内元素和块级元素
    struct和typedef struct彻底明白了
    C/C++语法知识:typedef struct 用法详解
    不是技术牛人,如何拿到国内IT巨头的Offer (转载)
    笔试客观题-----每天收集一点点
    <C++Primer>第四版 阅读笔记 第一部分 “基本语言”
    <C++Primer>第四版 阅读笔记 第四部分 “面向对象编程与泛型编程”
    <C++Primer>第四版 阅读笔记 第三部分 “类和数据抽象”
    <C++Primer>第四版 阅读笔记 第二部分 “容器和算法”
  • 原文地址:https://www.cnblogs.com/djoker/p/12375900.html
Copyright © 2011-2022 走看看