repo นี้มีสแต็ค CDK ที่ตั้งค่าการกระทำของผู้ตรวจสอบ CodeGuru GitHub ในบัญชี AWS ของคุณสำหรับการรวม CI/CD ใน GitHub มันตั้งค่าสิทธิ์ที่ถูกต้องสำหรับการใช้ CodeGuru Reviewer รวมถึงการสร้างถัง 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 reviewer ในรายการ 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-credentialscodeguru-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 เราเก็บไว้เป็น artifacs ของ CICD Run สิ่งนี้ช่วยให้ทุกคนที่เข้าถึงที่เก็บเพื่อดาวน์โหลดคำแนะนำในรูปแบบ Sarif
คุณยังสามารถดูคำแนะนำทั้งหมดในคอนโซล AWS ของคุณ
สำหรับข้อมูลเพิ่มเติมดูเอกสารประกอบของผู้ตรวจสอบ CodeGuru
โปรดทราบว่าเฉพาะองค์กรที่ได้รับการจดทะเบียนและที่เก็บข้อมูลเท่านั้นที่สามารถรับบทบาท IAM ในการเรียกใช้ Codeguru Reviewer ด้วยเหตุนี้เราขอแนะนำให้คุณเรียกใช้การกระทำของผู้ตรวจสอบ Codeguru เฉพาะในเหตุการณ์ push เท่านั้น การกระทำจะประสบความสำเร็จเฉพาะใน pull_requests หากพื้นที่เก็บข้อมูลที่ pull_request ORTITATED เป็นส่วนหนึ่งของรายการอนุญาต
นอกจากนี้เพื่อหลีกเลี่ยงความล้มเหลวของการดำเนินการสำหรับผู้ใช้ที่แยกที่เก็บนี้เราจะติดฉลากขั้นตอนการสมมติบทบาทด้วย id: iam-role และป้องกันขั้นตอนเวิร์กโฟลว์อื่น ๆ ทั้งหมดด้วย:
if: steps.iam-role.outcome == 'success'
ดังนั้นพวกเขาจึงไม่ได้รับการดำเนินการหากส้อมไม่ได้รับอนุญาตให้รับบทบาท
ดูข้อมูลเพิ่มเติม
ห้องสมุดนี้ได้รับใบอนุญาตภายใต้ใบอนุญาต MIT-0 ดูไฟล์ใบอนุญาต