CI/CD Pipeline'ları 🔄
Sürekli entegrasyon ve dağıtım (CI/CD), her kod değişikliğinde testlerin çalışmasını ve onaylanan kodun otomatik olarak mağazaya yüklenmesini sağlar.
1. Environment Variables (Secrets)
Pipeline'larınızın çalışması için aşağıdaki değişkenleri CI/CD sağlayıcınızın Secrets bölümüne eklemelisiniz.
| Secret Adı | Değer |
|---|---|
KEYSTORE_BASE64 |
my-upload-key.keystore dosyasının Base64 hali (base64 -i file.keystore) |
KEY_ALIAS |
Keystore alias adı |
KEYSTORE_PASSWORD |
Keystore şifresi |
KEY_PASSWORD |
Key şifresi |
PLAY_CONFIG_JSON |
Google Service Account JSON içeriği (Fastlane için) |
2. GitHub Actions Workflow
.github/workflows/android-deploy.yml:
name: Android Deploy
on:
push:
tags:
- "v*" # v1.0.0 gibi tag atıldığında çalışır
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup JDK 17
uses: actions/setup-java@v4
with:
distribution: "zulu"
java-version: "17"
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
- name: Install dependencies
run: npm ci
# 1. Keystore Dosyasını Oluştur
- name: Decode Keystore
run: |
echo "${{ secrets.KEYSTORE_BASE64 }}" | base64 -d > android/app/my-upload-key.keystore
# 2. Fastlane Kurulumu
- name: Setup Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: "3.0"
bundler-cache: true
working-directory: "android"
# 3. Google Play JSON Key Oluştur
- name: Create Google Play JSON
run: |
echo '${{ secrets.PLAY_CONFIG_JSON }}' > android/fastlane/api-key.json
# 4. Fastlane ile Deploy
- name: Deploy to Play Store Internal
run: |
cd android
bundle exec fastlane internal
env:
MYAPP_UPLOAD_STORE_FILE: "my-upload-key.keystore"
MYAPP_UPLOAD_STORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
MYAPP_UPLOAD_KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
MYAPP_UPLOAD_KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
3. GitLab CI/CD
.gitlab-ci.yml:
image: reactnativecommunity/react-native-android:latest
stages:
- deploy
deploy_internal:
stage: deploy
only:
- tags
before_script:
- npm ci
# Keystore Decode
- echo $KEYSTORE_BASE64 | base64 -d > android/app/my-upload-key.keystore
# Google Play JSON
- echo $PLAY_CONFIG_JSON > android/fastlane/api-key.json
script:
- cd android
- bundle install
- bundle exec fastlane internal
variables:
MYAPP_UPLOAD_STORE_FILE: "my-upload-key.keystore"
# Diğer değişkenler GitLab CI/CD Variables sekmesinden gelir
[!WARNING] Güvenlik Uyarısı: Loglarda şifrelerin görünmediğinden emin olun. GitHub Actions ve GitLab CI, secret olarak tanımlanan değişkenleri otomatik olarak maskeler (***), ancak
echoile yazdırmamaya dikkat edin.