Проверяет настройку CI/CD

Предпосылки для 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 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.