Configurare la CI/CD per le Capacitor app può essere complesso e richiede molto tempo. Ecco cosa dovete sapere:
Consigliato per Nuove Costruzioni: Utilizzare Capgo Build
Ora raccomandiamo di utilizzare Capgo Build con il Capgo CLI per le costruzioni native Capacitor. Questa guida Fastlane è mantenuta per i team che mantengono pipeline di azioni esistenti GitHub, ma nuove costruzioni Android dovrebbero utilizzare il Capgo CLI in modo da non dover mantenere Fastlane, esegutore Gradle, chiavi e file keystore, e script di caricamento.
Requisiti
Prima di iniziare, avrete bisogno di configurare:
- Un account GitHub con accesso amministrativo
- La tua app già pubblicata su Google Play Store con firma corretta
- Chiave di firma Android e file keystore
- Progetto di Google Cloud Console con API di Google Play Store abilitato
- Account di servizio con le adeguate autorizzazioni
- Capacità di comprendere i flussi di lavoro di GitHub
- Conoscenza della configurazione di Fastlane
- Tempo per mantenere e debuggare il pipeline
Capgo Build per CI/CD da Capgo
Evita di mantenere Fastlane, Gradle runner, keystore e upload-script. Capgo Build Esegue costruzioni native Android firmate direttamente dal tuo pipeline CI/CD esistente:
- Funziona con il tuo pipelineTriggera Capgo Build da GitHub Actions, GitLab CI, Jenkins o script locali dopo la costruzione web e
npx cap sync. - Firma da segreti CIMantieni le chiavi Android, gli alias delle chiavi, le password e il JSON del servizio account di Play Console nei tuoi segreti CI.
- No mantenimento del runner nativo: Capgo Build fornisce ambienti di costruzione Android mantenuti, quindi non devi gestire SDK immagini, problemi di cache Gradle o tratte Fastlane.
- Articoli e sottoscrizione: Scarica gli artefatti firmati per la QA o sottoscrivi i rilasci attraverso il Capgo CLI.
Prenotazioni
- I piani Capgo iniziano a $12/mese
- Includono aggiornamenti OTA e circa 15 costruzioni native al mese
- I minuti di costruzione aggiuntivi sono fatturati per minuto attraverso crediti
Configura Capgo Build in CI/CD
Guida di configurazione manuale
Ecco cosa devi fare:
GitHub Actions Prenotazioni

GitHub Azioni offre minuti gratuiti in base al tipo del tuo repository:
- Repository pubblici: 2.000 minuti/mese
- Repository privati: 2.000 minuti/mese (esecutori Linux)
Per i progetti privati, i costi sono di circa $0,008/minuto. Un build tipico dura 3-5 minuti.
Passaggi di configurazione manuali
- Creare Keystore Android
- Configura account servizio Google Play
- Configura Fastlane
- Configura GitHub segreti
- Creare GitHub workflow di Azioni
1. Creare Keystore Android
Prima di poter firmare e pubblicare il tuo app Android, devi creare un file keystore.
Genera Keystore con keytool
Eseguisci questo comando nel tuo terminale:
keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
Ti verrà chiesto:
- Password del keystore: Scegli una password forte (avrai bisogno di questa come
KEYSTORE_STORE_PASSWORD) - Password della chiave: Scegli una password forte (avrai bisogno di questa come
KEYSTORE_KEY_PASSWORD) - Nome, organizzazione, ecc.: Inserisci i tuoi dati
Note importanti
-
Salva questi valori in modo sicuro:
- Posizione del file keystore (ad esempio,
my-release-key.keystore) - Alias della chiave (ad esempio,
my-key-alias) - avrai bisogno di questo comeKEYSTORE_KEY_ALIAS - Password del keystore - avrai bisogno di questo come
KEYSTORE_STORE_PASSWORD - Password della chiave - avrai bisogno di questo come
KEYSTORE_KEY_PASSWORD
- Posizione del file keystore (ad esempio,
-
Backup il file keystore: Se lo perdi, non potrai aggiornare il tuo app pubblicato
-
Ricordalo segreto: Non commettere mai il file keystore a git
-
Conservalo al sicuro: Conserva più backup in luoghi sicuri
Alternativa: Utilizza Esistente Keystore
If hai già pubblicato il tuo app, devi utilizzare la stessa chiave di sicurezza che hai utilizzato inizialmente. Puoi trovarla:
- In macchina locale dove hai costruito l'app per la prima volta
- In Console di Gioco → Impostazioni → Firma dell'app (se utilizzando la firma dell'app di Gioco di Google)
2. Configura il Servizio di Gioco di Google
Per consentire alle GitHub azioni di caricare le build su Gioco di Google, hai bisogno di un account di servizio.
Passo 2.1: Crea Progetto di Cloud di Google
- Vai a Console di Cloud di Google
- Crea un nuovo progetto o seleziona uno esistente
- Nota l'ID del progetto
Passo 2.2: Abilita il Fornitore di sviluppatore di Gioco di Google API
- In Console di Cloud di Google, vai a APIs & Servizi → Libreria
- Cerca per “Google Play Android Developer API”
- Clicca Abilita
Passo 2.3: Crea Account Servizio
- Vai a IAM & Amministrazione → Account Servizi
- Clicca Crea Account Servizio
- Inserisci dettagli:
- Nome:
github-actions-uploader - Descrizione: “Account di servizio per GitHub Azioni per caricare build”
- Nome:
- Clicca Crea e Continua
- Svuota l'assegnazione del ruolo per ora (clicca Continua, quindi Fatto)
Passo 2.4: Crea Chiave Account di Servizio
- Clicca sul nuovo account di servizio creato
- Vai a Chiavi tab
- Clicca Aggiungi chiave → Crea una nuova chiave
- Scegli formato JSON formato JSON
- Clicca Crea
- Un file JSON verrà scaricato - salva questo in modo sicuro, avrai bisogno di questo più tardi
Passo 2.5: Concedi accesso in Console Play
- Vai a Console di gioco di Google
- Vai a Configurazione → API accesso
- Sotto Conti di servizio, clicca Concedi accesso per il tuo account di servizio
- Sul Autorizzazioni dell'app tab, aggiungi il tuo app
- Sul Autorizzazioni dell'account tab, concedi queste autorizzazioni:
- Visualizza informazioni sull'app e scarica rapporti in bulk (solo lettura)
- Crea, modifica e elimina app bozza
- Pubblica app in piste di testing
- Pubblica app in produzione, escludi e altre piste
- Clicca Invita utente
- Clicca Invia invito
Passo 2.6: Verifica la chiave JSON
Il file JSON scaricato dovrebbe avere questo aspetto:
{
"type": "service_account",
"project_id": "your-project-id",
"private_key_id": "...",
"private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n",
"client_email": "github-actions-uploader@your-project-id.iam.gserviceaccount.com",
"client_id": "...",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "..."
}
Convertirai questo in base64 nel passo di configurazione dei segreti GitHub.
3. Imposta Fastlane
Crea una fastlane cartella al tuo root progetto e aggiungi un Fastfile con questo contenuto:
default_platform(:android)
KEYSTORE_KEY_ALIAS = ENV["KEYSTORE_KEY_ALIAS"]
KEYSTORE_KEY_PASSWORD = ENV["KEYSTORE_KEY_PASSWORD"]
KEYSTORE_STORE_PASSWORD = ENV["KEYSTORE_STORE_PASSWORD"]
platform :android do
desc "Deploy a beta version to the Google Play"
private_lane :verify_changelog_exists do |version_code: |
changelog_path = "android/metadata/en-US/changelogs/#{version_code}.txt"
UI.user_error!("Missing changelog file at #{changelog_path}") unless File.exist?(changelog_path)
UI.message("Changelog exists for version code #{version_code}")
end
private_lane :verify_upload_to_staging do |version_name: |
UI.message "Skipping staging verification step"
end
lane :beta do
keystore_path = "#{Dir.tmpdir}/build_keystore.keystore"
File.write(keystore_path, Base64.decode64(ENV['ANDROID_KEYSTORE_FILE']))
json_key_data = Base64.decode64(ENV['PLAY_CONFIG_JSON'])
# Get previous build number and increment
previous_build_number = google_play_track_version_codes(
package_name: ENV['DEVELOPER_PACKAGE_NAME'],
track: "internal",
json_key_data: json_key_data,
)[0]
current_build_number = previous_build_number + 1
sh("export NEW_BUILD_NUMBER=#{current_build_number}")
# Build the app
gradle(
task: "clean bundleRelease",
project_dir: 'android/',
print_command: false,
properties: {
"android.injected.signing.store.file" => "#{keystore_path}",
"android.injected.signing.store.password" => "#{KEYSTORE_STORE_PASSWORD}",
"android.injected.signing.key.alias" => "#{KEYSTORE_KEY_ALIAS}",
"android.injected.signing.key.password" => "#{KEYSTORE_KEY_PASSWORD}",
'versionCode' => current_build_number
})
# Upload to Play Store
upload_to_play_store(
package_name: ENV['DEVELOPER_PACKAGE_NAME'],
json_key_data: json_key_data,
track: 'internal',
release_status: 'completed',
skip_upload_metadata: true,
skip_upload_changelogs: true,
skip_upload_images: true,
skip_upload_screenshots: true,
)
end
end
4. Configura i segreti GitHub
Ora che hai il tuo keystore e il file JSON del servizio, devi memorizzarli in modo sicuro in GitHub.
Passo 4.1: Accesso ai segreti GitHub
- Vai al tuo repository su GitHub
- Clicca Impostazioni → Segreti e variabili → Azioni
- Clicca Crea un segreto di repository nuovo
Passaggio 4.2: Aggiungi i segreti richiesti
Aggiungi ogni segreto uno per uno:
PLAY_CONFIG_JSON
- Ecco il file JSON del servizio account che hai scaricato nel Passaggio 2.4
- Convertilo in base64:
Sul macOS/Linux:
base64 service_account_key.json | pbcopy
On Windows (PowerShell):
[Convert]::ToBase64String([IO.File]::ReadAllBytes("service_account_key.json")) | Set-Clipboard
- Crea un nuovo segreto denominato
PLAY_CONFIG_JSONe incolla la stringa base64
ANDROID_KEYSTORE_FILE
- Converti il tuo keystore in base64:
On macOS/Linux:
base64 my-release-key.keystore | pbcopy
On Windows (PowerShell):
[Convert]::ToBase64String([IO.File]::ReadAllBytes("my-release-key.keystore")) | Set-Clipboard
- Crea un nuovo segreto denominato
ANDROID_KEYSTORE_FILEe incolla la stringa base64
KEYSTORE_KEY_ALIAS
Crea un nuovo segreto con l'alias della chiave che hai utilizzato quando hai generato il keystore (ad esempio my-key-alias)
KEYSTORE_KEY_PASSWORD
Crea un nuovo segreto con la chiave password che hai impostato quando hai generato la chiave di archiviazione
__CAPGO_KEEP_0__
Crea un nuovo segreto con la password della chiave di archiviazione che hai impostato quando hai generato la chiave di archiviazione
__CAPGO_KEEP_1__
Crea un nuovo segreto con il nome del pacchetto della tua app (ad esempio com.example.app)
Puoi trovare il nome del pacchetto della tua app android/app/build.gradle sotto applicationId
Passaggio 4.3: Verifica Tutti i Segreti
Assicurati di avere configurati questi 6 segreti:
- ✅ PLAY_CONFIG_JSON
- ✅ ANDROID_KEYSTORE_FILE
- ✅ __CAPGO_KEEP_2__
- ✅ Password della chiave del keystore
- ✅ Password del repository del keystore
- ✅ Nome del pacchetto dello sviluppatore
5. Crea GitHub Flusso di lavoro di Actions
Crea .github/workflows/build-upload-android.yml:
name: Build and Deploy Android App
on:
push:
tags:
- '*'
jobs:
build_android:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 24
cache: npm
- name: Install dependencies
run: npm ci
- name: Cache Gradle
uses: actions/cache@v5
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Build app
run: npm run build
- name: Sync Capacitor
run: npx cap sync
- name: Setup Java
uses: actions/setup-node@v5
with:
distribution: 'zulu'
java-version: '17'
- name: Setup Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.0'
bundler-cache: true
- name: Run Fastlane
uses: maierj/fastlane-action@v3.1.0
env:
PLAY_CONFIG_JSON: ${{ secrets.PLAY_CONFIG_JSON }}
ANDROID_KEYSTORE_FILE: ${{ secrets.ANDROID_KEYSTORE_FILE }}
DEVELOPER_PACKAGE_NAME: ${{ secrets.DEVELOPER_PACKAGE_NAME }}
KEYSTORE_KEY_ALIAS: ${{ secrets.KEYSTORE_KEY_ALIAS }}
KEYSTORE_KEY_PASSWORD: ${{ secrets.KEYSTORE_KEY_PASSWORD }}
KEYSTORE_STORE_PASSWORD: ${{ secrets.KEYSTORE_STORE_PASSWORD }}
with:
lane: android beta
- name: Upload artifact
uses: actions/upload-artifact@v2
with:
name: android-release
path: ./android/app/build/outputs/bundle/release/app-release.aab
retention-days: 10
Come funziona
- Crea un tag Git per attivare il flusso di lavoro
- GitHub Actions costruisce il tuo app
- Fastlane lo carica sul canale beta di Google Play
- La tua app viene aggiornata automaticamente
Tempo di costruzione e costi
- Tempo di costruzione: 3-5 minuti
- Costo per repository privati: ~$0.04 per build
- Gratuito per progetti open-source
Articoli correlati
Guida alla configurazione CI/CD
- Build automatico di iOS con Capacitor e GitHub Actions - Configurazione completa di CI/CD per iOS
- Build e rilascio automatico con GitHub Actions - Tutorial completo del pipeline CI/CD
- Gestione di Build Dev e Prod con GitHub Actions - Gestione degli ambienti
Alternative piattaforme CI/CD
- Build con GitLab CI - Alternativa a GitLab per Android
- Costruisci con CodeMagic - Guida di configurazione di CodeMagic
Aggiornamenti in tempo reale & Distribuzione
- Capgo Documentazione degli Aggiornamenti in Tempo Reale - Aggiungi aggiornamenti OTA al tuo app
- Integrazione CI/CD con Capgo - Integra gli aggiornamenti in tempo reale nel tuo pipeline
Risorse
Continua da Automatico Capacitor build Android con GitHub azioni
If you are using Automatic Capacitor Android build with GitHub actions per pianificare l'automazione CI/CD, connettilo con Capgo CI/CD per il flusso di lavoro del prodotto in Capgo CI/CD, Capgo Costruzioni native per il flusso di lavoro del prodotto in Capgo Costruzioni native, Capgo Integrazioni per il flusso di lavoro del prodotto in Capgo Integrazioni, Integrazione CI/CD per i dettagli di implementazione in Integrazione CI/CD, e GitHub Integrazione azioni For l'implementazione dettagliata in GitHub Azioni di integrazione.