如何获取AWS CodeCommit中Pull Request审批人列表并生成报告
生成包含AWS CodeCommit Pull Request及审批人信息的报告
因为CodeCommit控制台的PR列表默认不展示审批人列,你可以通过以下几种方式生成所需报告:
方法一:使用AWS CLI批量获取信息
- 先列出目标仓库中所有的Pull Request:
aws codecommit list-pull-requests --repository-name YOUR_REPO_NAME
- 遍历每个PR的ID,获取包含审批人在内的详细信息:
for pr_id in $(aws codecommit list-pull-requests --repository-name YOUR_REPO_NAME --query 'pullRequestIds' --output text); do aws codecommit describe-pull-request --pull-request-id $pr_id --query '{pullRequestId: pullRequestId, title: title, approvers: approvalRules[].approvalRuleContent}' done
如果需要输出为易读的CSV格式,可以结合jq工具处理:
echo "PR ID,标题,审批人" > pr_approvers.csv for pr_id in $(aws codecommit list-pull-requests --repository-name YOUR_REPO_NAME --query 'pullRequestIds' --output text); do aws codecommit describe-pull-request --pull-request-id $pr_id | jq -r '"'\(.pullRequestId)','\(.title)','\(.approvalRules[0].approvalRuleContent | fromJson.approvers)"' >> pr_approvers.csv done
方法二:使用AWS SDK编写自定义脚本
如果需要更灵活的格式或批量处理多个仓库,可以用Python结合Boto3 SDK编写脚本:
import boto3 import csv client = boto3.client('codecommit') repo_name = "YOUR_REPO_NAME" # 获取仓库内所有PR pr_response = client.list_pull_requests(repositoryName=repo_name) pr_ids = pr_response['pullRequestIds'] # 生成CSV报告 with open('pr_approvers_report.csv', 'w', newline='', encoding='utf-8') as csvfile: fieldnames = ['PR ID', '标题', '状态', '审批人'] writer = csv.DictWriter(csvfile, fieldnames=fieldnames) writer.writeheader() for pr_id in pr_ids: pr_details = client.describe_pull_request(pullRequestId=pr_id)['pullRequest'] title = pr_details['title'] status = pr_details['pullRequestStatus'] # 提取审批人列表 approvers = [] for rule in pr_details.get('approvalRules', []): rule_content = eval(rule['approvalRuleContent']) approvers.extend(rule_content.get('approvers', [])) writer.writerow({ 'PR ID': pr_id, '标题': title, '状态': status, '审批人': ', '.join(approvers) })
运行前需配置好AWS凭证(比如通过aws configure),并安装依赖包:pip install boto3
方法三:利用AWS Lambda自动化生成报告
如果需要定期生成报告,可以创建Lambda函数,复用上述Python逻辑,添加CloudWatch Events定时触发规则,将生成的报告上传到S3存储桶,或通过邮件推送,实现自动化的报告生成流程。
内容的提问来源于stack exchange,提问作者Toshi
相关产品推荐
相关产品推荐

