يحتوي هذا الريبو على مكدس CDK يقوم بإعداد CodeGuru Reviewer Github في حساب AWS الخاص بك لتكامل CI/CD في Github. يقوم بإعداد الأذونات الصحيحة لاستخدام مراجع CodeGuru بالإضافة إلى إنشاء دلو S3 يحمل الكود وإنشاء القطع الأثرية للتحليل بواسطة Codeguru reivewer.
إذا لم يكن لديك CDK لتثبيت TypeScript ، فاتبع الإرشادات هنا وتأكد من إعداد بيانات الاعتماد الخاصة بك بشكل صحيح حتى تتمكن من النشر مع 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 التي ينبغي السماح لها باستخدام مراجع codeguru في قائمة allowedGithubRepos . على سبيل المثال:
"allowedGithubRepos": ["aws-samples/*", "awslabs/smithy"]
يتيح لجميع المستودعات في العينة aws-sample و awslabs/smithy استخدام CodeGuru Reviewer.
بمجرد تحديث allowedGithubRepos ، تحتاج إلى bootstrap CDK ونشر المكدس.
قم بتشغيل الأمر:
npx cdk bootstrap --profile {PROFILE_NAME} "aws://unknown-account/unknown-region"
PROFILE_NAME بواحد من ملفات التعريف المسماة في ملف ~/.aws/config ."aws://unknown-account/unknown-region" .قم بتشغيل الأمر:
npx cdk deploy --profile {PROFILE_NAME}
PROFILE_NAME بواحد من ملفات التعريف المسماة في ملف ~/.aws/config . بمجرد اكتمال النشر ، ستتلقى إخراجًا مشابهًا لهذا:
✅ 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 .codeguru-reviewer . يمكنك استخدام أحد القوالب التالية لسير العمل الخاص بك:
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 Run. هذا يسمح لأي شخص لديه الوصول إلى المستودع لتنزيل التوصيات بتنسيق SARIF.
يمكنك أيضًا رؤية جميع التوصيات في وحدة التحكم AWS.
لمزيد من المعلومات ، راجع وثائق CodeGuru Reviewer.
لاحظ أنه يمكن للمنظمات والمستودعات المدرجة في القائمة فقط أن تحمل دور IAM لتشغيل مراجع CodeGuru. لهذا السبب ، نوصيك بتشغيل إجراء CodeGuru Reviewer فقط على أحداث push . لن ينجح الإجراء إلا في pull_requests إذا كان المستودع الذي نشأ منه pull_request هو أيضًا جزء من قائمة ABTER.
علاوة على ذلك ، لتجنب إخفاقات الإجراء للمستخدمين الذين يتخبطون في هذا المستودع ، نصف خطوة افتراض الدور مع id: iam-role وحراسة جميع خطوات سير العمل الأخرى مع:
if: steps.iam-role.outcome == 'success'
لذلك لا يتم إعدامهم إذا لم يُسمح للشوكة بتولي الدور.
انظر المساهمة لمزيد من المعلومات.
هذه المكتبة مرخصة بموجب ترخيص MIT-0. انظر ملف الترخيص.