在推送到 Codecommit 时需要特定的提交消息 AWS Lambda
Require Specific Commit Message AWS Lambda on Push to Codecommit
我正在尝试强制执行以 "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'");
});
}
};
如果提交消息不包含"BPSD-XXXXX"
,我希望代码不被推送
在您的 lambda 点,它已经上传。您需要做的是在提交时强制执行提交挂钩,检查提交 message.This 是否会在 .git/hooks/commit-msg[=13= 中受到控制]
这些可以在每个 repo 中控制,也可以设置为服务器端提交挂钩。
一些应该有帮助的链接:
https://git-scm.com/book/uz/v2/Customizing-Git-An-Example-Git-Enforced-Policy
https://gist.github.com/pgilad/5d7e4db725a906bd7aa7
我找到的一个快速脚本,可以放入 .git/hooks/commit-msg
#!/usr/bin/env bash
INPUT_FILE=
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
我正在尝试强制执行以 "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'");
});
}
};
如果提交消息不包含"BPSD-XXXXX"
,我希望代码不被推送在您的 lambda 点,它已经上传。您需要做的是在提交时强制执行提交挂钩,检查提交 message.This 是否会在 .git/hooks/commit-msg[=13= 中受到控制]
这些可以在每个 repo 中控制,也可以设置为服务器端提交挂钩。
一些应该有帮助的链接:
https://git-scm.com/book/uz/v2/Customizing-Git-An-Example-Git-Enforced-Policy
https://gist.github.com/pgilad/5d7e4db725a906bd7aa7
我找到的一个快速脚本,可以放入 .git/hooks/commit-msg
#!/usr/bin/env bash
INPUT_FILE=
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