Предпосылки для CI/CD
Чтобы настроить запуск проверок в конвейере, извлеките ключевые входные данные конфигурации из своей учетной записи Checks и проекта Google Cloud.
Аккаунт и приложение Target Checks
При запуске Checks на платформе CI/CD вам потребуется назначить результаты учётной записи Checks и приложению, подключенному к этой учётной записи. Для этого вам понадобятся идентификатор учётной записи Checks и идентификатор приложения .
Чтобы узнать идентификатор своей учетной записи , посетите страницу настроек своей учетной записи .
Чтобы узнать идентификатор приложения , посетите страницу настроек приложения .
Аутентификация
При использовании проверок в автоматизированной системе, например CI/CD, следует использовать учетную запись службы . Подробнее о создании и настройке учетной записи службы см. в разделе «Аутентификация CLI» .
Если вы используете один из плагинов Checks CI/CD, обратитесь к документации плагина, чтобы узнать, как предоставить учетные данные.
При использовании Checks CLI в системе CI/CD рекомендуется использовать переменные среды CI для настройки JSON-ключа. Например:
CHECKS_CREDENTIALS=/my/path/to/serviceaccount.json
Настройка проверок для запуска в конвейере CI/CD
Проверки поддерживают следующие подходы:
- Плагины Checks CI/CD : Checks предоставляет готовые плагины для нескольких платформ CI/CD, включая GitHub и Fastlane . Подробнее см. в боковой панели навигации.
- Интерфейс командной строки Checks : команды с более сложными рабочими процессами или использующие систему сборки без встроенного плагина Checks, могут использовать интерфейс командной строки Checks в конвейере CI/CD. Подробнее см. в разделах «Настройка с помощью интерфейса командной строки Checks» и «Универсальная настройка с помощью интерфейса командной строки Checks» .
- API Checks : для команд с тщательно настраиваемыми рабочими процессами Checks предлагает мощный REST API. Используйте его для запуска сканирования, получения отчетов и адаптации интерфейса к вашим уникальным требованиям. Подробнее см. в документации по API Checks .
Универсальная настройка с использованием Checks CLI
Если плагин Checks отсутствует для вашей платформы CI/CD, вы можете использовать интерфейс командной строки Checks . Разработчики могут напрямую интегрировать интерфейс командной строки Checks в любую платформу CI/CD, поддерживающую этапы рабочего процесса выполнения скриптов.
Интерфейс командной строки Checks можно настроить для:
- Возвращайте ненулевые коды ошибок только при соблюдении определённых условий, например, завершайте работу с кодом ошибки только при обнаружении высокоприоритетных проблем. Обратите внимание, что CLI никогда не возвращает код ошибки; разработчик должен вручную возвращать коды ошибок на этапе написания скрипта.
- Выводите все данные в формате JSON для большей гибкости.
Вот пример использования CLI в GitHub Actions для каждого коммита вместо GitHub Action Checks CI/CD. Мы также преобразуем выходные данные для формирования кода ошибки при обнаружении Checks приоритетных проблем:
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);
}
Обратная связь
Хотите добавить в это руководство описание рабочего процесса непрерывной интеграции/поставки? Сообщите нам об этом по адресу checks-support@google.com.