使用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
 

 
产考资料: 
 
测试工具:
 
 

猜你喜欢

转载自www.cnblogs.com/jkops/p/9092449.html