此存儲庫包含一個CDK堆棧,該堆棧在您的AWS帳戶中為GitHub中的CI/CD集成設置Codeguru評論者GitHub Action。它為使用Codeguru審稿人設置了正確的權限,並創建了一個保存代碼並建立codeguru Reivewer分析的S3存儲桶。
如果您沒有安裝打字稿的CDK,請在此處按照說明進行操作,並確保正確設置憑據,以便可以使用CDK部署。這些步驟包括:
npm install typescript aws-cdk
一旦正確設置了所有內容,請獲取依賴項並編譯:
git clone https://github.com/aws-samples/aws-codeguru-reviewer-cicd-cdk-sample.git
cd aws-codeguru-reviewer-cicd-cdk-sample
npm install
npm run build
在文件./cdk.json中,添加所有GitHub存儲庫,應允許在allowedGithubRepos列表中使用Codeguru Reviewer。例如:
"allowedGithubRepos": ["aws-samples/*", "awslabs/smithy"]
允許組織中的所有存儲庫aws-sample和存儲庫awslabs/smithy使用Codeguru審稿人。
更新了allowedGithubRepos GithubRepos後,您需要Bootstrap CDK並部署堆棧。
運行命令:
npx cdk bootstrap --profile {PROFILE_NAME} "aws://unknown-account/unknown-region"
~/.aws/config文件中的命名配置文件之一替換PROFILE_NAME 。"aws://unknown-account/unknown-region" 。運行命令:
npx cdk deploy --profile {PROFILE_NAME}
~/.aws/config文件中的命名配置文件之一替換PROFILE_NAME 。 部署完成後,您將收到與此類似的輸出:
✅ GuruCdkSetupStack
Outputs:
GuruCdkSetupStack.Role = arn:aws:iam::123456789012:role/GitHubActionRole
GuruCdkSetupStack.Region = us-east-1
GuruCdkSetupStack.Bucket = codeguru-reviewer-build-artifacts-123456789012-us-east-1
您將在GitHub工作流中需要此信息:
configure-aws-credentials操作時,您將使用角色ARN和區域。codeguru-reviewer Action時,您將使用存儲牌名稱。 您可以將以下模板之一用於工作流程:
name: Analyze with CodeGuru Reviewer
on:
- push
- workflow_dispatch # This allows manual triggering of the action through the GitHub UI.
permissions:
id-token: write
contents: read
security-events: write
jobs:
analyze:
name: Analyze with CodeGuru Reviewer
runs-on: ubuntu-latest
steps:
- name: Configure AWS credentials
id: iam-role
continue-on-error: true
uses: aws-actions/configure-aws-credentials@v1
with:
role-to-assume: {ROLE_ARN}
aws-region: {REGION}
- uses: actions/checkout@v2
if: steps.iam-role.outcome == 'success'
with:
fetch-depth: 0
- name: Set up JDK 1.8
if: steps.iam-role.outcome == 'success'
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Build project
if: steps.iam-role.outcome == 'success'
run: ./gradlew jar -x test
- name: CodeGuru Reviewer
uses: aws-actions/[email protected]
if: steps.iam-role.outcome == 'success'
continue-on-error: false
with:
s3_bucket: {BUCKET_NAME}
build_path: ./target/classes
- name: Upload review result
if: steps.iam-role.outcome == 'success'
uses: github/codeql-action/upload-sarif@v1
with:
sarif_file: codeguru-results.sarif.json
將字符串{ROLE_ARN} , {REGION}和{BUCKET_NAME}替換為從CDK輸出收到的值。
這些示例使用GitHub的代碼掃描功能來顯示建議。如果您使用的是私人存儲庫而無需支付代碼掃描,則將失敗。在使用此功能之前,您需要為您的存儲庫或組織啟用GitHub代碼掃描(請參閱文檔)。如果您不打算使用此功能,請省略Upload review result部分。
name: Analyze with CodeGuru Reviewer
on:
- push
- workflow_dispatch # This allows manual triggering of the action through the GitHub UI.
permissions:
id-token: write
contents: read
jobs:
analyze:
name: Analyze with CodeGuru Reviewer
runs-on: ubuntu-latest
steps:
- name: Configure AWS credentials
id: iam-role
continue-on-error: true
uses: aws-actions/configure-aws-credentials@v1
with:
role-to-assume: {ROLE_ARN}
aws-region: {REGION}
- uses: actions/checkout@v2
if: steps.iam-role.outcome == 'success'
with:
fetch-depth: 0
- name: CodeGuru Reviewer
uses: aws-actions/[email protected]
if: steps.iam-role.outcome == 'success'
continue-on-error: false
with:
s3_bucket: {BUCKET_NAME}
- name: Store SARIF file
if: steps.iam-role.outcome == 'success'
uses: actions/upload-artifact@v2
with:
name: SARIF_recommendations
path: ./codeguru-results.sarif.json
將字符串{ROLE_ARN} , {REGION}和{BUCKET_NAME}替換為從CDK輸出收到的值。
在這裡,我們沒有將工件上傳到Githubs安全標籤上,而是將其存儲為CICD運行的Artifacs。這樣可以訪問存儲庫的任何人以SARIF格式下載建議。
您還可以在您的AWS控制台中查看所有建議。
有關更多信息,請參閱《 Codeguru評論者文檔》。
請注意,只有允許上市的組織和存儲庫可以承擔IAM角色來運行Codeguru審稿人。因此,我們建議您僅在push事件上運行Codeguru審稿人的操作。如果pull_request起源的存儲庫也是允許列表的一部分,則該操作將僅在pull_requests上成功。
此外,為了避免針對該存儲庫的用戶的操作失敗,我們將角色假設步驟標記為id: iam-role和守衛所有其他工作流程步驟:
if: steps.iam-role.outcome == 'success'
因此,如果不允許叉子擔任角色,則不會被執行。
有關更多信息,請參見貢獻。
該圖書館已獲得MIT-0許可證的許可。請參閱許可證文件。