-
环境准备
** Jenkins搭建步骤 **
-
通过rancher2.0部署一个kubernetes环境
-
添加自己的helm仓库(在rancher2.0中叫App Catalog),https://githubcom/seanly/dsky-charts 是只一个demo
-
部署一个Jenkins2.0服务或者使用官方的Jenkins Chart也可以
-
在配置页面中配置kubernetes链接和默认构建节点环境
**其他基础服务**
-
Minio,对象存储服务,用于归档ABS Task包,内部使用minio,外部使用腾讯云或者阿里云
-
Harbor,镜像存储服务,用于存放构建环境镜像和产品打包镜像
-
Nexus,Maven仓库,用于镜像第三方包和私有包归档,方便maven和gradle构建工具使用
-
简化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 simstage('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'])
通过以上需要固定的内容:
-
jk-pipeline-library,统一关键字的库,通过全局配置进行设置,
-
jk-envvars-library,注入变量库,可以通过project这一级别进行设置
-
jkBuildNode, jkDeployNode,Node关键字,区分构建节点和部署节点
-
jkAbsTask,jkAbsRepo,jkAbsPipline, ABS插件关键字,用于调用abs的任务。
-
jkInternalXXX,关键字是在jk-pipeline-library中对以有step进行包装的关键字
推荐编程模式的Jenkinsfile,语义的Jenkinsfile有太多限制。
-
插件依赖
-
kubernetes
-
abs-plugin v4.0.0
-
blue-ocean plugin
-
git
-
gitlab
产考资料:
测试工具: