写点什么

在 Amazon EKS 上使用 Jenkins 和 HashiCorp Terraform 实现持续集成(二)

  • 2019-12-20
  • 本文字数:2567 字

    阅读完需:约 8 分钟

在 Amazon EKS 上使用 Jenkins 和 HashiCorp Terraform 实现持续集成(二)

配置 Jenkins 作业和管道

在 Jenkins 控制台中,单击新建项目。选择多分支管道,将其命名为 petclinic 然后单击确定



图 5.Jenkins 多分支管道


选择 GitHub,然后从下拉列表中选择 GitHub 凭据。输入如下所示的 GitHub URL,然后单击保存以保存 Jenkins 作业。



图 6.Jenkins 作业详细信息


Jenkins 构建执行器将检出并扫描 GitHub 存储库,并按照下面显示的 Jenkins 文件中的规定执行管道中的阶段。确保将注册表替换为构建阶段中 Docker 注册表 URL。


Bash


pipeline {    agent any       triggers {        pollSCM "* * * * *"       }    stages {        stage('Build Application') {             steps {                echo '=== Building Petclinic Application ==='                sh 'mvn -B -DskipTests clean package'             }        }        stage('Test Application') {            steps {                echo '=== Testing Petclinic Application ==='                sh 'mvn test'            }            post {                always {                    junit 'target/surefire-reports/*.xml'                }            }        }        stage('Build Docker Image') {            when {                branch 'master'            }            steps {                echo '=== Building Petclinic Docker Image ==='                script {                    app = docker.build("ibuchh/petclinic-spinnaker-jenkins")                }            }        }        stage('Push Docker Image') {            when {                branch 'master'            }            steps {                echo '=== Pushing Petclinic Docker Image ==='                script {                    GIT_COMMIT_HASH = sh (script: "git log -n 1 --pretty=format:'%H'", returnStdout: true)                    SHORT_COMMIT = "${GIT_COMMIT_HASH[0..7]}"                    docker.withRegistry('https://registry.hub.docker.com', 'dockerHubCredentials') {                        app.push("$SHORT_COMMIT")                        app.push("latest")                    }                }            }        }        stage('Remove local images') {            steps {                echo '=== Delete the local docker images ==='                sh("docker rmi -f ibuchh/petclinic-spinnaker-jenkins:latest || :")                sh("docker rmi -f ibuchh/petclinic-spinnaker-jenkins:$SHORT_COMMIT || :")            }        }    }}
复制代码


下面是最终运行的屏幕截图;如果一切顺利,您将看到一个新的 Docker 映像推送到您的 Docker 注册表中。



__


图 7.管道阶段

创建和配置 Spinnaker 管道

管道是指 Spinnaker 提供的一定顺序的阶段,从操作基础设施的功能(部署、调整、禁用),到支持功能(手动判断、等待、运行 Jenkins 作业),这些功能共同精确定义了管理您部署的操作手册。管道可帮助您一致、可重复且安全地管理部署。


  1. 登录到 AWS Cloud9 IDE 环境,然后打开一个新终端。运行以下命令:


kubectl get svc -n spinnaker



图 8.Spinnaker UI 终端节点


  1. 打开浏览器,使用 spin-deck-public services 终端节点登录 Spinnaker UI,如上面的输出所示。


选择应用程序选项卡,然后选择操作 → 创建应用程序。 输入 petclinic 作为名称,然后输入有效的电子邮件地址,其余字段留为空白。



图 9.Spinnaker 应用程序


  1. 管道选项卡上,单击配置新管道,输入 DeployToUAT 作为管道名称,然后单击创建



图 10.Spinnaker DeployToUAT 管道


  1. 单击添加构件并选择 GitHub → 种类,文件路径 → kubernetes/petclinic.yaml,显示名称 → Petclinic-Manifest,内容 URL https://api.github.com/repos/aws-samples/amazon-eks-jenkins-terraform/contents/kubernetes/petclinic.yaml



图 11.管道构件


  1. 单击添加触发器并选择类型 → Docker 注册表,注册表名称 → Spinnaker 中配置的 Docker 注册表,组织 → 您的 Docker 注册表名称,映像 → Jenkins 创建的 Docker 映像。



图 12.管道触发器


  1. 单击添加阶段,选择阶段类型 → 部署(清单),账户 → eks-uat应用程序 → petclinic,清单源 → 构件,清单构件 → Petclinic-Manifest构件账户 → spinnaker-github



图 13.部署清单阶段


  1. 单击保存将更改保存到 DeployToUAT 管道。

  2. 管道选项卡下,单击创建,输入 ****ManualApproval ****作为管道名称,然后单击“创建”。单击添加触发器并选择类型 → 管道,应用程序 → petclinic,管道 → DeployToUAT



图 14.ManualApproval 管道


  1. 单击添加阶段,选择阶段名称 → 手动判断,判断输入下添加两个选项批准拒绝,如下所示:



图 15.手动判断阶段


  1. 单击保存将更改保存到 ManualApproval 管道。

  2. 管道选项卡下,单击创建,输入 DeployToProd 作为管道名称,然后单击创建。单击添加触发器并选择类型 → 管道,应用程序 → petclinic,管道 → DeployToProd

  3. 单击添加构件并选择 GitHub → 种类,文件路径 → kubernetes/petclinic.yaml显示名称 → Petclinic-Manifest,内容 URL https://api.github.com/repos/aws-samples/amazon-eks-jenkins-terraform/contents/kubernetes/petclinic.yaml



图 16.管道构件


  1. 单击添加触发器并选择类型 → Docker 注册表,注册表名称 → Spinnaker 中配置的 Docker 注册表,组织 → 您的 Docker 注册表名称,映像 → Jenkins 创建的 Docker 映像。



图 17.管道触发器


  1. 单击添加阶段,选择阶段类型 → 部署(清单),账户 → eks-prod,应用程序 → petclinic清单源 → 构件,清单构件 → Petclinic-Manifest构件账户 → spinnaker-github



图 18.部署清单阶段


  1. 单击保存将更改保存到 DeployToProd 管道。

手动运行 Spinnaker 管道

现在手动运行三个管道。单击开始手动执行,选择管道 → DeployToUAT,类型 → 标记,标记 → 输入有效的标记号。单击运行并观察管道执行。



图 19.管道执行


本文转载自 AWS 技术博客。


原文链接:https://amazonaws-china.com/cn/blogs/china/continuous-integration-using-jenkins-and-hashicorp-terraform-on-amazon-eks/


2019-12-20 15:141167

评论

发布
暂无评论
发现更多内容

TRAE SOLO Early Access 活动圆满落幕:四城联动,产品进化再加速!

科技热闻

ElasticSearch 质量保障体系介绍

杭州群核科技质量效能

测试 ES 质量保障

火山引擎 MCP 安全架构与实践

Lily

智慧工地实践案例:用数智应用破解土石方工程效率与成本难题

袋鼠云数栈

AI 数字化转型 云计算, 数字化解决方案 大数据计算

【苍狮技术团队】速看!Linux离线安装Docker、Docker-Compose竟如此简单?

苍狮技术团队

亚马逊AI模型评估产品评论中的实用建议有效性

qife122

自然语言处理 事实核查

舆情监测和舆情管理的区别与协同价值

沃观Wovision

舆情监测 海外舆情监控 沃观Wovision 舆情监测系统

烟草行政处罚案卷制作平台入选“AI Solutions for SME”全球案例

中烟创新

机器学习赋能计算机嗅觉革命:Osmo的气味图谱突破

qife122

机器学习 数字嗅觉

Hologres V3.1版本发布,Serverless型实例从零开始构建OLAP系统

阿里云大数据AI技术

人工智能 机器学习 大数据 数据分析 hologres

技术文章

qife122

人工智能 openai

【跨国数仓迁移最佳实践3】资源消耗减少50%!解析跨国数仓迁移至MaxCompute背后的性能优化技术

阿里云大数据AI技术

人工智能 云计算 大数据 数据分析 数据迁移

“效率刺客”偷走时间?召唤“贾维斯”帮你「效」傲职场

科技热闻

2025 杭州测试沙龙 Topic 火热征集中

杭州群核科技质量效能

测试 质量保障 AI+ 论坛

千万级的大表如何新增字段?

电子尖叫食人鱼

大数据

国际标准组织共聚,智源推动全球AI开源与国际标准双轮驱动人工智能普惠化发展

智源研究院

基于 Nacos + Higress 的 MCP 开发新范式,手把手教程来了!

阿里巴巴云原生

阿里云 云原生 Higress

亚马逊机器人如何用多模态识别技术取代条形码

qife122

机器人技术 自动化识别

基于Dify构建本地化知识库智能体:从0到1的实践指南

知识浅谈

dify

Kafka 不难,只是你用得不对

巴辉特

kafka

智源研究院发布数据魔方,以智能化自定义方式重构模型训练数据供给范式

智源研究院

javax.security.auth.login.LoginException: No CallbackHandler available to garner authentication info

刘大猫

人工智能 数据挖掘 算法 数据分析 LoginException

舆情监测和舆情管理的区别与协同价值

沃观Wovision

海外舆情监控 舆情监测系统

接口设计的原则:构建优雅API的完整指南

量贩潮汐·WholesaleTide

接口 API

社区版 2025.7 | CQ-Mate V1.3发布啦!

BinTools图尔兹

数据库管理工具 数据库审计 社区版 流量分析系统 免费软件下载

Maven中的这些坑,99%的人不知道!

不在线第一只蜗牛

Java 开发

DIFC 2025年上半年业绩助推迪拜经济愿景

财见

Java中什么是类加载?类加载的过程?

量贩潮汐·WholesaleTide

Java

使用 Databend Cloud 归档 OceanBase 数据数据库

Databend

WPS 灵犀语音助手:AI 对话处理文档;通义 Qwen3-MT:支持 92+语言互译的 AI 翻译引擎丨日报

声网

5000字谈普通人如何用AI扩大影响力

阿星AI工作室

AI 产品经理 AIGC 超级个体

在 Amazon EKS 上使用 Jenkins 和 HashiCorp Terraform 实现持续集成(二)_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章