写点什么

在 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:141024

评论

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

Canvas 低代码工具,多人自研开发全流程优化|ModelWhale 版本更新

ModelWhale

云计算 Jupyter Notebook canvas 数据驱动 在线编程

奇点云:企业级数据基础设施的设计思路是“操作系统”

奇点云

AI 奇点云 数据云操作系统

用户指南系列 | 使用 Greptime 官方工具高效地进行 PromQL 查询

Greptime 格睿科技

数据库 软件 云原生

低代码:简化开发流程,提高工作效率

树上有只程序猿

低代码 应用开发 JNPF

北京大上科技发布全球首款25.3英寸彩色墨水屏显示器

硬科技星球

【ODPS新品发布第1期】DataWorks全新发布:增强分析/数据建模个人版等新能力

阿里云大数据AI技术

大数据 阿里云

财务共享中心进行数据服务应该从哪里入手?

用友BIP

财务共享

【重磅】《中台技术财务应用蓝皮书》正式发布

用友BIP

智能财务

倒计时7天!2023 PRO_大会:这些PRO,如“7”而至!

ToB行业头条

国产化操作系统有哪些?适配国产化操作系统堡垒机哪款好用?

行云管家

信创 堡垒机 国产化 国产操作系统 国产

预告!网络安全红队GPT大模型训练直播来袭

云起无垠

华为云ROMA Connect亮相Gartner®全球应用创新及商业解决方案峰会,助力企业应用集成和数字化转型

华为云PaaS服务小智

云计算 华为云 峰会

程序设计之——手把手教你如何从Excel文件中读取学生信息

飞算JavaAI开发助手

鸿蒙开发套件之DevEco Profiler助您轻松分析应用性能问题

HarmonyOS开发者

HarmonyOS

告别烟囱式建设,DT时代同样需要操作系统

极客天地

吃货大作战!华为Mate 60负一屏点外卖每天狂送优惠!

最新动态

ARTS-WEEK5-23.9.11~23.9.17

Echo!!!

区块链集成:加密货币网站开发的必备条件

区块链软件开发推广运营

数字藏品开发 dapp开发 区块链开发 链游开发 NFT开发

“敏捷教练必修课程”10月14-15日 ·A-CSM认证在线周末班【提前报名特惠】CST导师亲授

ShineScrum

用友BIP资产云携手洋井石化,打造行业领先的智慧资产管理系统

用友BIP

资产云

华秋亮相第五届模拟半导体大会,助力电子行业高质量发展

华秋电子

PCB

实施全面预算管理 健全企业内部控制

智达方通

内部控制 企业内部控制 全面预算管理 全面预算管理系统

D-SMART对接OceanBase4 看 OB的可观测性:值得夸赞的和要吐槽的都不少

DBAIops社区

DBAIops D-SMART

5 个适合出海离岸公司的地区推荐

出海的猹

出海企业

莆田市属于哪个省?有正规等保测评机构吗?

行云管家

等保 等保测评 等保等级保护

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