aws ec2 变更pem_用aws和jira建立一个连续的变更日志

2023-11-08

aws ec2 变更pem

So you’ve decided to go CI/CD. You read all about the org changes, understand the ins and outs of the development pipeline, and feel confident you can get it done.

因此,您决定使用CI / CD。 您阅读了有关组织更改的所有内容 ,了解了开发流程的来龙去脉,并充满信心地将其完成。

Congratulations!

恭喜你!

After you set up your pipelines, document your dev practices, and start pushing to prod, there’s still a major piece of the puzzle that needs addressing: the changelog.

设置好管道,记录开发实践并开始推向生产之后,仍然需要解决一个主要难题:变更日志。

How do you do it? Do you add a tech writer to your development team who can keep up with five, ten, 20 pushes to production a day? You could. But what if there was a way to automate it?

你怎么做呢? 您是否在开发团队中增加了一名技术撰稿人,他们每天可以完成五,十,二十次推送? 你可以。 但是,如果有一种自动化的方法呢?

You already have an issue tracking system. We use Jira at my office. Whether you use Jira, GitHub, or Trello to track issues, they all have one thing in common: webhooks.

您已经有一个问题跟踪系统。 我们在办公室使用吉拉。 无论您使用JiraGitHub还是Trello来跟踪问题,它们都有一个共同点:webhooks。

Each one of these systems fires events when certain actions take place in the system. And we’re going to use them to automate our changelog.

当系统中发生某些动作时,这些系统中的每一个都会触发事件。 我们将使用它们来自动化变更日志。

架构 (The Architecture)

There are three systems in play for a continuous changelog:

连续更改日志有三个系统在起作用:

  • The issue tracking system (in this walkthrough, Jira)

    问题跟踪系统(在本演练中,Jira)
  • The back-end API to collect, store, and retrieve the changelog (built in AWS)

    用于收集,存储和检索变更日志的后端API(内置于AWS中)
  • The user interface

    用户界面
Photo by the author.
图片由作者提供。

In our automation, the events flow like this:

在我们的自动化中,事件的流动如下:

  1. Dev team moves Jira issue to Done status. Jira publishes to a webhook containing details about the closed issue.

    开发团队将Jira问题更改为“完成”状态。 Jira发布到一个包含有关已解决问题的详细信息的webhook。

  2. AWS API Gateway proxies directly to DynamoDB to store the details.

    AWS API Gateway直接代理到DynamoDB以存储详细信息。

  3. End-user loads the changelog page. The page makes a request to load recent changes.

    最终用户加载变更日志页面。 该页面请求加载最近的更改。
  4. AWS API Gateway proxies directly to DynamoDB to load the details from the database and return them in the response.

    AWS API Gateway直接代理到DynamoDB,以从数据库加载详细信息并在响应中返回它们。

Seem simple? It is!

看起来很简单? 它是!

This is the kind of integration that pays off 1,000 times over in the long run. It is a low cost to implement with a high return on value integration.

从长远来看,这种集成可以带来1000倍的回报。 具有高价值回报率的实施成本低。

AWS配置 (AWS Configuration)

In my GitHub repo, I provide the source to deploy the microservice from the architecture diagram above. It uses AWS API Gateway and DynamoDB as the two primary services for storing and retrieving data.

我的GitHub存储库中 ,我提供了从上面的架构图部署微服务的源代码。 它使用AWS API Gateway和DynamoDB作为存储和检索数据的两个主要服务。

The back end only has two endpoints: one to create an item in the changelog and another to load items from it.

后端只有两个端点:一个用于在变更日志中创建项目,另一个用于从中加载项目。

Saving and loading are done in VTL, omitting the need for lambda functions entirely. This gives us the fastest response times possible.

保存和加载是在VTL中完成的,完全不需要lambda函数。 这为我们提供了最快的响应时间。

Since we don’t want malicious users discovering our API and posting bogus or inappropriate changes to our changelog, we need to add an API key. We can’t add standard auth to verify our users since these requests are going to be coming through a webhook.

由于我们不希望恶意用户发现我们的API并将虚假或不适当的更改发布到我们的变更日志中,因此我们需要添加一个API密钥。 由于这些请求将通过Webhook发出,因此我们无法添加标准身份验证来验证用户。

Jira provides the ability to include headers when publishing to a webhook, so we will take advantage of this and include an AWS API key. This key is included in the CloudFormation script in the repository.

Jira提供了在发布到Webhook时包含标头的功能,因此我们将利用这一点并包含一个AWS API密钥。 该密钥包含在存储库的CloudFormation脚本中。

If you follow the README in the GitHub repo, you will be up and running with minimal effort. It comes all pre-wired, so no setup is necessary besides deploying into your AWS account.

如果您遵循GitHub存储库中的README,那么您将可以轻松启动并运行。 它都是预先连接的,因此除了部署到您的AWS账户外,无需任何设置。

Jira配置 (Jira Configuration)

Now that we have our API up and running, it’s time to configure Jira to feed the changelog data.

现在我们的API已启动并正在运行,是时候配置Jira来提供变更日志数据了。

添加自定义字段 (Add a custom field)

We need to add a custom field to our Jira issues. From within Jira, navigate to Settings > Jira Administration > Issues.

我们需要为Jira问题添加一个自定义字段。 在Jira中,导航至“设置”>“ Jira管理”>“问题”。

Once you are viewing the issues admin page, navigate to Fields > Custom Fields > Add custom field.

查看问题管理员页面后,导航至字段>自定义字段>添加自定义字段。

Available custom field types in Jira.
Jira中可用的自定义字段类型。

Changelog descriptions can get a little wordy, so select a Text Field (multi-line), give it the name Changelog, and add a description that lets the users know the format they should type in their change details.

更改日志描述可能会有些冗长,因此请选择一个文本字段(多行),将其命名为Changelog ,并添加一个描述,以使用户知道应在其更改详细信息中键入的格式。

Next, choose your screens you want the changelog field visible on. If you want it in all your Jira projects, select them all!

接下来,选择要在其上显示更改日志字段的屏幕。 如果您希望在所有Jira项目中使用它,请全部选择!

建立网络挂钩 (Build the webhook)

With the custom field in place, it’s time to build the automation trigger that posts to the webhook.

使用自定义字段后,就可以构建发布到网络挂接的自动化触发器了。

In your Jira project, go to Project Settings > Project Automation > Create Rule.

在您的Jira项目中,转到项目设置>项目自动化>创建规则。

Available trigger types.
可用的触发器类型。

Select the Issue transitioned trigger type and optionally set the From status and To status on the next screen.

选择“ 问题已转换”触发器类型,并在下一屏幕上选择“ 从”状态和“ 到”状态

Note: The To status field should be set to whatever the final status is in your workflow. On my project, our final workflow status is Done.

注意:“ 到状态”字段应设置为工作流中的最终状态。 在我的项目中,我们最终的工作流程状态为完成

Once you have configured the trigger, it’s time to set up the action for Jira to take. Click on New Action to bring up the list of options.

一旦配置了触发器,就可以为Jira设置动作了。 单击“ 新建操作”以显示选项列表。

Available notification action types.
可用的通知操作类型。

Select the Send web request action to bring up the configuration screen.

选择发送Web请求操作以调出配置屏幕。

从AWS获取您的API详细信息 (Get your API details from AWS)

Now we need to take a trip back into the AWS console. First, we need to get the URL of the webhook we created.

现在,我们需要回到AWS控制台。 首先,我们需要获取所创建的Webhook的URL。

  1. Navigate to the API Gateway console and select the Changelog API.

    导航到API Gateway控制台,然后选择Changelog API。

  2. Click on the Stages link on the left-hand navigation, then the dev stage.

    单击左侧导航上的“ 阶段”链接,然后单击“ 开发”阶段。

  3. There will be an Invoke URL on the top of the page. Grab that value and add it to the Webhook URL field in Jira. Be sure to add /details at the end.

    页面顶部将有一个Invoke URL。 获取该值并将其添加到Jira中的Webhook URL字段。 确保在末尾添加/details

  4. Next, click on the API Keys link on the left-hand navigation, then the cicd-ApiKey… value.

    接下来,单击左侧导航上的“ API密钥”链接,然后单击cicd-ApiKey…值。

  5. Click on the Show link and copy the value displayed on the screen.

    单击显示链接,然后复制屏幕上显示的值。

  6. Back in Jira, add a header of x-api-key and paste the API key in the value field.

    返回Jira,添加x-api-key的标头并将API密钥粘贴到value字段中。

  7. Next, configure the webhook body to match the image below and hit Save.

    接下来,配置webhook主体以匹配下面的图像,然后点击Save

Complete webhook configuration in Jira.
在Jira中完成webhook的配置。

Give your automation a meaningful name on the next screen and hit the Turn it on button to complete your integration!

在下一个屏幕上为您的自动化系统起一个有意义的名称,然后点击“ 打开”按钮完成集成!

查看您的新变更日志 (View Your New Changelog)

At this point, the integration and API are connected and you can start closing issues! It will automatically add changelog details along with the issue type and date when it was completed.

至此,集成和API已连接,您可以开始解决问题了! 它将自动添加变更日志详细信息以及问题类型和完成日期。

Once you have some issues moved over, let’s take a peek at what it looks like. I have provided a skeleton Angular front end in the GitHub repo so you can view the changelog right away.

解决了一些问题后,让我们看一下它的外观。 我在GitHub存储库中提供了一个基本的Angular前端,因此您可以立即查看更改日志。

The changelog is grouped by day and has an icon next to the details based on the Jira type that was closed. For my project, a New Feature Jira type will display the NEW icon, while a Bug issue type displays a bug icon.

变更日志按天分组,并根据关闭的Jira类型在详细信息旁边显示一个图标。 对于我的项目,“ 新功能” Jira类型将显示NEW图标,而“ Bug问题”类型则显示一个Bug图标。

These are customizable to your project, so feel free to play around with icons and issue types.

这些可以根据您的项目进行自定义,因此可以随意使用图标和问题类型。

获得组织的支持 (Get Your Organization’s Support)

I could cut you loose right here, but what kind of responsible writer would I be if I didn’t talk about the organizational governance needed for this?

我可以在这里放松一下,但是如果我不谈论为此所需的组织治理,我将是什么样的负责任作家?

Following this route leaves a few questions you need to have answered by your organization:

按照这条路线,您的组织需要回答一些问题:

  • Who writes the changelog details? Tech writers? Developers?

    谁编写变更日志详细信息? 科技作家? 开发人员?
  • Does the changelog detail need to be reviewed before closing an issue?

    解决问题之前是否需要检查变更日志详细信息?
  • Can you trust developers to write the customer-facing notes?

    您可以信任开发人员编写面向客户的说明吗?
  • What issue types do you want to include in the changelog?

    您想在变更日志中包括哪些问题类型?
  • Should you display major features differently?

    您应该以不同的方式显示主要功能吗?

These are for you and your org to figure out. Sure, it’s easiest to let the developers add in the details and be done with it, but is it the safest? Do you want all changes to be logged for the public to see?

这些供您和您的组织找出。 当然,最简单的方法是让开发人员添加细节并进行处理,但这是最安全的吗? 您是否希望所有更改都记录下来以供公众查看?

试试吧! (Try It!)

This is a fast integration to set up and leads to some pretty fun results. I hope you give it a try and bring a continuous changelog to your project.

这是一个快速的集成设置,可以带来一些非常有趣的结果。 希望您能尝试一下并为您的项目带来持续的变更日志。

Do you do something like this? Do you do something totally different? Let me know your thoughts and opinions!

你这样做吗? 你做了完全不同的事情吗? 让我知道您的想法和意见!

Thanks for reading!

谢谢阅读!

翻译自: https://medium.com/better-programming/build-a-continuous-changelog-with-aws-and-jira-cbf0f10776bb

aws ec2 变更pem

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

aws ec2 变更pem_用aws和jira建立一个连续的变更日志 的相关文章

  • 获取给定类文件的目录路径

    我遇到的代码尝试从类本身的 class 文件所在的同一目录中读取一些配置文件 File configFiles new File this getClass getResource getPath listFiles new Filenam
  • 从 python 发起 SSH 隧道时出现问题

    目标是在卫星服务器和集中式注册数据库之间建立 n 个 ssh 隧道 我已经在我的服务器之间设置了公钥身份验证 因此它们只需直接登录而无需密码提示 怎么办 我试过帕拉米科 它看起来不错 但仅仅建立一个基本的隧道就变得相当复杂 尽管代码示例将受
  • Numpy 过滤器平滑零区域

    我有一个 0 及更大整数的 2D numpy 数组 其中值代表区域标签 例如 array 9 9 9 0 0 0 0 1 1 1 9 9 9 9 0 7 1 1 1 1 9 9 9 9 0 2 2 1 1 1 9 9 9 8 0 2 2 1
  • 按元组分隔符拆分列表

    我有清单 print L I WW am XX newbie YY ZZ You WW are XX cool YY ZZ 我想用分隔符将列表拆分为子列表 ZZ print new L I WW am XX newbie YY ZZ You
  • 如何通过ssh检查ubuntu服务器上是否存在php和apache

    如何通过ssh检查Ubuntu服务器上apache是 否安装了php和mysql 另外如果安装的话在哪个目录 如果安装了其他软件包 例如 lighttpd 那么它在哪里 确定程序是否已安装的另一种方法是使用which命令 它将显示您正在搜索
  • Spring Security OAuth2简单配置

    我有一个简单的项目 需要以下简单的配置 我有一个 密码 grant type 这意味着我可以提交用户名 密码 用户在登录表单中输入 并在成功时获得 access token 有了该 access token 我就可以请求 API 并获取用户
  • 如何在 python 中没有 csv.reader 迭代器的情况下解析单行 csv 字符串?

    我有一个 CSV 文件 需要重新排列和重新编码 我想跑 line line decode windows 1250 encode utf 8 在由 CSV 读取器解析和分割之前的每一行 或者我想自己迭代行 运行重新编码 并仅使用单行解析表单
  • Espresso 和 Proguard 的 Java.lang.NoClassDefFoundError

    我对 Espresso 不太有经验 但我终于成功地运行了它 我有一个应用程序需要通过 Proguard 缩小才能处于 56K 方法之下 该应用程序以 3 秒的动画开始 因此我需要等到该动画结束才能继续 这就是我尝试用该方法做的事情waitF
  • 解析输入,除了 System.in.read() 之外不使用任何东西

    我很难找到具体的细节System in read 有效 也许有人可以帮助我 似乎扫描仪会更好 但我不允许使用它 我被分配了一个任务 我应该以 Boolean Operator Boolean 的形式读取控制台用户输入 例如T F 或 T T
  • mac osx 10.8 上的初学者 python

    我正在学习编程 并且一直在使用 Ruby 和 ROR 但我觉得我更喜欢 Python 语言来学习编程 虽然我看到了 Ruby 和 Rails 的优点 但我觉得我需要一种更容易学习编程概念的语言 因此是 Python 但是 我似乎找不到适用于
  • 无法捕获 Spring Batch 的 ItemWriter 中的异常

    我正在编写一个 Spring Batch 流程来将数据集从一个系统迁移到另一个系统 在这种情况下 这就像使用RowMapper实现在传递给查询之前从查询构建对象ItemWriter The ItemWriter称为save我的 DAO 上的
  • 如何在 Quartz 调度程序中每 25 秒运行一次?

    我正在使用 Java 的 Quartz Scheduling API 你能帮我使用 cron 表达式每 25 秒运行一次吗 这只是一个延迟 它不必总是从第 0 秒开始 例如 序列如下 0 00 0 25 0 50 1 15 1 40 2 0
  • 解决错误javax.mail.AuthenticationFailedException

    我不熟悉java中发送邮件的这个功能 我在发送电子邮件重置密码时遇到错误 希望你能给我一个解决方案 下面是我的代码 public synchronized static boolean sendMailAdvance String emai
  • Java:多线程内的 XA 事务传播

    我如何使用事务管理器 例如Bitronix http docs codehaus org display BTM Home JBoss TS http www jboss org jbosstm or Atomikos http www a
  • 当鼠标悬停在上面时,intellisense vscode 不显示参数或文档

    我正在尝试将整个工作流程从 Eclipse 和 Jupyter Notebook 迁移到 VS Code 我安装了 python 扩展 它应该带有 Intellisense 但它只是部分更糟糕 我在输入句点后收到建议 但当将鼠标悬停在其上方
  • 您可以将操作直接应用于map/reduce/filter 中的参数吗?

    map and filter通常可以与列表理解互换 但是reduce并不那么容易被交换map and filter 此外 在某些情况下我仍然更喜欢函数语法 但是 当您需要对参数本身进行操作时 我发现自己正在经历语法体操 最终必须编写整个函数
  • 在Python中按属性获取对象列表中的索引

    我有具有属性 id 的对象列表 我想找到具有特定 id 的对象的索引 我写了这样的东西 index 1 for i in range len my list if my list i id specific id index i break
  • 在android中跟踪FTP上传数据?

    我有一个运行 Android 的 FTP 系统 但我希望能够在上传时跟踪字节 这样我就可以在上传过程中更新进度条 安卓可以实现这个功能吗 现在 我正在使用org apache common net ftp我正在使用的代码如下 另外 我在 A
  • Python 无法使用套接字绑定我的外部/公共 IP 地址,给出错误但是当使用本地 IP 地址时,错误不会显示

    这是出现主要错误的代码 与我的本地 IP 的绑定将起作用 s bind 192 168 1 4 port 与我的公共 IP 的绑定失败并出现以下错误 s bind 99 99 99 99 port WinError 10049 请求的地址在
  • 从 Twitter API 2.0 获取 user.fields 时出现问题

    我想从 Twitter API 2 0 端点加载推文 并尝试获取标准字段 作者 文本 和一些扩展字段 尤其是 用户 字段 端点和参数的定义工作没有错误 在生成的 json 中 我只找到标准字段 但没有找到所需的 user fields 用户

随机推荐

  • 如何在 Ubuntu 16.04 上为多个平台构建 Go 可执行文件

    介绍 The Go编程语言附带丰富的工具链 使获取包和构建可执行文件变得异常容易 Go 最强大的功能之一是能够为任何 Go 支持的外部平台交叉构建可执行文件 这使得测试和包分发变得更加容易 因为您不需要访问特定平台即可为其分发包 在本教程中
  • mongodb使用使用 SCRAM 验证客户端设置访问控制

    1 在没有访问控制的情况下启动 MongoDB 启动没有访问控制的mongodb实例 打开终端并以mongod用户身份运行以下命令 mongod port 27017 dbpath var lib mongodb 若是按照我前几篇的步骤来的
  • 贪心算法在计算机体系结构中的应用

    目录 一 前言 二 离线缓存 Offline caching 1 高速缓存技术的简要介绍 2 问题引入 3 精确问题 寻找思路 4 引入贪心算法 5 最优子结构性质的证明 1 变量准备 2 反证法证明 cut paste 法 6 递推表达式
  • 园区消防系统组成

    园区消防系统是一个关键的安全设施 它由多个组成部分构成 以确保园区内的火灾风险得到有效控制和管理 这些组成部分包括火灾报警系统 消防水系统 自动喷水灭火系统 消防通道和紧急出口等 首先 火灾报警系统是园区消防系统的核心组成部分之一 它通过安
  • 准备先敲一遍cesium源码

    由于cesium的例子中 关于shader只有后处理 对基本的单个模型和fbo都没有涉及 而目前公司没人去研究cesium源码 没办法 只能进行下去 否则 没法玩了 FBO什么的都加不上了
  • 美容院管理系统

    新经济环境下 美容院向智能互联网时代转型是大势所趋 在美容院不断拔地而起的今天 市场优胜劣汰 美容院业务范围的扩张和发展 让美容院对智能管理需求也越来越大 如 员工管理 产品管理 客户管理 订单管理 进销存管理 营销管理 报表管理等等 都向
  • 四、C语言进阶:宏定义和头文件

    4 宏定义和头文件 4 1 什么是宏定义 宏是用来表示一段代码的标识符 4 2 宏怎么用 三种用法 当作常量使用 当作函数使用 编译预处理 4 2 1 宏定义常量 预定义宏 ANSI C标准定义有些定义好的宏定义 称为预定义宏 这些宏定义以
  • 八数码深度优先搜索_程序员必知的十大基础实用算法之-DFS(深度优先搜索)...

    深度优先搜索 深度优先搜索是一种在开发爬虫早期使用较多的方法 它的目的是要达到被搜索结构的叶结点 即那些不包含任何超链的HTML文件 在一个HTML文件中 当一个超链被选择后 被链接的HTML文件将执行深度优先搜索 即在搜索其余的超链结果之
  • LoRa Mesh 自组网 采集器

    外观结构 分为主机跟从机 1个网络需要1个主机 技术参数和指标 电源 无线参数 有线参数 应用场景 无线抄表 实时监控 数据采集
  • 面向对象(OOP)的基本特征

    面向对象 OOP 的基本特征
  • 64位Windows11系统快速搭建修图神器codeformer运行环境教程详解

    前段时间发现一款低画质照片变高清图软件Codeformer引起了我极大的兴趣 经过学习 现在完全弄明白了它的安装 配置 使用方法 入坑良久 今日出坑 在这里留档备查 让我这个门外小白见识到了复杂的环境配置过程 入门深度学习首先要踩的也是必须
  • kotlin入门!万字长文轻松彻底入门Flutter,含泪整理面经

    前言 最近 有同学参加阿里云的面试 被问到 如果是MySQL引起的CPU消耗过大 你会如何优化 他说 这个问题他第一次遇到 当时一头雾水 不知道该如何回答 还好他当时机制 说MySQL底层不是他研究的重点 所以面试官没有再深入这块 因此 我
  • conda 导出环境/导入环境/导出base环境

    conda的虚拟环境真的非常实用 尤其是对于大的深度学习项目 给每个项目单独配一个环境 轻巧又容易管理 还能直接用别人配好的虚拟环境 非常方便 这里记录几个常用的导入导出命令免得每次找 查看可用环境 conda info envs 输出样式
  • 用群晖筑建音乐之「家」

    创意从业者的灵感总是随时迸发 一段简短的旋律就有可能谱成一首经典歌曲 而这个过程 不仅需要才华 学习 刻苦 还需要 方便保存所有这些灵感的 工具 群晖NAS为音乐爱好者或是音乐从业者打造私有音乐素材库 大量的音乐素材及作品都可以通过群晖NA
  • docker映射mysql修改字符编码_怎么在docker容器的mysql的编码格式变为utf8

    第一个方法 1 编辑MySql的配置文件 MySql的配置文件Windows下一般在系统目录下或者在MySql的安装目录下名字叫my ini 可以搜索 Linux下一般是 etc my cnf 在 mysqld 标签下加上以下内容 defa
  • 深拷贝浅拷贝的理解

    深拷贝 1 是指拷贝一个对象时 不仅仅把对象的引用进行复制 还把该对象引用的值也一起拷贝 2 源对象与拷贝对象互相独立 其中任何一个对象的改动都不会对另外一个对象造成影响 浅拷贝 1 指的是拷贝一个对象时 仅仅拷贝对象的引用进行拷贝 但是拷
  • “由于内部错误,服务器无法处理该请求。有关该错误的详细信息,请打开服务器上的 IncludeExceptionDetailInFaults (从 ServiceBehaviorAttribute 或从...

    WCF程序中一般出现这样的错误 我们需要在服务端的web config中增加
  • 操作系统与shell

    操作系统与shell 操作系统与shell 一 什么是操作系统 1 什么是kernel 2 什么是shell 二 System Call 补充 用户态与内核态 操作系统与shell 一 什么是操作系统 操作系统 即Operating Sys
  • 一文读懂类加载机制

    类记载过程 多个java文件经过编译打包生成可运行的jar包 最终由java命令运行某个主类的main函数启动程序 这里首先需要通过类加载器把主类加载到jvm 主类在运行过程中如果使用到其他类 会逐步加载这些类 注意 jar包里的类不是一次
  • aws ec2 变更pem_用aws和jira建立一个连续的变更日志

    aws ec2 变更pem So you ve decided to go CI CD You read all about the org changes understand the ins and outs of the develo