使用Jenkins Pipeline2.0實現CI/CD思路


  1. 環境準備
 
** Jenkins搭建步驟 **
 
  1. 經過rancher2.0部署一個kubernetes環境
  2. 添加本身的helm倉庫(在rancher2.0中叫App Catalog),https://githubcom/seanly/dsky-charts 是隻一個demo
  3. 部署一個Jenkins2.0服務或者使用官方的Jenkins Chart也能夠
  4. 在配置頁面中配置kubernetes連接和默認構建節點環境
 
**其餘基礎服務**
 
  1. Minio,對象存儲服務,用於歸檔ABS Task包,內部使用minio,外部使用騰訊雲或者阿里雲
  2. Harbor,鏡像存儲服務,用於存放構建環境鏡像和產品打包鏡像
  3. Nexus,Maven倉庫,用於鏡像第三方包和私有包歸檔,方便maven和gradle構建工具使用
 
 
 

 
  1. 簡化Jenkinsfile編寫思路
 
 
藉助pipeline-library( https://jenkins.io/doc/book/pipeline/shared-libraries/)開發文檔中思路,擴展Jenkinsfile語法,
實現jkAbsTask,jkAbsReport,jkAbsPipeline(這幾個主要是使用abs-plugin的功能),讓開發插件編程編寫bash或者ant腳本。
 
爲了安全pipeline-library採用在全局配置中進行設置,這樣能夠作到安全(隱藏實現),可是須要通用命名。
 
Jenkinsfile 內容:
 

#!groovy
@Library('jk-pipeline-library') _
 
//https://mygitlab/KubeOps/jk-envvar-library
//@Library(‘jk-envvar-library’)
 
jkBuildNode([labels: [‘java1.6’]]) {
  
  checkout sim
 
  stage('Trust') {
    enforceTrustedApproval()
  }
 
  stage(「Inject Variable」) {
    inject(ghoul)
  }
  
  stage(‘package’) {
    
    final String groupId = ‘xyz.opstack.jenkins.tasks’
    final String artifactId = ‘cloudartifact’
 
    jkAbsTask(
      script: this,
      ‘task.id’: ’server’
    )    
    
    jkAbsTask(
      script: this,
      ‘task.id’: ‘opspkg’,
      ‘group.id’: groupId, 
      ‘artifact.id’: artifactId,
      ‘fileset.include’: ‘run.xml,VERSION'
    )
  }
 
  stage(‘artifact’) {
      jkAbsTask(
        script: this,
        ‘task.id’: ‘custom task’,
        ‘command’: ‘’'
echo 「hello, cloud artifact」
‘’’,
        ‘type’: ‘cmdline'
      )
  }
}
 
jkInternalApproval(
    script: this,
    message: ‘Please Confirm Deploy? ‘)
)
 
jkDeployNode([labels: [‘ansible-gf’]]) {
 
    jkInternalHelmDeploy(
        script: this
    )
}
 
也能夠結合.ci.yml使用
 
jkAbsPipeline(
    script: this,
    pipeline: ‘dev'
)
 
jkAbsPipeline(
    script: this,
    configFile: ‘.jenkins.yml'
    pipeline: ‘stage: build’,
    vars: [
        ‘hello’: ‘world'
    ]
)
 
 
 
經過以上須要固定的內容:
 
  1. jk-pipeline-library,統一關鍵字的庫,經過全局配置進行設置,
  2. jk-envvars-library,注入變量庫,能夠經過project這一級別進行設置
  3. jkBuildNode, jkDeployNode,Node關鍵字,區分構建節點和部署節點
  4. jkAbsTask,jkAbsRepo,jkAbsPipline, ABS插件關鍵字,用於調用abs的任務。
  5. jkInternalXXX,關鍵字是在jk-pipeline-library中對以有step進行包裝的關鍵字
 
推薦編程模式的Jenkinsfile,語義的Jenkinsfile有太多限制。
 
 

 
  1. 插件依賴
  • kubernetes
  • abs-plugin v4.0.0
  • blue-ocean plugin
  • git
  • gitlab
 

 
產考資料: 
 
測試工具:
相關文章
相關標籤/搜索