AWS Code Commit Slack 集成 - 显示作者和提交详细信息

2023-12-21

我刚刚设置了 AWS codecommit 的 Slack 集成。我只收到存储库名称和分支。另外我还想知道是谁做出了这个提交和提交消息。

我确实尝试设置输入变压器规则。现在它显示了 Amazon EventBridge 中的两个角色。

我在下面添加了输入目标 json。但什么也没发生。

{
    "author" : "$.detail.author",
    "repositories" : "$.detail.respositoryNames"
}

这已经是在这里提出的问题了。 https://stackoverflow.com/questions/62011496/aws-code-commit-slack-integration-how-to-display-author-and-commit-message但这个问题没有正确的答案。


因此,我没有使用 slack 进行 AWS 聊天,而是设法通过 python 3.7 脚本使其与 AWS Lambda 一起使用。

您需要在 Slack 中创建一个私人/公共频道,以便所有这些提交源都将显示在那里。我创建了一个私人频道。然后按照以下步骤创建一个 Slack 应用程序。

如何创建 Slack 传入 Webhook URL?

在本文中,您将需要 Slack 传入 Webhook URL 将您的 AWS SNS 连接到 Slack。请按照以下步骤从头开始创建 Slack 传入 Webhook URL:

Step 1:将 SNS 连接到 Slack 的第一步要求您创建一个 Slack 应用程序。您可以点击此链接开始 –Slack API:应用程序 https://api.slack.com/apps?new_app=1.

Step 2:启用传入 Webhook 以将 SNS 连接到 Slack。为此,请转至设置 → 传入 Webhooks → 激活传入 Webhooks。您的页面将会刷新。

Step 3:通过单击“将新 Webhook 添加到工作区”来创建传入 Webhook。

Step 4:选择您所需的频道以将消息从 SNS 发布到 Slack,然后单击“授权”。

Step 5:您将被重定向到应用程序设置,现在您应该注意到“工作区”部分的 Webhook URL 下有一个新条目,其 Webhook URL 如下所示:

https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXX https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXX

您需要复制该 webhook url 并转到 AWS Lambda 以创建 python 3.7 代码。

Lambda python 3.7 代码

import json
import boto3
import urllib3

codecommit = boto3.client('codecommit')


def lambda_handler(event, context):
    # Log the updated references from the event
    references = {reference['ref'] for reference in event['Records'][0]['codecommit']['references']}
    print("References: " + str(references))
    # Get the repository from the event and show its git clone URL
    repository = event['Records'][0]['eventSourceARN'].split(':')[5]

    try:
        user = event['Records'][0]['userIdentityARN'].split(':')[5].split('/')[1]
        references = event['Records'][0]['codecommit']['references']
        for reference in references:
            commit = reference['commit']
            branch = reference['ref'].split('/')[2]
            commit_resp = codecommit.get_commit(repositoryName=repository, commitId=commit)
            message = commit_resp['commit']['message']
            parent_commit = commit_resp['commit']['parents'][0]
            commit_name = commit_resp['commit']['author']['name']
            diff_resp = codecommit.get_differences(
                repositoryName=repository,
                beforeCommitSpecifier=parent_commit,
                afterCommitSpecifier=commit
            )
            files = ''
            i = 1
            for blobs in diff_resp['differences']:
                files = files + f'\n\t{blobs["afterBlob"]["path"]}'
                i = i+1
                if i > 4:
                    files = files + f'\n\t ...more files'
                    break

            webhook = 'paste your webhook url here.'
            data = {
                "text": f"  <@{commit_name}> (<@{user}>) committed code to {branch} branch of {repository} \nCommit message : {message} \nCommit Id: {commit} \nFiles:{files}"}

            http = urllib3.PoolManager()
            r = http.request("POST", webhook,
                             body=json.dumps(data),
                             headers={"Content-type": "application/json"})

        return 'Success'
    except Exception as e:
        print(e)
        print(
            'Error getting repository {}. Make sure it exists and that your repository is in the same region as this function.'.format(repository))
        raise e

在此处更新您的 webhook url。

webhook = 'paste your webhook url here.'

之后添加 Lambda 函数的触发器以进行代码提交。

还要添加 lambda 函数访问代码提交的权限。每次提交之后,您都会在频道中看到提要。

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

AWS Code Commit Slack 集成 - 显示作者和提交详细信息 的相关文章

  • 如何在 Elastic Beanstalk 上添加 PATH

    我想将 PATH 添加到包上eb deploy 软件包安装到 var www html vendor bin 可以通过SSH手动添加 但是如何使用配置文件添加PATH 我有这样的配置文件 ebextensions ec2 config 01
  • Slack + Heroku:每当我的 Heroku 应用程序关闭时向 slack 发送通知

    我有一个 Heroku 应用程序 每当我在 Heroku 上部署时 我在 Slack 的生产频道上就会收到一条通知 我想对我的 Heroku 应用程序因任何原因关闭时遵循相同的程序 有什么推荐的方法吗 None
  • AWS S3 上传的图像已损坏

    我正在 AWS ec2 ubuntu 机器上工作 我的代码在 cakephp 中 当我尝试将任何图像上传到 AWS S3 时 它都会损坏 虽然它在核心 php 代码中运行良好 这是我的控制器代码 if this gt User gt sav
  • 将消息从 AWS Lambda 发布到 AWS IoT

    我正在尝试使用 Nodejs 将消息从 AWS Lamba 发布到 AWS IoT 我已压缩该项目并上传到 AWS IoT 下面是代码片段 var awsIot require aws iot device sdk var device a
  • AWS Cloudfront 作为具有自定义域的 Heroku 站点的 CDN

    最近 我从 AWS Route 53 brianpatrickhummel com 购买了一个域来托管个人投资组合 该投资组合网站已启动并正在运行 使用 S3 存储桶和 Cloudfront 作为 CDN 在作品集网站上 访问者可以预览我构
  • 在 Azure DevOps 项目之间移动存储库时保留拉取请求

    我在同一帐户内有两个 Azure DevOps 项目 我想将存储库从一个项目移动到另一个项目 这一页探索如何在具有完全保真历史记录的团队项目之间移动 git 存储库 https learn microsoft com en us azure
  • 使用终端时 Git 推送在总计后卡住了?

    我尝试将一些文件推送到Github 总大小只有22 2M 我不知道为什么它在总行之后卡住了 我读过推送到 Github 时 Git 推送挂起 https stackoverflow com questions 16906161 git pu
  • 如何将工作树与提交进行比较?

    我在用着 git diff mycommit 用于比较我的工作树mycommit 但它似乎忽略当前索引中不存在的文件 您可以按如下方式重现它 git init echo A gt A txt git add git commit m A g
  • AWS lambda 是否保证将函数更新到新版本时不会出现停机?

    默认情况下 AWS 使用LATEST更新了最新 lambda 版本的别名 我假设执行以下步骤 Now LATEST别名点版本 5 用户部署新版本的 lambda 在部署新版本时 LATEST别名仍然指向版本 5 部署完成后 Lambda 只
  • 如何使用 AWS Lambda 安装 Git?

    我在代码提交存储库中有代码 我正在编写一个 lambda 函数来为代码提交存储库的每个签入 事件 构建代码 我无法安装 git 因此无法克隆存储库 我该怎么办呢 正如其他人提到的 在 lambda 上安装 git 要么非常困难 要么完全不可
  • Git 将一个分支合并到所有其他分支中

    我知道这个问题已经在这里被问过 https stackoverflow com questions 2329716 merging changes from master into all branches using git https
  • 当当前分支上有未提交的更改时签出另一个分支

    大多数时候 当我尝试签出另一个现有分支时 如果我在当前分支上有一些未提交的更改 Git 会不允许我这样做 所以我必须首先提交或隐藏这些更改 然而 有时 Git 确实允许我在不提交或存储这些更改的情况下签出另一个分支 并且它会将这些更改携带到
  • 将bitbucket发布到数字海洋

    我本质上是试图使用 bitbucket 来理解 git 的概念 我一直在通过修改本地帐户和 bitbucket 帐户之间的文件来练习版本控制 事实证明这很有帮助 现在我正在尝试弄清楚如何将文件从 bitbucket 或者我猜是 GitHub
  • 为所有子文件夹设置 git 配置值

    我知道可以设置每个存储库的配置来覆盖用户级配置 即 path to my repo gitconfig覆盖 gitconfig 是否可以设置 git 配置来覆盖给定文件夹的所有子文件夹的用户级设置 即 我有 topLevelFolder1
  • 如何中止/停止正在进行的 Amazon AWS s3 上传

    我正在使用 aws sdk 的 javascript 版本将文件上传到亚马逊 s3 存储桶 code AWS config update accessKeyId access key secretAccessKey secret key A
  • AWS S3 GetObject 是否提供随机访问?

    I can 提供 HTTP Range 标头 https docs aws amazon com AmazonS3 latest API API GetObject html API GetObject RequestSyntax到 AWS
  • git reflog 和 log 有什么区别?

    手册页说 log 显示提交日志 reflog 管理 reflog 信息 reflog 信息到底是什么 它有哪些日志没有的信息 日志看起来更详细 git log显示当前的 HEAD 及其祖先 也就是说 它打印提交 HEAD 指向的提交 然后打
  • 从 android 简单上传到 S3

    我在网上搜索了从 android 上传简单文件到 s3 的方法 但找不到任何有效的方法 我认为这是因为缺乏具体步骤 1 https mobile awsblog com post Tx1V588RKX5XPQB TransferManage
  • 使用 AWS Java SDK 为现有 S3 对象设置 Expires 标头

    我正在更新 Amazon S3 存储桶中的现有对象以设置一些元数据 我想设置 HTTPExpires每个对象的标头以更好地处理 HTTP 1 0 客户端 我们正在使用AWS Java SDK http aws amazon com sdkf
  • 如何向 boto 中的联合用户授予 s3 存储桶的权限?

    尝试从文档中找出答案 但无法创建可以访问 s3 存储桶的联合用户 首先是进口 gt gt gt from boto s3 connection import S3Connection gt gt gt from boto sts impor

随机推荐