使用Jenkins Pipeline构建的tRPC-java服务CI/CD流水线demo
包含下列pipeline:
pipeline | 说明 |
---|---|
maven-build | maven项目单元测试、构建、制品归档 |
maven-docker-build | 在maven-build基础上,增加docker image的制作和发布 |
deploy-jar-via-ssh | 通过SSH向remote server部署jar |
update-k8s-deployment | 更新k8s deployment镜像 |
上述pipeline demo展示了使用Jenkins Pipeline构建tRPC-java服务CI/CD流水线的常见用法,请根据实际应用场景对上述pipeline进行调整/组合
运行本demo需要Jenkins 2.2或以上版本(建议使用最新LTS版本),安装官方推荐插件集,并额外安装以下插件:
- Pipeline Maven Integration (用于集成maven)
- GitLab Plugin (用于配置GitLab webhook自动触发流水线)
- Copy Artifact Plugin(用于访问Jenkins归档制品)
- SSH Agent Plugin (用于通过SSH访问remote server)
- Kubernetes CLI(用于部署k8s workload)
为避免歧义,本篇指引中所有Jenkins名词均使用英文,可通过Locale
插件调整Jenkins默认语言
- 按照官方文档 Installing Jenkins 的指引安装并启动jenkins,初始化时安装** 官方推荐的插件集**
- 安装必要插件(见上),具体方法如下:
- Manage Jenkins > Plugin Manager > Available Plugins
- 搜索框内输入插件名称,勾选所需安装的插件,点击
Install without restart
- 插件全部安装完成后,重启Jenkins服务
http://{your-jenkins-host}/saferestart
- 配置Git秘钥(用于从Git拉取代码):
- 生成SSH公私钥对,向Git提交公钥(可复用已经提交过的公钥)。如果不清楚如何配置SSH访问Git,请先查阅相关资料
- Manage Jenkins > Manage Credentials
- 选择预设的Domain
(global)
,点击右上角Add Credentials
- Kind选择
SSH Username with private key
,填写ID(本demo中命名为git-ssh-credential
)、Username(可选)、Private Key,点击Save
- 配置Git Host Key Verification(用于首次通过SSH访问Git时自动信任Host)
- Manage Jenkins > Configure Global Security > Git Host Key Verification Configuration
- Strategy选择
Accept first connection
,点击Save
本节介绍如何使用demo中的流水线。
Jenkins运行pipeline时,pipeline定义有两种来源:
- 在Jenkins Job配置界面中填写pipeline script
- 从指定的Git repo中拉取pipeline script
从Pipeline as Code的理念角度出发,更加推荐后者,便于统一维护pipeline的定义,跟踪变更历史记录等。后续将以【从指定的Git repo中拉取pipeline script】方式介绍pipeline的使用方法。
综上所述,Jenkins Pipeline的运行中涉及到两种git repo:
- source repo:要执行CI的项目源代码repo
- pipeline repo:保存Jenkins Pipeline脚本的repo
使用本demo中提供的pipeline时,可以将pipeline repo直接设定为本repo,但更推荐将demo中的 Jenkinsfile
文件拷贝至自行创建pipeline
repo里,便于随时修改和调整。 source repo则应自行准备.
- 创建Jenkins Job
Dashboard > New Item,填写Job名称,类型选择
Pipeline
- 配置pipeline脚本(从SCM获取,推荐)
- 在Job配置的Pipeline段,
Definition
下拉选择Pipeline script from SCM
SCM
下拉选择Git
,Repository URL填写pipeline repo,Credentials选择之前创建的Git秘钥Branch Specifier
填写master
,即使用master分支上的Jenkinsfile
,也可根据具体需求进行调整Script Path
默认为pipeline repo根目录下的Jenkinsfile
文件,可根据需要调整(如maven-build/Jenkinsfile
)
- 在Job配置的Pipeline段,
- 配置pipeline脚本(存储在Jenkins)
- 在Job配置的Pipeline段,
Definition
下拉选择Pipeline script
- 在Script输入框中直接编辑pipeline脚本
- 在Job配置的Pipeline段,
- 配置GitLab webhook(可选)
通过GitLab webhook可以实现在git push后自动触发Jenkins流水线
- 在
Build Triggers
段中勾选Build when a change is pushed to GitLab
,把生成的webhook URL拷贝下来 - triggers勾选
Push Events
- 打开
Advanced
段,生成Secret Token - 在想要触发此Job的GitLab repo中配置webhook,Secret
Token填写上面刚刚生成的token,URL填写步骤1中拷贝下来的URL,trigger根据需要选择(比如
Push Events
和Tag Push Events
)
- 在
- 向source repo进行push即会自动触发pipeline
- 具体的pipeline说明,请参考各个pipeline目录下的README.md