Repo ini berisi tumpukan CDK yang mengatur codeguru reviewer Github Action di akun AWS Anda untuk integrasi CI/CD di GitHub. Ini mengatur izin yang benar untuk menggunakan Codeguru Reviewer serta membuat ember S3 yang memegang kode dan membangun artefak untuk dianalisis oleh Codeguru Reivewer.
Jika Anda tidak memiliki CDK untuk TypeScript yang diinstal, ikuti instruksi di sini dan pastikan kredensial Anda diatur dengan benar sehingga Anda dapat menggunakan CDK. Langkah -langkahnya termasuk:
npm install typescript aws-cdk
Setelah semuanya diatur dengan benar, ambil dependensi dan kompilasi:
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
Dalam file ./cdk.json , tambahkan semua repositori github yang harus diizinkan untuk menggunakan codeguru reviewer dalam daftar allowedGithubRepos . Misalnya:
"allowedGithubRepos": ["aws-samples/*", "awslabs/smithy"]
memungkinkan semua repositori dalam organisasi aws-sample dan repositori awslabs/smithy untuk menggunakan codeguru reviewer.
Setelah Anda memperbarui yang allowedGithubRepos , Anda memerlukan bootstrap CDK dan menggunakan tumpukan.
Jalankan perintah:
npx cdk bootstrap --profile {PROFILE_NAME} "aws://unknown-account/unknown-region"
PROFILE_NAME dengan salah satu profil yang disebutkan di file ~/.aws/config Anda."aws://unknown-account/unknown-region" .Jalankan perintah:
npx cdk deploy --profile {PROFILE_NAME}
PROFILE_NAME dengan salah satu profil yang disebutkan di file ~/.aws/config Anda. Setelah penyebaran selesai, Anda akan menerima output yang mirip dengan ini:
✅ 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
Anda akan membutuhkan informasi ini dalam alur kerja GitHub Anda:
configure-aws-credentials .codeguru-reviewer . Anda dapat menggunakan salah satu dari templat berikut untuk alur kerja Anda:
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
Ganti string {ROLE_ARN} , {REGION} , dan {BUCKET_NAME} dengan nilai -nilai yang Anda terima sebagai output dari CDK.
Contoh -contoh ini menggunakan fitur pemindaian kode GitHub untuk menampilkan rekomendasi. Jika Anda menggunakan repositori pribadi tanpa membayar pemindaian kode, ini akan gagal . Sebelum Anda dapat menggunakan fitur ini, Anda perlu mengaktifkan pemindaian kode github untuk repositori atau organisasi Anda (lihat dokumentasi). Jika Anda tidak berencana menggunakan fitur ini, hilangkan bagian 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
Ganti string {ROLE_ARN} , {REGION} , dan {BUCKET_NAME} dengan nilai -nilai yang Anda terima sebagai output dari CDK.
Di sini, alih -alih mengunggah Artefak ke Tab Keamanan GitHubs, kami menyimpannya sebagai Artifacs dari CICD Run. Ini memungkinkan siapa pun yang memiliki akses ke repositori untuk mengunduh rekomendasi dalam format Sarif.
Anda juga dapat melihat semua rekomendasi di konsol AWS Anda.
Untuk informasi lebih lanjut, lihat dokumentasi pengulas Codeguru.
Perhatikan bahwa hanya organisasi dan repositori yang terdaftar diizinkan dapat mengambil peran IAM untuk menjalankan pengulas Codeguru. Untuk alasan ini, kami menyarankan Anda menjalankan tindakan peninjau Codeguru hanya pada acara push . Tindakan hanya akan berhasil di pull_requests jika repositori dari mana pull_request berasal juga merupakan bagian dari daftar izin.
Lebih lanjut, untuk menghindari kegagalan tindakan bagi pengguna yang membayar repositori ini, kami memberi label langkah asumsi peran dengan id: iam-role dan menjaga semua langkah alur kerja lainnya dengan:
if: steps.iam-role.outcome == 'success'
Jadi mereka tidak dieksekusi jika garpu tidak diizinkan untuk mengambil peran.
Lihat berkontribusi untuk informasi lebih lanjut.
Perpustakaan ini dilisensikan di bawah lisensi MIT-0. Lihat file lisensi.