Dieses Repo enthält einen CDK -Stack, der die Codeguru -Rezensent -GitHub -Aktion in Ihrem AWS -Konto für die CI/CD -Integration in GitHub einrichtet. Es werden die richtigen Berechtigungen für die Verwendung von Codeguru -Rezensent sowie für das Erstellen eines S3 -Bucket eingerichtet, der den Code enthält und Artefakte zur Analyse von Codeguru Reivewer erstellt.
Wenn Sie die CDK für Typscript nicht installiert haben, befolgen Sie die Anweisungen hier und stellen Sie sicher, dass Ihre Anmeldeinformationen korrekt eingerichtet sind, damit Sie mit CDK bereitstellen können. Die Schritte umfassen:
npm install typescript aws-cdk
Sobald alles richtig eingerichtet ist, holen Sie die Abhängigkeiten und kompilieren Sie:
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
Fügen Sie in der Datei ./cdk.json alle Github -Repositories hinzu, die Codeguru -Rezensent in der Liste allowedGithubRepos verwenden dürfen. Zum Beispiel:
"allowedGithubRepos": ["aws-samples/*", "awslabs/smithy"]
Ermöglicht allen Repositories in der Organisation aws-sample und im Repository awslabs/smithy den Codeguru-Rezensent.
Sobald Sie die allowedGithubRepos aktualisiert haben, benötigen Sie Bootstrap -CDK und stellen den Stapel bereit.
Führen Sie den Befehl aus:
npx cdk bootstrap --profile {PROFILE_NAME} "aws://unknown-account/unknown-region"
PROFILE_NAME durch eines der benannten Profile in Ihrer ~/.aws/config -Datei."aws://unknown-account/unknown-region" verwenden.Führen Sie den Befehl aus:
npx cdk deploy --profile {PROFILE_NAME}
PROFILE_NAME durch eines der benannten Profile in Ihrer ~/.aws/config -Datei. Sobald der Einsatz abgeschlossen ist, erhalten Sie eine ähnliche Ausgabe wie folgt:
✅ 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
Sie benötigen diese Informationen in Ihrem GitHub -Workflow:
configure-aws-credentials aufrufen.codeguru-reviewer -Aktion aufrufen. Sie können einen der folgenden Vorlagen für Ihren Workflow verwenden:
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
Ersetzen Sie die Zeichenfolgen {ROLE_ARN} , {REGION} und {BUCKET_NAME} durch die Werte, die Sie als Ausgabe von CDK erhalten haben.
Diese Beispiele verwenden die GitHub -Code -Scan -Funktion, um die Empfehlungen anzuzeigen. Wenn Sie ein privates Repository verwenden, ohne für das Scannen von Code zu bezahlen, schlägt dies fehl . Bevor Sie diese Funktion verwenden können, müssen Sie das Scannen von GitHub -Code für Ihr Repository oder Ihre Organisation aktivieren (siehe Dokumentation). Wenn Sie diese Funktion nicht verwenden möchten, lassen Sie das Upload review result weg.
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
Ersetzen Sie die Zeichenfolgen {ROLE_ARN} , {REGION} und {BUCKET_NAME} durch die Werte, die Sie als Ausgabe von CDK erhalten haben.
Anstatt die Artefakte auf die Registerkarte Sicherheit auf die GitHubs -Sicherheit hochzuladen, speichern wir sie als Artefacs des CICD -Laufs. Auf diese Weise kann jeder, der auf das Repository zugreifen kann, die Empfehlungen im SARIF -Format herunterladen.
Sie können auch alle Empfehlungen in Ihrer AWS -Konsole sehen.
Weitere Informationen finden Sie in der CodeGuru Reviewer -Dokumentation.
Beachten Sie, dass nur zulässige Organisationen und Repositories zulässigen zulässigen Organisationen und Repositorys übernehmen können, dass die IAM-Rolle Codeguru-Prüfer ausführen kann. Aus diesem Grund empfehlen wir Ihnen, die Codeguru Reviewer -Aktion nur für push -Ereignisse auszuführen. Die Aktion wird nur bei pull_requests erfolgreich sein, wenn das Repository, aus dem das pull_request stammt, auch Teil der Zulassungsliste ist.
Um das Versagen der Aktion für Benutzer zu vermeiden, die dieses Repository aufgeben, kennzeichnen wir die Rolle der Rollenannahme mit id: iam-role und schützen alle anderen Workflow-Schritte mit:
if: steps.iam-role.outcome == 'success'
Sie werden also nicht ausgeführt, wenn die Gabel nicht die Rolle übernehmen darf.
Weitere Informationen finden Sie unter Beitrag.
Diese Bibliothek ist im Rahmen der MIT-0-Lizenz lizenziert. Siehe die Lizenzdatei.