CI/CD için ön koşullar
Kontrolleri bir işlem hattında çalışacak şekilde yapılandırmak için Kontrol hesabınızdan ve Google Cloud projenizden temel yapılandırma girişlerini alın.
Target Checks hesabı ve uygulaması
CI/CD platformunuzda kontrolleri çalıştırdığınızda sonuçları bir Kontrol hesabı ve bu Kontrol hesabına bağladığınız bir uygulamaya atamanız gerekir. Bunu yapmak için Çekler hesap kimliği ve uygulama kimliğine ihtiyacınız olacak.
Hesap kimliğiniz için Hesap Ayarları sayfanızı ziyaret edin.
Uygulama kimliğiniz için Uygulama Ayarları sayfanızı ziyaret edin.
Kimlik doğrulama
CI/CD gibi bir otomasyon kurulumunda kontroller kullanılırken hizmet hesabı kullanılmalıdır. Hizmet hesabı oluşturma ve yapılandırma hakkında daha fazla bilgi için CLI'yı kimlik doğrulama başlıklı makaleyi inceleyin.
Checks CI/CD eklentilerinden birini kullanıyorsanız kimlik bilgilerinin nasıl sağlanacağıyla ilgili olarak eklentinin belgelerine bakın.
CI/CD sisteminizde Checks CLI'yı kullanıyorsanız JSON anahtarınızı yapılandırmak için CI ortam değişkenlerini kullanmanız önerilir. Örneğin:
CHECKS_CREDENTIALS=/my/path/to/serviceaccount.json
CI/CD ardışık düzeninde çalışacak şekilde kontrolleri yapılandırma
Kontroller aşağıdaki yaklaşımları destekler:
- Checks CI/CD eklentileri: Checks, GitHub ve fastlane dahil olmak üzere çeşitli CI/CD platformları için önceden oluşturulmuş eklentiler sunar. Daha fazla bilgi için yan gezinme bölümüne bakın.
- Checks KSA: Daha karmaşık iş akışlarına sahip veya Checks önceden oluşturulmuş eklentisi olmayan bir derleme sistemi kullanan ekipler, CI/CD ardışık düzenlerinde Checks KSA'yı kullanabilir. Ayrıntılar için Checks CLI'yı kullanarak kurulum ve Checks CLI'yı kullanarak evrensel kurulum başlıklı makaleleri inceleyin.
- Checks API: Checks, iş akışları son derece özelleştirilmiş olan ekipler için güçlü bir REST API sunar. Tarama başlatmak, rapor almak ve deneyimi benzersiz ihtiyaçlarınıza göre uyarlamak için kullanın. Daha fazla bilgiyi Checks API dokümanlarında bulabilirsiniz.
Checks CLI ile evrensel kurulum
CI/CD platformunuz için Checks eklentisi yoksa Checks CLI'yı kullanabilirsiniz. Checks KSA, geliştiriciler tarafından doğrudan komut dosyası yürütme iş akışı adımlarını destekleyen herhangi bir CI/CD platformuna komut dosyası olarak eklenebilir.
Checks CLI, aşağıdaki işlemleri yapacak şekilde komut dosyası oluşturulabilir:
- Yalnızca belirli ölçütler karşılandığında sıfır olmayan hata kodları döndürün. Örneğin, yalnızca yüksek öncelikli sorunlar bulunursa hata koduyla çıkın. CLI'nın hiçbir zaman hata kodu döndürmeyeceğini unutmayın. Geliştirici, hata kodlarını komut dosyası oluşturma adımında manuel olarak döndürmelidir.
- Daha fazla esneklik için tüm verilerini JSON biçiminde çıktı olarak verir.
Aşağıda, Checks CI/CD GitHub Action yerine her kayıtta GitHub Actions'da CLI kullanma örneği verilmiştir. Ayrıca, kontroller öncelikli sorunlar bulduğunda hata kodu oluşturmak için çıkışı da dönüştürüyoruz:
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);
}
Geri bildirim
Bu kılavuza eklenmesini istediğiniz bir CI/CD iş akışınız var mı? checks-support@google.com adresinden bize bildirin.