Ce dépôt contient une pile CDK qui configure l'action GitHub examinateur de codeguru dans votre compte AWS pour l'intégration CI / CD dans GitHub. Il configure les autorisations correctes pour l'utilisation de CodeGuru Reviewer ainsi que pour créer un seau S3 qui contient le code et construit des artefacts pour l'analyse par CodeGuru Reivewer.
Si vous n'avez pas installé le CDK pour TypeScript, suivez les instructions ici et assurez-vous que vos informations d'identification sont configurées correctement afin que vous puissiez déployer avec CDK. Les étapes incluent:
npm install typescript aws-cdk
Une fois que tout est configuré correctement, récupérez les dépendances et compilez:
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
Dans le fichier ./cdk.json , ajoutez tous les référentiels GitHub qui devraient être autorisés à utiliser CodeGuru Reviewer dans la liste allowedGithubRepos . Par exemple:
"allowedGithubRepos": ["aws-samples/*", "awslabs/smithy"]
Permet à tous les référentiels de l'organisation aws-sample et du référentiel awslabs/smithy d'utiliser CodeGuru Reviewer.
Une fois que vous avez mis à jour les allowedGithubRepos , vous avez besoin de bootstrap cdk et de déployer la pile.
Exécutez la commande:
npx cdk bootstrap --profile {PROFILE_NAME} "aws://unknown-account/unknown-region"
PROFILE_NAME par l'un des profils nommés dans votre fichier ~/.aws/config ."aws://unknown-account/unknown-region" .Exécutez la commande:
npx cdk deploy --profile {PROFILE_NAME}
PROFILE_NAME par l'un des profils nommés dans votre fichier ~/.aws/config . Une fois le déploiement terminé, vous recevrez une sortie similaire à ceci:
✅ 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
Vous aurez besoin de ces informations dans votre flux de travail GitHub:
configure-aws-credentials .codeguru-reviewer . Vous pouvez utiliser l'un des modèles suivants pour votre flux de travail:
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
Remplacez les chaînes {ROLE_ARN} , {REGION} et {BUCKET_NAME} par les valeurs que vous avez reçues en tant que sortie de CDK.
Ces exemples utilisent la fonction de numérisation de code de GitHub pour afficher les recommandations. Si vous utilisez un référentiel privé sans payer pour la numérisation de code, cela échouera . Avant de pouvoir utiliser cette fonctionnalité, vous devez activer la numérisation de code GitHub pour votre référentiel ou votre organisation (voir documentation). Si vous ne prévoyez pas d'utiliser cette fonctionnalité, omettez la partie 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
Remplacez les chaînes {ROLE_ARN} , {REGION} et {BUCKET_NAME} par les valeurs que vous avez reçues en tant que sortie de CDK.
Ici, au lieu de télécharger l'onglet des artefacts sur GitHubs, nous les stockons sous forme d'artifacs de la course CICD. Cela permet à toute personne ayant accès au référentiel de télécharger les recommandations au format Sarif.
Vous pouvez également voir toutes les recommandations dans la console AWS.
Pour plus d'informations, consultez la documentation de CodeGuru Reviewer.
Notez que seuls les organisations et les référentiels classés autoritaires peuvent assumer le rôle IAM pour exécuter CodeGuru Reviewer. Pour cette raison, nous vous recommandons d'exécuter l'action de la revue CodeGuru uniquement sur les événements push . L'action ne réussira sur pull_requests que si le référentiel à partir duquel le pull_request est originaire fait également partie de la liste d'autorisation.
De plus, pour éviter les échecs de l'action pour les utilisateurs qui débarquent ce référentiel, nous étiquetons l'étape de l'hypothèse du rôle avec id: iam-role et gardez toutes les autres étapes du flux de travail avec:
if: steps.iam-role.outcome == 'success'
Ils ne sont donc pas exécutés si la fourche n'est pas autorisée à assumer le rôle.
Voir contribuer pour plus d'informations.
Cette bibliothèque est autorisée sous la licence MIT-0. Voir le fichier de licence.