ตรวจสอบการตั้งค่า CI/CD

ข้อกำหนดเบื้องต้นสำหรับ CI/CD

หากต้องการกำหนดค่าการตรวจสอบให้ทำงานในไปป์ไลน์ ให้ดึงข้อมูลอินพุตการกำหนดค่าที่สำคัญจาก บัญชี Checks และโปรเจ็กต์ Google Cloud

บัญชีและแอปของ Target Checks

เมื่อเรียกใช้การตรวจสอบในแพลตฟอร์ม CI/CD คุณจะต้องกำหนดผลลัพธ์ ให้กับบัญชีการตรวจสอบและแอปที่คุณเชื่อมต่อกับบัญชีการตรวจสอบนั้น หากต้องการดำเนินการนี้ คุณจะต้องมีรหัสบัญชีและรหัสแอปของ Checks

สำหรับรหัสบัญชี ให้ไปที่หน้าการตั้งค่าบัญชี

สำหรับรหัสแอป ให้ไปที่หน้าการตั้งค่าแอป

การตรวจสอบสิทธิ์

ควรใช้บัญชีบริการเมื่อใช้การตรวจสอบในการตั้งค่าการทำงานอัตโนมัติ เช่น CI/CD ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีสร้างและกำหนดค่าบัญชีบริการได้ที่หัวข้อตรวจสอบสิทธิ์ CLI

หากใช้ปลั๊กอิน CI/CD ของ Checks โปรดดูเอกสารประกอบของปลั๊กอิน เพื่อดูวิธีระบุข้อมูลเข้าสู่ระบบ

หากใช้ Checks CLI ภายในระบบ CI/CD ขอแนะนำให้ใช้ตัวแปรสภาพแวดล้อม CI เพื่อกำหนดค่าคีย์ JSON เช่น

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

กำหนดค่าการตรวจสอบให้ทำงานในไปป์ไลน์ CI/CD

การตรวจสอบรองรับแนวทางต่อไปนี้

  • ปลั๊กอิน CI/CD ของ Checks: Checks มีปลั๊กอินที่สร้างไว้ล่วงหน้าสำหรับแพลตฟอร์ม CI/CD หลายแพลตฟอร์ม รวมถึง GitHub และ fastlane ดูข้อมูลเพิ่มเติมได้ที่การนำทางด้านข้าง
  • Checks CLI: ทีมที่มีเวิร์กโฟลว์ที่ซับซ้อนมากขึ้นหรือใช้ระบบบิลด์ ที่ไม่มีปลั๊กอิน Checks ที่สร้างไว้ล่วงหน้าสามารถใช้ Checks CLI ในไปป์ไลน์ CI/CD ได้ ดูรายละเอียดได้ที่การตั้งค่าโดยใช้ Checks CLI และการตั้งค่าส่วนกลางโดยใช้ Checks CLI
  • API การตรวจสอบ: สำหรับทีมที่มีเวิร์กโฟลว์ที่ปรับแต่งอย่างมาก การตรวจสอบมี REST API ที่มีประสิทธิภาพ ใช้เพื่อเริ่มการสแกน ดึงข้อมูลรายงาน และปรับแต่ง ประสบการณ์การใช้งานให้ตรงกับข้อกำหนดเฉพาะของคุณ ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบเกี่ยวกับ Checks API

การตั้งค่าแบบสากลโดยใช้ Checks CLI

หากไม่มีปลั๊กอิน Checks สำหรับแพลตฟอร์ม CI/CD คุณสามารถใช้ Checks CLI ได้ นักพัฒนาซอฟต์แวร์สามารถเขียนสคริปต์ CLI ของ Checks ลงในแพลตฟอร์ม CI/CD ใดก็ได้ที่รองรับขั้นตอนเวิร์กโฟลว์การเรียกใช้สคริปต์ได้โดยตรง

คุณเขียนสคริปต์ CLI ของการตรวจสอบเพื่อทำสิ่งต่อไปนี้ได้

  • ส่งรหัสข้อผิดพลาดที่ไม่ใช่ 0 เมื่อตรงตามเกณฑ์บางอย่างเท่านั้น เช่น ออกด้วยรหัสข้อผิดพลาดเฉพาะในกรณีที่พบปัญหาที่มีลำดับความสำคัญสูง โปรดทราบว่า CLI จะไม่แสดงรหัสข้อผิดพลาด นักพัฒนาซอฟต์แวร์ต้องแสดงรหัสข้อผิดพลาดด้วยตนเองในขั้นตอนการเขียนสคริปต์
  • ส่งออกข้อมูลทั้งหมดเป็น JSON เพื่อเพิ่มความยืดหยุ่น

ต่อไปนี้เป็นตัวอย่างการใช้ CLI ใน GitHub Actions ในทุกการคอมมิตแทน GitHub Action ของ CI/CD ของการตรวจสอบ นอกจากนี้ เรายังเปลี่ยนรูปแบบเอาต์พุตเพื่อสร้างรหัสข้อผิดพลาดเมื่อการตรวจสอบพบปัญหาที่มีลำดับความสำคัญสูงด้วย

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