Este repositório contém uma pilha CDK que configura o revisor do CodeGuru Github Action em sua conta AWS para integração de CI/CD no GitHub. Ele configura as permissões corretas para o uso do CodeGuru Revisor, além de criar um bucket S3 que mantém o código e construa artefatos para análise pelo CodeGuru Reivewer.
Se você não tiver o CDK para o TypeScript instalado, siga as instruções aqui e verifique se suas credenciais estão configuradas corretamente para que você possa implantar com o CDK. As etapas incluem:
npm install typescript aws-cdk
Depois que tudo estiver configurado corretamente, busque as dependências e compile:
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
No arquivo ./cdk.json , adicione todos os repositórios do GitHub que devem ter permissão para usar o Codeguru Revisor na lista allowedGithubRepos . Por exemplo:
"allowedGithubRepos": ["aws-samples/*", "awslabs/smithy"]
Permite que todos os repositórios da organização aws-sample e do repositório awslabs/smithy usem o Codeguru Revisor.
Depois de atualizar o allowedGithubRepos , você precisa de Bootstrap CDK e implantar a pilha.
Execute o comando:
npx cdk bootstrap --profile {PROFILE_NAME} "aws://unknown-account/unknown-region"
PROFILE_NAME por um dos perfis nomeados no seu arquivo ~/.aws/config ."aws://unknown-account/unknown-region" .Execute o comando:
npx cdk deploy --profile {PROFILE_NAME}
PROFILE_NAME por um dos perfis nomeados no seu arquivo ~/.aws/config . Depois que a implantação concluir, você receberá uma saída semelhante a isso:
✅ 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
Você precisará dessas informações no seu fluxo de trabalho do GitHub:
configure-aws-credentials .codeguru-reviewer . Você pode usar um dos seguintes modelos para o seu fluxo de trabalho:
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
Substitua as strings {ROLE_ARN} , {REGION} e {BUCKET_NAME} pelos valores que você recebeu como saída do CDK.
Esses exemplos usam o recurso de digitalização de código do Github para exibir as recomendações. Se você estiver usando um repositório privado sem pagar pela digitalização de código, isso falhará . Antes de poder usar esse recurso, você precisa ativar a digitalização do código do GitHub para o seu repositório ou organização (consulte a documentação). Se você não está planejando usar esse recurso, omite a parte 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
Substitua as strings {ROLE_ARN} , {REGION} e {BUCKET_NAME} pelos valores que você recebeu como saída do CDK.
Aqui, em vez de enviar os artefatos para a guia de segurança do Githubs, os armazenamos como Artifacs da execução do CICD. Isso permite que qualquer pessoa com acesso ao repositório faça o download das recomendações no formato SARIF.
Você também pode ver todas as recomendações em seu console da AWS.
Para obter mais informações, consulte a documentação do Codeguru Revisor.
Observe que apenas organizações e repositórios listados podem assumir a função do IAM para executar o revisor do CodeGuru. Por esse motivo, recomendamos que você execute a ação do revisor CodeGuru apenas nos eventos push . A ação só terá sucesso no pull_requests se o repositório do qual o pull_request se originou também fizer parte da lista de permissões.
Além disso, para evitar falhas da ação para usuários que bifurcarem esse repositório, rotulamos a etapa de suposição de função com id: iam-role e guardamos todas as outras etapas do fluxo de trabalho com:
if: steps.iam-role.outcome == 'success'
Portanto, eles não são executados se o garfo não tiver permissão para assumir a função.
Consulte contribuindo para mais informações.
Esta biblioteca está licenciada sob a licença MIT-0. Veja o arquivo de licença.