Pipeline: Input Step这个例子是利用 Jenkins pipeline的 Input step 来做一个人工介入Approve的步骤 。然后再来一个多cluster 部署,选不同region 部署到不同的cluster的示例 。stage('Wait for SRE Approval') {steps {timeout(time:72, unit:'HOURS') {input message: "Approved Prod deployment?", submitter: 'sre-team'}}}// deployment to multipe k8s clustersstage('Deploy to GKE Prod cluster') {environment{PROJECT_ID = 'sre-cn-dev'CREDENTIALS_ID = 'gcp_sa_json_key'CLUSTER_COMMON_NAME = 'demo-gke-prod'}steps {script {env.REGION = input message: 'Choose which region you want to deploy?',parameters: [choice(name: 'Region',description: 'Select Region to Deloy',choices: ['europe-west1', 'us-central1'])]dir(dir_path) {if ( env.REGION == "europe-west1" ) {def eu_cluster_name = env.CLUSTER_COMMON_NAME + "-eu"container('kubectl-kustomize') {sh "echo deploy to cluster $eu_cluster_name in region: $REGION"}}if ( env.REGION == "us-central1" ) {def us_cluster_name = env.CLUSTER_COMMON_NAME + "-us"container('kubectl-kustomize') {sh "echo deploy to cluster $us_cluster_name in region: $REGION"}}}}}}所有例子均在我的 github repo 。
### 本文首发于博客园 https://www.cnblogs.com/wade-xu/p/16863955.html
测试现在你可以创建一个 Pipeline 或者 Multibranch Pipeline job 来测试 。Repository URL = `https://github.com/wadexu007/learning_by_doing`Script Path, e.g. `Jenkins/k8s_pod_as_build_agent/demo-app-java/Jenkinsfile` 你会看到每启动一个job 都会相应的产生一个pod 来作为Jenkins agent运行,结束后根据idleMinutes自动释放 。

文章插图
总结如果你已经成功创建并测试 CI/CD pipeline,可以继续加强,比如加上 Post notifications 最佳实践
- 设置 resource requests and limits on each container in your Pod
- 如果使用maven 构建 java项目,.m2 cache目录需要 mount 出来,这样加快后面的maven build速度 。
- 使用 Jenkins Shared Libraries 抽取Pipeline的共用代码
- 在容器里构建容器化应用(Run docker in docker) 我的例子是通过 mount docker.sock 利用k8s 主机 docker engine来实现的,这种方式需要 privileges mode 不安全,推荐使用Kaniko,下一篇文章会介绍 。
经验总结扩展阅读
- 茱萸峰海拔多少米
- 世界野生菌王国是云南的哪个县
- 南伞属于云南哪里
- 早上的云彩叫什么
- 云顶之弈冒险迭嘉阵容搭配推荐攻略
- 云原生之旅 - 10)手把手教你安装 Jenkins on Kubernetes
- 问道手游探案镖局风云任务完成图文攻略
- 周若云和于仕鸿是什么电视剧中的人物?
- 2023云南有哪些值得打卡的线路推荐
- 云南玉溪有哪些好吃的美食推荐