Git 在Push-to-Codecommit上需要特定的提交消息AWS Lambda

Git 在Push-to-Codecommit上需要特定的提交消息AWS Lambda,git,amazon-web-services,aws-lambda,git-webhooks,Git,Amazon Web Services,Aws Lambda,Git Webhooks,我试图强制以“BPSD-XXXXX”开头的提交,但在代码实际被推送到AWS Codecommit之前,我不知道如何强制执行这个lambda函数 下面的lambda函数强制执行提交字符串,但直到实际推送代码之后。我已经设置了一个触发器,在推送代码时触发Codecommit 我意识到触发器是个问题,但是否有一个触发器可以在完全推送实际发生之前检查提交消息?还是在推动过程中 var aws = require('aws-sdk'); //aws.config.update({region:'us-ea

我试图强制以“BPSD-XXXXX”开头的提交,但在代码实际被推送到AWS Codecommit之前,我不知道如何强制执行这个lambda函数

下面的lambda函数强制执行提交字符串,但直到实际推送代码之后。我已经设置了一个触发器,在推送代码时触发Codecommit

我意识到触发器是个问题,但是否有一个触发器可以在完全推送实际发生之前检查提交消息?还是在推动过程中

var aws = require('aws-sdk');
//aws.config.update({region:'us-east-2'});
var codecommit = new aws.CodeCommit({ apiVersion: '2015-04-13' });

exports.handler = function (event, context) {
    //console.log(JSON.stringify(event));
    for (var reference of event.Records[0].codecommit.references) {
        let commitId = reference.commit;
        let repo = event.Records[0].eventSourceARN.split(':').pop();
        console.log('commitId', commitId);
        console.log('repo', repo);
        codecommit.getCommit({ repositoryName: repo, commitId: commitId }, function (error, data) {
            if (error)
                throw error;

            console.log('message:', data.commit.message);
            if (!/^(BPSD-[0-9]+|Merge)/.test(data.commit.message))
                throw new Error("Your commit message is missing either a JIRA Issue ('BPSD-XXXX') or 'Merge'");
        });
    }
};

如果提交消息在已上载的lambda点不包含“BPSD-XXXXX”

,我希望不要推送代码。您需要做的是在提交点强制执行提交钩子,该钩子检查提交消息

这些可以在每个repo中控制,也可以设置为服务器端提交挂钩

一些应该有帮助的链接:

我找到的一个快速脚本,可以放在.git/hooks/commit msg中


对你有用吗?听起来也有类似的需求。@Romanvaleri这是一个客户端解决方案,不能对我的团队中的所有开发人员强制实施,只有我的本地机器。第二个答案涉及远程端部分。您发送的一个链接说,您应该包括一个更新挂钩。这个文件是否也放在.git/hooks/update中?如何将其作为服务器端钩子?
#!/usr/bin/env bash
INPUT_FILE=$1
START_LINE=`head -n1 $INPUT_FILE`
PATTERN="^(MYPROJ)-[[:digit:]]+: "
if ! [[ "$START_LINE" =~ $PATTERN ]]; then
  echo "Bad commit message, see example: MYPROJ-123: commit message"
  exit 1
fi