写点什么

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

评论

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

十分钟带你全面解析Promise、generator、async类同步编程!

好程序员IT教育

JavaScript Promise

快围观!助力 TDesign 无障碍改造活动来了!

TDesign

无障碍

如何通过 NFTScan 浏览器捕获 NFT 投资机会

NFT Research

区块链 NFT 数据基础设施

全网讲的最好的微服务,SpringCloud架构进阶

程序知音

Java 微服务 SpringCloud java架构 后端技术

案例 | 九科信息助力某大型证券公司业务部数智化转型

九科Ninetech

【C语言】if 关键字

謓泽

11月月更

pytorch实现卷积神经网络实验

Studying_swz

人工智能 11月月更

YRCloudFile V6.9.0 加速企业在大数据应用技术创新

焱融科技

云计算 分布式系统 高性能 文件存储

主成分分析PCA与奇异值分解SVD-PCA中的SVD

烧灯续昼2002

Python 机器学习 算法 sklearn 11月月更

【iOS逆向与安全】frida-trace入门

小陈

移动端 iOS逆向 ios安全

一款超好用的开源密码管理器!

Jackpop

码农必备?清华大学开源了一款写代码神器!

Jackpop

磁盘占用高问题如何排查?三步教你搞定

OceanBase 数据库

华为云发布1+3+M+N全球云基础设施布局 全面推动汽车产业数智升级

科技热闻

芯启源加入龙蜥社区,推动集成电路和DPU芯片创新落地

OpenAnolis小助手

开源 龙蜥社区 CLA 芯启源

链路状态路由协议 OSPF (三)

我叫于豆豆吖.

11月月更

2022-11-18:给定一个数组arr,表示连续n天的股价,数组下标表示第几天 指标X:任意两天的股价之和 - 此两天间隔的天数 比如 第3天,价格是10 第9天,价格是30 那么第3天和第9天的指

福大大架构师每日一题

算法 rust 福大大

用户特征分析的方法

穿过生命散发芬芳

11月月更 用户特征分析

【愚公系列】2022年11月 微信小程序-页面配置

愚公搬代码

11月月更

复杂时序逻辑电路

芯动大师

Verilog 11月月更 时序逻辑

无需重启应用,动态采集任意点位日志

阿里巴巴云原生

阿里云 云原生

链路状态路由协议 OSPF (二)

我叫于豆豆吖.

11月月更

面了个阿里拿38k出来的,让我见识到了基础顶端

程序知音

Java java面试 java架构 后端技术 Java面试八股文

Spring 5(六)新功能

浅辄

Spring5 JUnit 11月月更

深度学习 | 如何开发、部署 Serverless 应用?

阿里巴巴云原生

阿里云 Serverless 云原生

QUIC学习入门概念及资料整理

黄继承

QUIC

埃森哲发布《2022中国企业数字化转型指数》,如何通过自动化工具打造技术底座

飞算JavaAI开发助手

Redis 持久化机制演进与百度智能云的实践

Baidu AICLOUD

数据库 Redis内核

综合实验——高级网络应用检测

我叫于豆豆吖.

11月月更

昇腾AI创新大赛燃情上演,大咖齐聚共话人工智能发展新篇章

极客天地

Meta开源新工具啊,Git地位危险了?

Jackpop

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