问题描述
该笔记将记录:与 Jenkine Pipeline 有关的实践经验,以及相关问题的解决办法。
我们的自动化构建流程
开发提交代码到代码服务器(GitHub Gitlab BitBucket)
代码服务器通过 WebHook 触发 CI/CD(Codeship、Shippable、CircleCI、Jenkins)
CI 服务拉去最新的代码,构建 Docker 镜像,进行测试
自动集成测试完成后,将镜像推送到私有的 Registry
运维使用最新的 Docker 镜像进行部署
加快 Jenkins Pipline 执行速度
Scaling Pipelines
Project Cheetah – Faster, Leaner Pipeline That Can Keep Up With Demand
显示构建过程消耗的时间
Jenkins Pipeline: Enable timestamps in build log console – Stack Overflow
// 对于脚本式,使用 timestamps {} 包括脚本
node {
timestamps {
// do your job
}
}
// 对于声明式,使用 options 包裹时间
pipeline {
agent any
options { timestamps () }
// stages and rest of pipeline.
}
当检查特定目录发生变化后,再执行某些构建步骤
Pipeline Syntax
git – How to trigger a build only if changes happen on particular set of files – Stack Overflow
通过 when 的 chagneset 能够进行判断:when { changeset “**/*.js” }
when {
anyOf {
changeset "nginx/**"
changeset "fluent-bit/**"
}
}
steps {
sh "make build-nginx"
sh "make start-nginx"
}