CI/CD 기본 요건
파이프라인에서 실행되도록 Checks를 구성하려면 Checks 계정과 Google Cloud 프로젝트에서 주요 구성 입력을 가져옵니다.
대상 계정 및 앱 확인
CI/CD 플랫폼에서 Checks를 실행할 때 결과를 Checks 계정과 해당 Checks 계정에 연결한 앱에 할당해야 합니다. 이렇게 하려면 Checks 계정 ID와 앱 ID가 필요합니다.
계정 ID의 경우 계정 설정 페이지를 방문하세요.
앱 ID의 경우 앱 설정 페이지를 방문하세요.
인증
CI/CD와 같은 자동화 설정에서 Checks를 사용하는 경우 서비스 계정을 사용해야 합니다. 서비스 계정을 만들고 구성하는 방법에 대한 자세한 내용은 CLI 인증을 참고하세요.
Checks CI/CD 플러그인 중 하나를 사용하는 경우 사용자 인증 정보를 제공하는 방법은 플러그인의 문서를 참고하세요.
CI/CD 시스템 내에서 Checks CLI를 사용하는 경우 CI 환경 변수를 사용하여 JSON 키를 구성하는 것이 좋습니다. 예를 들면 다음과 같습니다.
CHECKS_CREDENTIALS=/my/path/to/serviceaccount.json
CI/CD 파이프라인에서 실행되도록 검사 구성
Checks는 다음 접근 방식을 지원합니다.
- CI/CD 플러그인 확인: Checks는 GitHub, fastlane 등 여러 CI/CD 플랫폼을 위한 사전 빌드 플러그인을 제공합니다. 자세한 내용은 측면 탐색을 참고하세요.
- Checks CLI: 워크플로가 더 복잡하거나 Checks 사전 빌드 플러그인이 없는 빌드 시스템을 사용하는 팀은 CI/CD 파이프라인에서 Checks CLI를 사용할 수 있습니다. 자세한 내용은 Checks CLI를 사용하여 설정 및 Checks CLI를 사용한 범용 설정을 참고하세요.
- Checks API: 워크플로를 고도로 맞춤설정한 팀의 경우 Checks에서 강력한 REST API를 제공합니다. 이를 사용하여 스캔을 시작하고, 보고서를 검색하고, 고유한 요구사항에 맞게 환경을 맞춤설정할 수 있습니다. 자세한 내용은 Checks API 문서를 참고하세요.
Checks CLI를 사용한 범용 설정
CI/CD 플랫폼에 Checks 플러그인이 없는 경우 Checks CLI를 사용할 수 있습니다. Checks CLI는 스크립트 실행 워크플로 단계를 지원하는 모든 CI/CD 플랫폼에 개발자가 직접 스크립팅할 수 있습니다.
Checks CLI는 다음을 수행하도록 스크립트로 작성할 수 있습니다.
- 특정 기준을 충족하는 경우에만 0이 아닌 오류 코드를 반환합니다(예: 우선순위가 높은 문제가 발견된 경우에만 오류 코드로 종료). CLI는 오류 코드를 반환하지 않습니다. 개발자는 스크립팅 단계에서 오류 코드를 수동으로 반환해야 합니다.
- 유연성을 높이기 위해 모든 데이터를 JSON으로 출력합니다.
다음은 Checks CI/CD GitHub 작업 대신 커밋마다 GitHub Actions에서 CLI를 사용하는 예입니다. 또한 검사에서 우선순위 문제를 발견하면 오류 코드를 생성하도록 출력을 변환합니다.
name: Example workflow using Checks
run-name: ${ { github.actor } } is running Checks App Compliance GitHub Action
on: [push]
jobs:
checks:
runs-on: ubuntu-latest
steps:
uses: actions/checkout@v4
- name: Checks App Compliance analysis
run:
echo 'Starting Checks App Compliance scan...'
chmod +x ./checks
./checks report generate --binary-path=${CHECKS_BINARY_PATH} --app-id=${CHECKS_APP_ID} --account-id=${CHECKS_ACCOUNT_ID} --no-input --json --wait-and-print-report > checks_results.json
echo "Wrote App Compliance scan results to checks_results.json"
env:
# Replace all inputs with your configurations.
CHECKS_CREDENTIALS: ${{ secrets.SERVICE_ACCOUNT_JSON }}
CHECKS_APP_ID: "123456"
CHECKS_ACCOUNT_ID: "654321"
CHECKS_BINARY_PATH: "./app_release.apk"
- name: Read JSON file
uses: actions/github-script@v6
with:
script: |
const fs = require('fs');
const json = fs.readFileSync('./checks_results.json', 'utf8');
const report = JSON.parse(json);
console.log(`Generated report name: ${report.name}`);
console.log(`Report console URL: ${report.resultsUri}`);
const failingChecks = [];
for (const check of report.checks) {
if (check.severity.toString() === 'PRIORITY' && check.state.toString() === 'FAILED') {
failingChecks.push(check);
}
}
if (failingChecks.length > 0) {
console.log(`${failingChecks.length} priority issue(s) detected: `);
for (const check of failingChecks) {
console.log(`Type: ${check.type}. Details: ${JSON.stringify(check)}`);
}
process.exit(1);
}
의견
이 가이드에 추가하고 싶은 CI/CD 워크플로가 있나요? checks-support@google.com으로 알려주세요.