Skip to content

GitLab CI yerine GitHub Actions: her itişte APK, etiketle imzalı sürüm - #1

Merged
aripdcem merged 1 commit into
mainfrom
claude/compass-review-cicd-z0zirl
Aug 24, 2026
Merged

GitLab CI yerine GitHub Actions: her itişte APK, etiketle imzalı sürüm#1
aripdcem merged 1 commit into
mainfrom
claude/compass-review-cicd-z0zirl

Conversation

@aripdcem

@aripdcem aripdcem commented Aug 24, 2026

Copy link
Copy Markdown
Owner

GitLab yapılandırması yalnızca test koşuyordu; APK'yı her seferinde elle derlemek gerekiyordu. .gitlab-ci.yml silindi, yerine iki iş akışı geldi:

İş akışı Tetik Üretir
ci.yml her itiş, her PR, elle testler + lint + debug APK (Actions → Artifacts)
release.yml v* etiketi testler + lint + imzalı release APK + GitHub sürümü

İş akışı mantığı YAML'a gömülmedi, .github/scripts/ altında duruyor: bozulduğunda koşuyu tetikleyip beklemeden yerelde denenebiliyor. Üç betik de yerelde koşturulup sınandı.

Kararlar

  • SDK sürümü iş akışında yazmıyor. GitLab'da imaj etiketi (android-sdk:35) elle sabitlenmişti ve compileSdk yükselince onunla birlikte güncellenmesi gerekiyordu; unutulunca derleme sebepsiz kırılıyordu. android-sdk.sh sürümü doğrudan app/build.gradle.kts'den okuyor — tek doğru kaynak orası.
  • APK'nın adı sürümü ve commit'i taşıyor (compass-4.2-33-debug-1a2b3c4.apk). İndirilen dosya app-debug.apk diye durunca hangi sürüm olduğu ancak kurup Ayarlar'a bakınca anlaşılıyordu. İmzasız release APK'sı da bunu adında söylüyor: kurulamayacağını indirmeden önce görmek gerekiyor.
  • İmzalama CI'da ortam değişkeninden okunuyor (COMPASS_KEYSTORE_*). keystore.properties yolu yerelde aynen duruyor, ama .properties biçiminde ters bölü kaçış karakteridir: içinde ters bölü geçen bir parola dosyaya yazılınca sessizce başka bir parolaya dönüşüyor ve imzalama "parola yanlış" diyerek kırılıyor. Yan kazanç: storeFile satırı eksik bir keystore.properties artık çökmek yerine imzasız derlemeye düşüyor.
  • Etiket ile versionName yayından önce karşılaştırılıyor (check-tag.sh). Ayrı düştüklerinde ortaya v4.3 diye yayımlanmış ama içinde 4.2 yazan bir APK çıkıyor ve bu ancak telefona kurulunca fark ediliyor.

Ayrıca

  • Ayarlar → Hakkında'daki kaynak bağlantısı gitlab.com/aripd/compass'tan github.com/aripdcem/compass'a çevrildi — dokunan kişi artık güncellenmeyen depoya düşüyordu.
  • README'ye CI rozeti ve yeni 15. bölüm eklendi: APK'yı indirme, sürüm yayımlama ve imzalama secret'larının (KEYSTORE_BASE64, KEYSTORE_PASSWORD, KEY_ALIAS, KEY_PASSWORD) kurulumu.

Doğrulama

YAML geçerliliği, üç kabuk betiğinin uçtan uca davranışı ve build.gradle.kts imzalama bloğu (dört senaryo: yapılandırma yok / ortam değişkeni / keystore.properties / eksik dosya) yerelde sınandı. Android SDK bu geliştirme ortamında erişime kapalı olduğundan assembleDebug burada koşmadı — bu PR'ın kendi CI koşusu ilk uçtan uca kanıt.

🤖 Generated with Claude Code

https://claude.ai/code/session_0186AndLaVEQTyw4n6sK2zBh

GitLab yapılandırması yalnızca test koşuyordu; APK'yı her seferinde elle
derlemek gerekiyordu. Yerine iki iş akışı geldi:

- ci.yml      her itişte ve her PR'da testler, lint ve debug APK. APK koşunun
              çıktısına asılıyor, Actions sekmesinden indirilip kuruluyor.
- release.yml `v` ile başlayan etiket itildiğinde imzalı release APK üretip
              GitHub sürümü açıyor, SHA-256 özetiyle birlikte.

İş akışı mantığı YAML'a gömülmedi, .github/scripts/ altında duruyor: bozulduğunda
koşuyu tetikleyip beklemeden yerelde denenebiliyor. Üçü de burada koşturulup
sınandı.

Üç karar açıklama istiyor.

**SDK sürümü iş akışında yazmıyor.** GitLab'da imaj etiketi (android-sdk:35) elle
sabitlenmişti ve compileSdk yükselince onunla birlikte güncellenmesi gerekiyordu;
unutulunca derleme sebepsiz kırılıyordu. android-sdk.sh sürümü doğrudan
app/build.gradle.kts'den okuyor — tek doğru kaynak orası.

**APK'nın adı sürümü ve commit'i taşıyor.** İndirilen dosya app-debug.apk diye
durunca hangi sürüm olduğu ancak kurup Ayarlar'a bakınca anlaşılıyordu. Artık
compass-4.2-33-debug-1a2b3c4.apk. İmzasız release APK'sı da adında bunu söylüyor:
kurulamayacağını indirmeden önce görmek gerekiyor.

**İmzalama CI'da ortam değişkeninden okunuyor.** keystore.properties yolu duruyor
ve yerelde değişmedi, ama .properties biçiminde ters bölü kaçış karakteridir:
içinde ters bölü geçen bir parola dosyaya yazılınca sessizce başka bir parolaya
dönüşüyor ve imzalama "parola yanlış" diyerek kırılıyor. Ortam değişkeninde böyle
bir yorumlama yok. Yan kazanç: storeFile satırı eksik bir keystore.properties
artık çökmek yerine imzasız derlemeye düşüyor.

Etiket ile versionName'in tuttuğu yayından önce sınanıyor. İkisi ayrı düşerse
ortaya v4.3 diye yayımlanmış ama içinde 4.2 yazan bir APK çıkıyor ve bu ancak
telefona kurulunca fark ediliyor.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0186AndLaVEQTyw4n6sK2zBh
@aripdcem
aripdcem merged commit 3cdc876 into main Aug 24, 2026
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants