Sürekli entegrasyon (CI) ve sürekli dağıtım (CD), geliştirme sürecimizi otomatikleştirmeye ve hızlandırmaya başlamanın ilk adımlarıdır. Bu şekilde, kodumuzun dağıtılmadan önce her zaman doğrulandığından, test edildiğinden ve kalite standartlarımıza uyduğundan eminiz.
Şu anda, tüm bunları otomatikleştirmemize yardımcı olabilecek birçok araç var. En popüler olanlardan biri Jenkins, GitLab, Travis CI, CircleCI veya Fastlane'dir. Ama şimdi ne mutlu bize açık kaynağın sevgilisi Github, GitHub Actions ile oyuna girdi.
Github'da, projelerimize büyük güçler katmak için çeşitli Uygulamalar ve Eylemler içeren bir pazar yeri var ve en iyi yanı, bunların basit yapılandırmalarla kolayca birleştirilip ayrılabilmeleridir. Bu öğeler, projemiz için birkaç önemli görevi otomatikleştiren uzantılar veya eklentiler olarak çalışır ve ayrıca açık kaynaklıdır ve birkaç geliştirici tarafından geliştirilmiştir. Kurulumumuz için, depomuzu kontrol etmek için Checkout , Java JDK'yı yapılandırmak için setup-java ve son olarak APK'mızı Firebase'e göndermek için Firebase App Distribution eylemlerini kullanacağız .
Hadi ama.
İlk önce, otomatikleştirmek istediğiniz android projesinin deposundaki "Eylemler" sekmesine gidin, ardından Github editörü aracılığıyla kendi konfigürasyonumuzu oluşturmak için "kendinize bir iş akışı kurun" bağlantısına gideceğiz, sonlandırdıktan sonra hatırlayalım. tüm iş akışlarının bir dosyasını kaydetmeniz gerekir, ancak isterseniz bunu kişisel kod düzenleyicinizde manuel olarak da yapabilirsiniz, bunun için projenizin kökünde ".github" adında ve içinde bir klasör oluşturmamız yeterlidir. "workflows" adında başka bir klasör oluşturur ve tüm iş akışı dosyalarımızı buna ekleyeceğiz.
Git Özellik Dalına dayalı bir iş akışı uygulamak için bir kurulum oluşturma ihtiyacına bağlı olarak, temel olarak 2 iş akışı oluşturacağız, Master veya sürüm şubesi için yeni bir çekme isteği olduğunda başlayacak olan "Pull Requests CI", olup olmadığını kontrol eder. testler başarılı, derlemeyi çalıştırıyor ve geliştirilen yeni bir özelliğin veya hatanın işlevsel testleri için Github Artifacts'te saklanacak bir APK ve Master veya sürüm dalında bir güncelleme olduğunda çalışacak "Master Release CI", aynı kontrolleri yapıyor, ancak bu sefer sürüm APK'sını Firebase App Distribution'a gönderiyor.
Not: Bu gönderideki iş akışlarınız, İşler ve Adımlar için herhangi bir ad kullanmaktan çekinmeyin, kullanılanlar yalnızca mevcut ihtiyacıma dayalı önerilerdir.
Daha sonra Pull Requests CI oluşturarak başlayacağız, önce bu iş akışını hangi durumda çalıştıracağımızı yapılandıracağız, bu durumda "master" veya "release .." dalları için oluşturulan tüm çekme isteklerinde.
name: Pull Requests CI
on:
pull_request:
branches:
- 'master'
- 'release*'
Şimdi yürütülecek İşleri yapılandıracağız. Her İşin birkaç Adımı olabilir ve her sonuca ulaşmak için neye ihtiyacımız olduğunu bu Adımlarda yapılandıracağız.
Yani, testler geçmezse, başka bir şey çalıştırmanıza gerek olmadığını varsayarsak. Konfigüre edeceğimiz ilk iş test işi olacaktır. Bu İş'te temel olarak bir Ubuntu ortamına ihtiyacımız var ve önkoşul olarak JDK 1.8'i yapılandırıyoruz, bu nedenle bu İş için "JDK 1.8'i ayarla" ve "Birim testleri" ve "çalıştırma" olarak tanımladığımız bu iki Adıma sahibiz. ortam "Ubuntu-en son". İlk İşimizin bu şekilde olması:
# A workflow is composed of one or more Jobs that can be executed sequentially or in parallel
jobs:
# This Workflow contains two Jobs called "test" and "build-and-deploy"
test:
name: Run Unit Tests
# The type of runner the job will run on
runs-on: ubuntu-latest
# Steps represent the sequence of tasks using shell runners that will be executed as part of the Job
steps:
- uses: actions/checkout@v1
- name: set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Unit tests
run: bash ./gradlew test --stacktrace
Şimdi ana İşimizi "build-and-generate-apk" yapılandıracağız, bu İş'te "JDK 1.8'i kur", "NDK'yı Yükle", "Debug Oluştur" ve "Github Artifact'e APK Yükle" Adımlarını yapılandıracağız. İndirilmeden önce Özelliği veya Hatayı test etmek için bir KG, PO veya kendi başınıza APK'yı kullanıma sunacağız. İşimizin şöyle görünmesi:
build-and-generate-apk:
# The type of runner the job will run on
runs-on: ubuntu-latest
# Steps represent the sequence of tasks using shell runners that will be executed as part of the Job
steps:
- uses: actions/checkout@v1
# Step to Configure the JDK
- name: set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
# Step to install the NDK
- name: Install NDK
run: echo "y" | sudo ${ANDROID_HOME}/tools/bin/sdkmanager --install "ndk;20.0.5594570"
# Step to Build the Project and generate the APK
- name: Build Debug
run: ./gradlew assembleDebug
# Step to save the APK as Artifacts
- name: Upload APK on Build Artifacts
uses: actions/upload-artifact@v1
with:
name: app
path: app/build/outputs/apk/debug/app-debug.apk
Bitti, şimdi her Çekme İsteği oluşturduğunuzda, İşlem Hattı bu İş Akışı ile başlar.
Ve sonunda, bir özelliğin veya hata düzeltmenin işlevsel bir testini yapmak için oluşturulmuş ve kullanıma hazır bir test apk'mız var.
İşte bu iş akışı için son dosyanın bağlantısı:
İlk geliştirme sürecimiz olan Pull Request'i ele alacak ilk iş akışımızı hazır hale getirdik. Şimdi, ana şubemizde bir güncelleme meydana geldiğinde başlayacak olan "Master Release CI" yi yapılandıracağız, bu durumda "master" veya baş harfleri "release" olan başka bir şube.
name: Master Release CI
on:
push:
branches:
- 'master'
- 'release*'
İşler ve Adımlar'ın yapılandırma bölümündeki bu iş akışında, yalnızca yapı içinde oluşturulan yapıyı Firebase Distribuition'a yükleyeceğimiz "Yapıtı Firebase App Distribution'a yükle" Adımını eklemek farklı olacaktır ve bunun için o Firebase ile bazı konfigürasyonlar yapmanız gerekiyor, eğer Android projenizde Firebase'i henüz yapılandırmadıysanız, Resmi Dokümantasyon Bağlantısındaki talimatları izleyin .
Uygulamanız yapılandırıldığında, firebase konsolunda projemize gireceğiz ve "Uygulama Dağıtımı" oturumuna erişeceğiz, orada Android uygulamamızı ekleyeceğiz ve şimdi bir apk gönderip istediğimiz testçilere ve gruplara dağıtmaya hazır olacağız. . Bununla artık apk'lerinizi manuel olarak yükleyebilir ve gruplara kolayca dağıtabilirsiniz, ayrıca Resmi Dokümantasyon talimatlarını izleyerek FIREBASE CLI aracılığıyla herhangi bir apk'yi yerel olarak yüklemek de mümkündür .
Bu prosedürü Github Eylemleri aracılığıyla otomatik olarak ve güvenilir bir ardışık düzende gerçekleştirmek için önceden bazı kimlik bilgileri oluşturmamız gerekir. "FIREBASE APP ID" ve "FIREBASE TOKEN".
Firebase Uygulama Kimliği, Projeye Genel Bakış -> Önceden Yapılandırılmış Android Uygulamasının Ayarlarını Seç -> Ve "Uygulamalarınız" altında, Uygulama Kimliğinin karmasını kopyalarız. Ör.:"1:1234567890:android: 0a1b2c3d4e5f67890"
Firebase Simgesini satın almak için makinenizde bazı yerel eylemleri gerçekleştirmek üzere Firebase CLI'yi kullanmanız gerekir, henüz yapılandırmadıysanız, nasıl yükleyeceğinizi aşağıdaki Resmi Belge Bağlantısında görün .
Firebase CLI yüklendiğinde, şu komutu kullanarak onu Firebase hesabımızı kullanacak şekilde yapılandıracağız:
firebase login:ci
Bu komut, tarayıcıda yeni bir google kimlik doğrulama penceresi açacaktır (otomatik olarak açılmazsa, komut satırında görebileceğiniz bir bağlantı olacaktır), hesabınızla başarılı bir şekilde kimlik doğrulaması yaptıktan sonra "✔" mesajını göreceksiniz. Başarılı! Bir CI sunucusunda oturum açmak için bu belirteci kullanın: "ve hemen altında" Firebase Simgemiz " olan ve github eylemleri iş akışı dosyamızda kullanılması gereken bir karma göreceksiniz.
Firebase Uygulama Kimliği ve Firebase Simgesi kimlik bilgileri olduğundan, onu doğrudan kodda açıkta bırakmamamız önemlidir, bu nedenle onu projenin "Sırları" olarak yapılandıracağız ve böylece onları dinamik ve gerçekten karmaşık bırakacağız.
Bir projenin "Sırlarını" yapılandırmak için deponuzun Ayarlar bölümüne gidin ve bir "Sırlar" sekmesi olacaktır. Ardından, "Yeni bir sır ekle"ye gidin ve ihtiyacımız olan ikisini, FIREBASE_APP_ID ve FIREBASE_TOKEN'i önceki adımlarda elde ettiğimiz ilgili değerlerle ekleyin.
Şimdi ihtiyaç duyduğumuz ve projede yapılandırdığımız kimlik bilgileriyle iş akışı yapılandırma dosyamıza geri dönelim. İçinde şimdi apk'yi oluşturmak ve oluşturmak için gerekli adımları içeren tek İşimizi ekleyeceğiz ve Apk'yi Firebase Dağıtımına otomatik olarak göndermeye hizmet edecek yeni Adımı ekleyeceğiz. Yani İşimiz tam olarak şöyle:
# A workflow is composed of one or more Jobs that can be executed sequentially or in parallel
jobs:
# This Workflow contains a single Job called "build-and-deploy"
build-and-deploy:
# The type of runner the job will run on
runs-on: ubuntu-latest
# Steps represent the sequence of tasks using the shell runners that will be run on as part of the Job
steps:
- uses: actions/checkout@v1
- name: set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
# Step to Install the NDK
- name: Install NDK
run: echo "y" | sudo ${ANDROID_HOME}/tools/bin/sdkmanager --install "ndk;20.0.5594570"
# Step to Build the Project and generate the APK
- name: build debug apk
run: ./gradlew assembleDebug
# Step to Submit the generated APK to Firebase App Distribution
- name: upload artifact to Firebase App Distribution
uses: wzieba/Firebase-Distribution-Github-Action@v1.2.1
with:
appId: ${{ secrets.FIREBASE_APP_ID }}
token: ${{ secrets.FIREBASE_TOKEN }}
groups: testers
file: app/build/outputs/apk/debug/app-debug.apk
İşte bu iş akışı için son dosyanın bağlantısı:
Ve hazır ! Artık sadece basit bir geliştirme akışını izleyerek tüm paydaşlara entegre, sürekli ve merkezi teslimat sağlamak için ihtiyacımız olan şeye sahibiz. Lütfen şüphelerinizi, önerilerinizi yorumlayın ve deneyiminizi paylaşın.
Bu makaledeki ayarları uyguladığım eski bir açık kaynak projesinin bağlantısını takip edin.
Sonraki adım:
- Anahtar deposuyla sürüm apk oluşturmak için yapılandırın
Bu iş akışları hala çok basit, ancak linterler, sonarqube, test raporları ve Firebase Test Lab ile aletli testler çalıştırma gibi çok önemli başka işler veya adımlar ekleyerek yeni gönderiler oluşturmayı planlıyorum.
Notlar:
- Apk'yi Eylemler aracılığıyla Firebase Distribuition'a otomatik olarak gönderseniz bile, yine de App Distribuition oturumunda Firebase konsoluna gitmeniz ve istediğiniz gruba dağıtımı yapmanız gerekir.
- Varsayılan olarak, sürüm notları son taahhüdün açıklamasıyla doldurulur, ancak dağıtımını gerçekleştirmeden önce değiştirmek mümkündür.
Referanslar:





