写点什么

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

评论

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

初学者也能用!快速上手 UDF for Python 全攻略

TDengine

数据库 tdengine 时序数据库

win版Maplesoft Maple 2024(数学科学计算) v2024.1 特别版

iMac小白

Maplesoft Maple下载 Maplesoft Maple2024 Maplesoft Maple激活版 Maplesoft Maple特别版

深入理解Playwright的高级功能和用法

我再BUG界嘎嘎乱杀

Python playwright

京东JD商品sku信息API返回值实践:商品规格数据驱动的供应链优化

技术冰糖葫芦

API Explorer API 接口 pinduoduo API

即时通讯技术文集(第40期):推送技术合集(Part2) [共18篇]

JackJiang

网络编程 即时通讯 IM

win版DVDFab (DVD复制备份) v13.0.1.9 特别版

iMac小白

DVDFab 下载 DVDFab 激活版 DVDFab 特别版

全网爆火【MBTI人格测试】是如何实现的?

AppBuilder

软件测试学习笔记丨Python 字符串基本操作

测试人

软件测试

软件测试学习笔记丨Python 运算符

测试人

Python 软件测试

win版NetLimiter Pro(网络流量控制软件 v5.3.14.0 中文特别版

iMac小白

NetLimiter下载 NetLimiter特别版 NetLimiter激活版

win版Radiant Photo(照片编辑美化软件) v1.3.1特别版

iMac小白

Radiant Photo下载 Radiant Photo特别版 Radiant Photo激活版

解读surging 的内存过高的原因

不在线第一只蜗牛

内存 .NET 7

win版Android Studio(安卓开发环境)v2023.3.1.20 特别版

iMac小白

区块链DAPP开发,源码搭建,定制开发流程

区块链开发团队DappNetWork

DeFi质押挖矿 区块链开发 链游开发dapp开发

基于Ascend C的FlashAttention算子性能优化最佳实践

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 LLM 企业号2024年6月PK榜

机关事业单位日志要保留多久?依据是什么?

行云管家

过等保 机关事业单位

win版BricsCAD Ultimate2024(2D与3D CAD建模设计) v24.2.05特别版

iMac小白

win版UniFab All-In-One(视频AI压缩转换处理) v2.0.2.3 特别版

iMac小白

UniFab Toolkit下载 UniFab Toolkit激活版

win版StreamFab Downloader(视频下载工具) v6.1.8.2 激活版

iMac小白

win版PilotEdit Lite(高级文本编辑器) v18.8.0 激活版

iMac小白

PilotEdit下载 PilotEdit激活版

win版Serato DJ Pro(专业DJ软件) v3.1.4.890 (x64)特别版

iMac小白

MoneyPrinterPlus:AI自动短视频生成工具,赚钱从来没有这么容易过

程序那些事

工具 程序那些事 AIGC

DeFi(去中心化金融)是什么,DeFi应用有哪些?如何利用它赚钱?

区块链开发团队DappNetWork

DeFi流动性挖矿 NFT链游 区块链开发 交易所源码 dapp合约开发

加速物联网产业布局,英特尔联合震坤行推出智能物联聚合馆

E科讯

网易面试:SpringBoot如何开启虚拟线程?

王磊

Java

Zilliz Cloud Serverless Beta上线,限时免费

Zilliz

Serverless Zilliz 向量数据库 zilliz cloud

Overcoming Barriers: Real-World Case Studies of Fast Roaming in Industrial Settings

wallyslilly

IPQ6010 ipq5018 FASTROAMING

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