PaaS-CI 基于Jenkinsfile out of SCM

157 阅读2分钟

对于原生kubesphere ci流程修改项:

增加jenkins插件(Generic Webhook Trigger) 获取gitlab post 过来的数据

dockerfile将不在源码中存储,使用统一dockerfile

chart.yml将不在源码中存储,使用统一chart-template

测试用例:

choerodon组织:系统运维组

应用id:kubesphere-ci-test

步骤:

1)从gitlab触发jenkins并获取对应参数:

webhook地址:http://172.25.17.21:30180/generic-webhook-trigger/invoke?token=xxx

Post content parameters

CI_COMMIT_REF_NAME       ref
CI_COMMIT_SHA                 checkout_sha
CI_PROJECT_ID                     project:id
CI_PROJECT_NAME              project:name
CI_GITLABURL                      project:web_url
CI_GITLAB_NAMESPACES     project:path_with_namespace

Header parameters:

X-Gitlab-Token

2)check out scm 

git(url: '$CI_GITLABURL', credentialsId: 'gitlab-paas', branch: "${CI_COMMIT_REF_NAME}", changelog: true, poll: false)

3)Image Build and PusH

使用paas现用的java基础镜像,存储至镜像仓库符合现命名规则

4)Chart Build and PusH

使用paas现用的chart模板,存储至chart私服符合现命名规则

jenkins修改项:

变更jenkins时区

kubectl edit deployments. -n kubesphere-devops-system ks-jenkins

Env.JAVA_TOOL_OPTIONS 增加 -Duser.timezone=Asia/Shanghai

获取当前时间做为镜像tag

Zentimestamp plugin(data fromat配置遵循paas现有格式:yyyy.MM.dd-HHmmss)

接入方式:

1)在choerodon端git上添加webhook(此地址为现测试环境jenkins地址,token为job执行token,此token固定):

http://172.25.17.21:30180/generic-webhook-trigger/invoke?token=192TFxzDqE7vIB9YkpRNk12M

2)在webhook添加Secret Token(此token每个应用不同,为choerodon生成应用时生成,步骤中chart包上传时依赖此token辨识应用):

3)项目需添加push@xforceplus.com此账号到member中,使其拥有拉取项目权限(此账号为测试用,后期可能更改):

4)因后端流程通用,编译后的jar包应为app.jar

待处理项:

确定适用此流程的分支

确定某些分支流程结束后的动作,比如部署之类

风险项:

1)在kubesphere页面修改任务会同步到jenkins,因kubesphere配置页面中不支持获取post的数据,所以会导致在jenkins端的配置项丢失,因jenkins部分配置不被kubesphere支持,故后期可能不在kubesphere页面端进行配置修改