تنظیم CI/CD را بررسی می کند

پیش نیازهای CI/CD

برای پیکربندی چک‌ها برای اجرا در خط لوله، ورودی‌های پیکربندی کلیدی را از حساب چک‌ها و پروژه Google Cloud خود بازیابی کنید.

حساب و برنامه چک را هدف قرار دهید

هنگامی که چک ها را در پلتفرم CI/CD خود اجرا می کنید، باید نتایج را به حساب چک و برنامه ای که به آن حساب چک متصل کرده اید اختصاص دهید. برای انجام این کار، به شناسه حساب چک و شناسه برنامه نیاز دارید.

برای شناسه حساب خود، از صفحه تنظیمات حساب خود دیدن کنید.

برای شناسه برنامه خود، از صفحه تنظیمات برنامه خود دیدن کنید.

احراز هویت

هنگام استفاده از چک ها در تنظیمات اتوماسیون، مانند CI/CD، باید از حساب سرویس استفاده شود. برای اطلاعات بیشتر در مورد نحوه ایجاد و پیکربندی یک حساب سرویس، به تأیید اعتبار CLI مراجعه کنید.

اگر از یکی از افزونه های Checks CI/CD استفاده می کنید، برای نحوه ارائه اعتبارنامه به مستندات افزونه مراجعه کنید.

اگر از Checks CLI در سیستم CI/CD خود استفاده می کنید، توصیه می شود از متغیرهای محیطی CI برای پیکربندی کلید JSON خود استفاده کنید. به عنوان مثال:

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

چک ها را برای اجرا در خط لوله CI/CD پیکربندی کنید

چک از رویکردهای زیر پشتیبانی می کند:

  • افزونه‌های CI/CD را بررسی می‌کند : Checks افزونه‌های از پیش ساخته شده را برای چندین پلتفرم CI/CD، از جمله GitHub و fastlane ارائه می‌کند. برای اطلاعات بیشتر به ناوبری جانبی مراجعه کنید.
  • Checks CLI : تیم‌هایی با گردش‌های کاری پیچیده‌تر یا با استفاده از یک سیستم ساخت بدون افزونه از پیش ساخته شده Checks، می‌توانند از Checks CLI در خط لوله CI/CD خود استفاده کنند. برای جزئیات به راه‌اندازی با استفاده از Checks CLI و راه‌اندازی جهانی با استفاده از Checks CLI مراجعه کنید.
  • Checks API : برای تیم هایی با گردش کار بسیار سفارشی شده، Checks یک API REST قوی ارائه می دهد. از آن برای شروع اسکن، بازیابی گزارش ها و تطبیق تجربه با نیازهای منحصر به فرد خود استفاده کنید. اطلاعات بیشتر را در اسناد Checks API بیابید.

راه اندازی جهانی با استفاده از Checks CLI

اگر افزونه Checks برای پلتفرم CI/CD شما وجود ندارد، می توانید از Checks CLI استفاده کنید. Checks CLI را می توان مستقیماً توسط توسعه دهندگان در هر پلتفرم CI/CD که از مراحل گردش کار اجرای اسکریپت پشتیبانی می کند، اسکریپت کرد.

Checks CLI را می توان اسکریپت کرد:

  • کدهای خطای غیر صفر را فقط زمانی برگردانید که معیارهای خاصی برآورده شوند، به عنوان مثال، تنها در صورت یافتن مشکلات با اولویت بالا، با کد خطا خارج شوید. توجه داشته باشید که CLI هرگز کد خطا را بر نمی گرداند. توسعه دهنده باید کدهای خطا را به صورت دستی در مرحله اسکریپت برگرداند.
  • برای انعطاف‌پذیری بیشتر، تمام داده‌های آن را به JSON ارسال کنید.

در اینجا مثالی از استفاده از CLI در اقدامات GitHub در هر commit به جای Checks CI/CD GitHub Action آورده شده است. ما همچنین خروجی را تغییر می دهیم تا زمانی که 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);
                }

بازخورد

آیا یک گردش کار CI/CD دارید که مایلید به این راهنما اضافه شود؟ به ما در checks-support@google.com اطلاع دهید.