Этот репо содержит стек CDK, который устанавливает действие рецензента CodeGuru 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 Security, мы храним их как Artifacs of CICD -прогона. Это позволяет любому, кто имеет доступ к репозиторию для загрузки рекомендаций в формате сари.
Вы также можете увидеть все рекомендации в консоли AWS.
Для получения дополнительной информации см. Документацию CodeGuru Reviewer.
Обратите внимание, что только организации и репозитории разрешений и репозитории могут взять на себя роль IAM для запуска рецензента CodeGuru. По этой причине мы рекомендуем вам запустить действие рецензента Codeguru только на событиях push . Действие будет успешным на pull_requests только в том случае, если репозиторий, из которого возникла pull_request также является частью списка разрешений.
Кроме того, чтобы избежать сбоев действия для пользователей, которые разбивают этот репозиторий, мы маркируем шаг предположения о роли с помощью id: iam-role и охраняем все другие шаги рабочего процесса с помощью:
if: steps.iam-role.outcome == 'success'
Таким образом, они не выполняются, если вилка не разрешается принимать роль.
Смотрите Anploying для получения дополнительной информации.
Эта библиотека лицензирована по лицензии MIT-0. Смотрите файл лицензии.