Wraz z rozwojem zespołu mobilnego i cotygodniowymi wydaniami niezbędne jest posiadanie niezawodnego procesu CI. Musimy mieć możliwość tworzenia i testowania naszych aplikacji oraz wdrażania ich w App Store i Google Play Store. Utrzymujemy również wewnętrzne wersje zapoznawcze, aby testować najnowsze funkcje.
Dowiedz się, jak wykorzystujemy ClickUp, Fastlane i GitHub Actions do automatyzacji ciągłej integracji (CI) i ciągłego dostarczania (CD).
Życie błędu 🐜
Zacznijmy od krótkiego omówienia naszego procesu zarządzania i naprawiania błędów.
- Zgłaszany jest błąd (lub prośba o dodanie funkcji) i tworzone jest zadanie ClickUp.
- Zadanie jest przypisywane programiście i ustalane w PR względem branchu stagingowego.
- CI przeprowadza wszystkie testy, tworzy aplikację, wdraża podgląd internetowy i przesyła Wszystko do zadania ClickUp.
- Nasz zespół ds. kontroli jakości weryfikuje poprawkę i jeśli jest ona prawidłowa, zadanie zostaje oznaczone jako zrobione.
- PR jest automatycznie scalany ze stagingiem.
- The staging branch is created and deployed to our internal TestFlight.
- W każdą środę tworzona jest branch wydania, która jest budowana i testowana.
- W piątki tworzymy wersję na GitHubie, a CI wdraża ją do App Store i Play Store.
Zadanie ClickUp zawiera wszystkie informacje dotyczące błędu. Używamy niestandardowych statusów, takich jak „W trakcie” lub „Przegląd kodu”, aby śledzić błąd. Cykl pracy CI automatycznie zmienia status. Pola niestandardowe zawierają dodatkowe informacje, takie jak osoba, która zgłosiła błąd, osoba, która nad nim pracuje, data wydania itp.
Cykl pracy PR 📜
Pierwsze dwa kroki opisane powyżej nie są tak naprawdę związane z CI, ale trzeci jest interesujący...
Cykl pracy naszego rozwoju działa dla każdego PR. Sprawdzamy linty, formatowanie i uruchamiamy wszystkie testy przed rozpoczęciem tworzenia artefaktów dla systemów Android i iOS.
Po powodzeniu kompilacji CI wyświetla komunikat w połączonych zadaniach. Inżynierowie ds. kontroli jakości mogą przejść do PR, pobrać artefakty kompilacji lub skorzystać z podglądu internetowego.

Automatyczna wiadomość CI opublikowana w połączonym zadaniu ClickUp po powodzeniu kompilacji.
Ustawienie Flutter na CI runner 🛠
Używamy dobrze znanego działania GitHub subosito/flutter-action, aby skonfigurować Flutter w CI. Domyślnie zainstaluje ono najnowszą stabilną wersję Flutter. Aby uniknąć zakłócenia cyklu pracy CI po wydaniu nowej wersji Flutter, należy ręcznie określić wersję.
Jeśli masz wiele cykli pracy, lepiej przechowywać wersję flutter w pliku. Używamy FLUTTER_VERSION w katalogu głównym repozytorium.
Innym prostym rozwiązaniem jest przechowywanie wersji Flutter jako tajemnicy GitHub i uzyskiwanie do niej dostępu za pomocą {{ secrets. FLUTER_VERSION }}.
Podgląd strony internetowej 🕸
Dzięki możliwości uruchamiania Fluttera w sieci możemy tworzyć w pełni funkcjonalne podglądy pull requestów. Za pomocą pakietu device_preview można dostosować rozmiar i ustawienia urządzenia.
Podgląd okazał się bardzo przydatny i jest wykorzystywany nie tylko przez nasz zespół ds. kontroli jakości. Projektanci i menedżerowie produktu również go lubią, ponieważ pozwala szybko wprowadzać nowe funkcje.

za pośrednictwem Flutter
Jak utworzyć podgląd strony internetowej 🐶
Aby rozpocząć, upewnij się, że Twoja aplikacja jest kompatybilna z Flutter web — nie wszystkie interfejsy API otrzymują wsparcie.
W naszej aplikacji musieliśmy na przykład wyłączyć powiadomienia push i gniazda sieciowe.
Ten przykładowy cykl pracy tworzy podgląd internetowy aplikacji Flutter i przesyła go do zasobnika S3. Używamy zmiennej środowiskowej ENABLE_DEVICE_PREVIEW, aby wyłączyć device_preview w środowisku produkcyjnym.
Krok Fix base href jest konieczny, ponieważ podgląd nie będzie znajdował się w katalogu głównym zasobnika.
Oraz kod umożliwiający spełnienie warunków dla włączenia funkcji device_preview.
Zmienne środowiskowe są potężnym narzędziem i pozwalają algorytmowi Fluttera na usuwanie kodu debugowania z kompilacji wydawniczych.
Fastlane 💨
Fastlane znacznie upraszcza tworzenie, podpisywanie i wdrażanie aplikacji Flutter. Zarządza naszymi certyfikatami, profilami provisioningowymi i innymi ustawieniami. Używamy sekretów GitHub do bezpiecznego przechowywania haseł i tokenów.
Przydatne działania Fastlane:
- fastlane match do tworzenia i przechowywania kluczy i profili iOS w repozytorium GitHub
- build_app do tworzenia aplikacji na iOS i Androida
- upload_to_testflight i dostarczanie kompilacji iOS do wdrożenia
- upload_to_play_store do wdrażania kompilacji dla systemu Android
Próbka kompilacji dla systemu iOS 🍏
Nie zapomnij o setup_ci, które uchroni Cię przed dziwnymi błędami 👾. Dowiedz się więcej o Fastlane dla aplikacji Flutter.
Podpisywanie aplikacji na Androida 🔒
Najłatwiejszym sposobem bezpiecznego podpisywania kompilacji wersji dla systemu Android jest przechowywanie tokenów jako sekretów GitHub i używanie zmiennych środowiskowych oraz klucza tymczasowego. jks utworzone przez CI:
Klucz jks przechowujemy jako ciąg znaków zakodowany w formacie base64 w GitHub Secrets i dekodujemy go w ramach cyklu pracy:
Cykl pracy wydawania i produkcji 🚀
Cykl pracy przedpremierowy działa dla branchów zaczynających się od release/v. Usuwa on wszystkie elementy debugowania i kod wewnętrzny, aby zapewnić, że testujemy ten sam kod, który zostanie wydany.
Dodatkowo, przedpremierowy cykl pracy publikuje posty na różnych kanałach Slack, aby powiadomić zespoły ds. kontroli jakości i marketingu o nowej wersji za pomocą przychodzących webhooków.
Po dokładnym przetestowaniu wszystkiego tworzymy wersję na GitHubie, która jest wyzwalaczem cyklu pracy produkcyjnej. Tworzy ona i podpisuje aplikację certyfikatami produkcyjnymi, a następnie wysyła ją do App Store.
Więcej sztuczek dotyczących CI 🦾
Jeśli używasz wyzwalacza push dla GitHub Actions, prawdopodobnie napotkasz problemy, jeśli w krótkim odstępie czasu nastąpi wiele pushów do tej samej branch. Uruchomi się więcej niż jedna instancja cyklu pracy, co spowoduje zużycie minut kompilacji lub inne problemy.
- Zalecamy użycie funkcji „Anuluj cykl pracy”, aby anulować wszystkie poprzednie instancje cyklu pracy.
- Jeśli szukasz łatwego i łatwego w utrzymaniu rozwiązania do generowania sekwencyjnych numerów kompilacji, wypróbuj generator numerów kompilacji. Możesz również użyć GITHUB_RUN_ID, ale nie można go dostosować do potrzeb.
- Sprawdź aplikację ClickUp GitHub, aby zobaczyć branchy, commits i status GitHub bezpośrednio w swoich zadaniach ClickUp. Skorzystaj z ClickUp Automations lub publicznego API ClickUp, aby uzyskać zaawansowaną automatyzację.
Podsumowanie 🍩
Budowanie CI to przyjemny proces. Łatwo jest zacząć i można go rozwijać w miarę postępów. Nasze CI opiera się na jednej z podstawowych wartości ClickUp: Dążenie do doskonałości. Nieustannie pracujemy nad ulepszeniami CI dla naszych zespołów ds. kontroli jakości i inżynierii.
Połączenie ClickUp, GitHub Actions i Fastlane jest bardzo wydajne i pozwala zbudować elastyczny i w pełni zautomatyzowany proces CI/CD w mniej niż godzinę. Wypróbuj!
W przygotowaniu mamy wiele ciekawych tematów, więc zaglądajcie na blog ClickUp Engineering! 🦄

