Bu depo, GitHub Actions kullanarak Flutter projeleri için sürekli entegrasyon ve sürekli dağıtım (CI/CD) uygulamanın bir örneği olarak hizmet verir. Bu süreç, otomatik testler, kod analizi, derleme süreçleri, Firebase App Distribution aracılığıyla dağıtım ve testerlara Microsoft Teams bildirimleri içerir. 🚀
- Flutter SDK
- GitHub Actions
- Firebase CLI
- Fastlane (Opsiyonel)
-
Test Etme: Projede bulunan testleri çalıştırır.
-
Kod Analizi: Dart kodunu analiz eder.
-
Build: Uygulamayı derler ve bir APK dosyası oluşturur.
-
Firebase App Distribution: Firebase App Distribution aracılığıyla APK veya App Bundle'ı dağıtır.
-
Teams Bildirim: Microsoft Teams üzerinden testerlara yeni sürüm hakkında bildirim gönderir.
Firebase App Distribution ve Teams bildirimlerini kullanmak için aşağıdaki adımları takip edin:
-
android/json-secret.json
adında bir dosya oluşturun ve Firebase CLI token, app ID, Teams URL gibi gizli bilgileri içerdiğinden emin olun. -
GitHub deposu ayarlarından "Secrets" (Gizli Değerler) sekmesine gidin ve bu dosyanın içeriğini bu sekmede tanımlayın:
FIREBASE_SECRET
: Firebase CLI tokenAPP_ID
: Firebase proje ID'siTEAMS_URL
: Microsoft Teams Webhook URL'si
Eğer manuel olarak sürümü dağıtmak istiyorsanız, aşağıdaki komutları kullanabilirsiniz:
- Fastlane kullanarak Firebase dağıtımı:
cd android/fastlane deploy
- Makefile kullanarak Firebase dağıtımı:
make deploy-android
Umarım bu örnek, Flutter projelerinizde CI/CD sürecini geliştirmenize yardımcı olur! 🚀
This repository serves as an example for implementing continuous integration and continuous deployment (CI/CD) for Flutter projects using GitHub Actions. The workflow includes automated testing, code analysis, build processes, Firebase App Distribution for distribution, and Microsoft Teams notifications for testers.
- Flutter SDK
- GitHub Actions
- Firebase CLI
- Fastlane (Optional)
-
Testing: Runs tests present in the project.
-
Code Analysis: Analyzes Dart code.
-
Build: Compiles the application and generates an APK file.
-
Firebase App Distribution: Distributes the APK or App Bundle via Firebase App Distribution.
-
Teams Notification: Sends a notification about the new version to testers via Microsoft Teams.
To use Firebase App Distribution and Teams notifications, follow these steps:
-
Create a file named
android/json-secret.json
containing sensitive information such as Firebase CLI token, app ID, Teams URL. -
Go to the repository settings on GitHub, navigate to the "Secrets" tab, and define the content of this file in the secrets:
FIREBASE_SECRET
: Firebase CLI tokenAPP_ID
: Firebase project IDTEAMS_URL
: Microsoft Teams webhook URL
If you want to distribute the version manually, you can use the following commands:
- Firebase deployment using Fastlane:
fastlane deploy
- Firebase deployment using Makefile:
make deploy-android
Hope this example helps you improve the CI/CD process for your Flutter projects! 🚀
![Screenshot 2023-12-21 at 14 00 04](https://private-user-images.githubusercontent.com/58737803/292182554-272e8a3a-c81d-477c-bc15-9e7482a4b349.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzg5MjY1ODcsIm5iZiI6MTczODkyNjI4NywicGF0aCI6Ii81ODczNzgwMy8yOTIxODI1NTQtMjcyZThhM2EtYzgxZC00NzdjLWJjMTUtOWU3NDgyYTRiMzQ5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA3VDExMDQ0N1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTM3MmQwMzNkZTRhYjkwZWM0NzY4YTc2NzE1MjcxZTZlNGE5MjNlM2M0YjQwMzMxZmEwNjg4ZDkyZjMyOGVmODEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.BbXrGCQEideKma-fuF3tcrgB315GCPYcggByr55E9do)
![Screenshot 2023-12-21 at 14 00 31](https://private-user-images.githubusercontent.com/58737803/292182558-203bc678-ac5e-4848-a419-d726be95021d.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzg5MjY1ODcsIm5iZiI6MTczODkyNjI4NywicGF0aCI6Ii81ODczNzgwMy8yOTIxODI1NTgtMjAzYmM2NzgtYWM1ZS00ODQ4LWE0MTktZDcyNmJlOTUwMjFkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA3VDExMDQ0N1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPThjODMxOTZlOTFlMTUwNTBkYmUzZWVhOGQ2ZDUxYzU5MTAyNDFhYjlhMDU4ODY2MjUzNDJjNzRhZmM4MjU0ODAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.-FOup7D-VlOegAkrYwh6xrEVH7A97DD6JISy_0XZ5jQ)
![Screenshot 2023-12-21 at 14 00 25](https://private-user-images.githubusercontent.com/58737803/292182561-c28f7abd-ed63-437e-950e-cd41c0ce9e8d.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzg5MjY1ODcsIm5iZiI6MTczODkyNjI4NywicGF0aCI6Ii81ODczNzgwMy8yOTIxODI1NjEtYzI4ZjdhYmQtZWQ2My00MzdlLTk1MGUtY2Q0MWMwY2U5ZThkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA3VDExMDQ0N1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTJiMGQzZWE1MmJkYzBkNTM3NWJhNzVkNmY3OGI1ZTUwNGEyZDI0NzZlMzgwYzczZDBjMDI1MDg2OWZlZmI2MTMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.sIh6HV4VCKijaDLkcR7pSMjAXnpMqZSQqnoKpKwhHeU)
![Screenshot 2023-12-21 at 13 58 18](https://private-user-images.githubusercontent.com/58737803/292182564-2b752811-c13a-406e-9459-7dbaf6ea5c3d.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzg5MjY1ODcsIm5iZiI6MTczODkyNjI4NywicGF0aCI6Ii81ODczNzgwMy8yOTIxODI1NjQtMmI3NTI4MTEtYzEzYS00MDZlLTk0NTktN2RiYWY2ZWE1YzNkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA3VDExMDQ0N1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTBmNmZkMmYwZDhmNTk0YTA4NjdiYjlhYWQ5ZTIwZmE0NDhkNGI5MmY5N2NiNTk4OTg1MjAwNGVjODc1MmFhYmQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.zRyCH-13IbZ4a2EtCksDYWDxZBw1uec8Pir2zeGicYM)
Bu görseller, CI/CD sürecinin adımlarını göstermektedir. 🚀