Verifica a configuração de CI/CD

Pré-requisitos para CI/CD

Para configurar as verificações para serem executadas em um pipeline, recupere as principais entradas de configuração da conta do Checks e do projeto do Google Cloud.

Conta e app do Target Checks

Ao executar verificações na sua plataforma de CI/CD, você precisa atribuir os resultados a uma conta de verificações e a um app conectado a ela. Para isso, você vai precisar do ID da conta e do ID do app do Checks.

Para encontrar seu ID da conta, acesse a página Configurações da conta.

Para seu ID do app, acesse a página Configurações do app.

Autenticação

Uma conta de serviço deve ser usada ao usar verificações em uma configuração de automação, como CI/CD. Para mais informações sobre como criar e configurar uma conta de serviço, consulte Autenticar a CLI.

Se você estiver usando um dos plug-ins de CI/CD do Checks, consulte a documentação dele para saber como fornecer as credenciais.

Se você estiver usando a CLI Checks no seu sistema de CI/CD, recomendamos usar variáveis de ambiente de CI para configurar a chave JSON. Exemplo:

CHECKS_CREDENTIALS=/my/path/to/serviceaccount.json

Configurar verificações para serem executadas em um pipeline de CI/CD

As verificações são compatíveis com as seguintes abordagens:

  • Verifica plug-ins de CI/CD: o Checks oferece plug-ins pré-criados para várias plataformas de CI/CD, incluindo GitHub e fastlane. Consulte a navegação lateral para mais informações.
  • CLI Checks: equipes com fluxos de trabalho mais complexos ou que usam um sistema de build sem um plug-in pré-criado do Checks podem usar a CLI Checks no pipeline de CI/CD. Consulte Configuração usando a CLI Checks e Configuração universal usando a CLI Checks para mais detalhes.
  • API Checks: para equipes com fluxos de trabalho altamente personalizados, a API Checks oferece uma API REST robusta. Use-o para iniciar verificações, recuperar relatórios e adaptar a experiência aos seus requisitos exclusivos. Encontre mais informações na documentação da API Checks.

Configuração universal usando a CLI do Checks

Se não houver um plug-in de verificações para sua plataforma de CI/CD, use a CLI de verificações. A CLI Checks pode ser programada diretamente pelos desenvolvedores em qualquer plataforma de CI/CD que ofereça suporte a etapas de fluxo de trabalho de execução de scripts.

É possível criar scripts para a CLI Checks com o objetivo de:

  • Retorne códigos de erro diferentes de zero somente quando determinados critérios forem atendidos, por exemplo, saia com um código de erro somente se forem encontrados problemas de alta prioridade. A CLI nunca retorna um código de erro. O desenvolvedor precisa retornar códigos de erro manualmente na etapa de script.
  • Saída de todos os dados em JSON para mais flexibilidade.

Confira um exemplo de uso da CLI no GitHub Actions em cada commit, em vez da ação do GitHub de CI/CD de verificações. Também estamos transformando a saída para produzir um código de erro quando as verificações encontram problemas de prioridade:

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);
                }

Feedback

Você tem um fluxo de trabalho de CI/CD que gostaria de ver adicionado a este guia? Envie uma mensagem para checks-support@google.com.