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

最終效果如下:

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM