Điều kiện tiên quyết cho CI/CD
Để định cấu hình các quy trình kiểm tra để chạy trong một quy trình, hãy truy xuất các thông tin đầu vào cấu hình chính từ tài khoản Kiểm tra và dự án trên Google Cloud.
Kiểm tra tài khoản và ứng dụng Target
Khi chạy quy trình Kiểm tra trong nền tảng CI/CD, bạn sẽ cần chỉ định kết quả cho một tài khoản Kiểm tra và một ứng dụng mà bạn đã kết nối với tài khoản Kiểm tra đó. Để làm việc này, bạn sẽ cần có Mã tài khoản và Mã ứng dụng của Checks.
Để xem Mã tài khoản, hãy truy cập vào trang Cài đặt tài khoản.
Để biết Mã ứng dụng, hãy truy cập vào trang Cài đặt ứng dụng.
Xác thực
Bạn nên sử dụng tài khoản dịch vụ khi sử dụng Checks trong chế độ thiết lập tự động, chẳng hạn như CI/CD. Để biết thêm thông tin về cách tạo và định cấu hình tài khoản dịch vụ, hãy xem phần Xác thực CLI.
Nếu bạn đang sử dụng một trong các trình bổ trợ CI/CD Checks, hãy tham khảo tài liệu của trình bổ trợ để biết cách cung cấp thông tin đăng nhập.
Nếu sử dụng Checks CLI trong hệ thống CI/CD, bạn nên sử dụng các biến môi trường CI để định cấu hình khoá JSON. Ví dụ:
CHECKS_CREDENTIALS=/my/path/to/serviceaccount.json
Định cấu hình các bước kiểm tra để chạy trong quy trình CI/CD
Checks hỗ trợ các phương pháp sau:
- Kiểm tra các trình bổ trợ CI/CD: Checks cung cấp các trình bổ trợ được tạo sẵn cho một số nền tảng CI/CD, bao gồm cả GitHub và fastlane. Xem thanh điều hướng bên để biết thêm thông tin.
- Checks CLI: Những nhóm có quy trình làm việc phức tạp hơn hoặc sử dụng hệ thống bản dựng không có trình bổ trợ Checks dựng sẵn có thể sử dụng Checks CLI trong quy trình CI/CD. Hãy xem phần Thiết lập bằng Checks CLI và Thiết lập chung bằng Checks CLI để biết thông tin chi tiết.
- Checks API: Đối với những nhóm có quy trình công việc được tuỳ chỉnh cao, Checks cung cấp một API REST mạnh mẽ. Sử dụng công cụ này để bắt đầu quét, truy xuất báo cáo và điều chỉnh trải nghiệm cho phù hợp với các yêu cầu riêng của bạn. Bạn có thể tìm thêm thông tin trong tài liệu về Checks API.
Thiết lập chung bằng Checks CLI
Nếu không có trình bổ trợ Checks cho nền tảng CI/CD của bạn, bạn có thể sử dụng Checks CLI. Nhà phát triển có thể trực tiếp viết kịch bản cho Checks CLI vào bất kỳ nền tảng CI/CD nào hỗ trợ các bước quy trình thực thi kịch bản.
Bạn có thể viết kịch bản cho Checks CLI để:
- Chỉ trả về mã lỗi khác 0 khi đáp ứng một số tiêu chí nhất định, ví dụ: chỉ thoát bằng mã lỗi nếu tìm thấy các vấn đề có mức độ ưu tiên cao. Xin lưu ý rằng CLI sẽ không bao giờ trả về mã lỗi; nhà phát triển phải tự trả về mã lỗi theo cách thủ công trong bước tập lệnh.
- Xuất tất cả dữ liệu của nó vào JSON để có tính linh hoạt cao hơn.
Dưới đây là ví dụ về cách sử dụng CLI trong GitHub Actions trên mọi cam kết, thay vì GitHub Action Kiểm tra CI/CD. Chúng tôi cũng đang chuyển đổi đầu ra để tạo mã lỗi khi Checks tìm thấy các vấn đề ưu tiên:
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);
}
Phản hồi
Bạn có quy trình CI/CD nào muốn chúng tôi thêm vào hướng dẫn này không? Hãy cho chúng tôi biết theo địa chỉ checks-support@google.com.