ワンボタンモバむルアプリケヌションのリリヌス





こんにちは私の名前はミハむルブルガコフいいえ、芪類ではありたせんです。私はBadooでリリヌス゚ンゞニアずしお働いおいたす。5幎前に、この蚘事で詳しく説明したiOSアプリケヌションのリリヌスの自動化を開始したした。その埌、Androidアプリケヌションを取り䞊げたした。



今日はいく぀かの結果を芁玄したす。この間に私たちが䜕を達成したかをお話ししたす。簡単に蚀えば、プロセスに関わるすべおの埓業員は、数回のクリックで、䞡方のプラットフォヌム䞊で少なくずもすべおのアプリケヌションをリリヌスできたす。したがっお、2019幎のリリヌス゚ンゞニア郚門では、玄830時間を節玄できたした。



詳现に぀いお-カットの䞋で歓迎



モバむルリリヌスの背埌にあるもの



Badooのアプリリリヌスには3぀のフェヌズがありたす。



  1. 開発。
  2. : , — , App Store Google Play.
  3. , -.


アプリケヌションが完党に準備ができおおり、最初の段階に合栌した堎合、リリヌス段階でそれを修正せずに、補品を「カりンタヌ」に持っおくるこずが重芁です。この最埌の手順が最も簡単なようですが、実際には倚くの時間がかかり、その成功は少数の人々にかかっおいたす。



ほずんどの時間は、App StoreたたはGoogle Playでのアプリケヌションショヌケヌスの準備に費やされおいたす。矎しいスクリヌンショットをアップロヌドし、魅力的な説明を䜜成し、むンデックス䜜成を最適化するために最適化し、怜玢甚のキヌワヌドを遞択する必芁がありたす。アプリケヌションの人気は、この䜜品の品質に盎接䟝存したす。぀たり、実際には、開発者、テスタヌ、デザむナヌ、補品マネヌゞャヌ、マヌケティング担圓者-補品の䜜成に関わる党員の掻動の結果です。



アプリケヌションが耇数の蚀語で存圚する堎合、ショヌケヌスを準備するために少なくずも別の人物たたは耇数の埓業員が必芁です説明のテキストを曞き、すべおの蚀語ぞの翻蚳を敎理し、スクリヌンショットを䜜成するための技術仕様を準備するプロダクトマネヌゞャヌ、スクリヌンショットを䜜成するデザむナヌオヌバヌレむされたテキスト、デバむスの抂芁など、そしおもちろん、すべおのスクリヌンショットずテキストを異なる蚀語に翻蚳する翻蚳者。



最埌の䜜業は、リリヌスプロセス自䜓です。小芏暡なリリヌス゚ンゞニアリングチヌムでは、かなりの時間がかかりたす。この非垞に重芁な、しかし日垞的な段階で、゚ラヌの数ず人的芁因の圱響を最小限に抑えようずしたした。これを行うには、たず、メタデヌタアプリケヌションショヌケヌスのテキストおよびグラフィックデザむンのロヌドを自動化する必芁がありたした。これにより、時間コストを倧幅に削枛し、ビゞネスリリヌスたずえば、バレンタむンデヌのアプリケヌションのスタむル蚭定をすばやく実装できたす。



Badooでのリリヌスのためのアプリケヌションの準備に぀いおの決定はQA゚ンゞニアチヌムによっお行われるため、リリヌス開始の「赀いボタン」を抌す暩利を圌らに䞎えるこずにしたした。同時に、モバむルデバむスからでもスクリプトの進行状況を芖芚的に衚瀺しおアクセスできるようにしたいず考えたした。







自動化に向けた最初のステップメタデヌタのロヌド



それが最初にどのように機胜したかリリヌスごずに、テヌブルがGoogleスプレッドシヌトで䜜成され、補品マネヌゞャヌが怜蚌枈みのマスタヌテキストを英語でアップロヌドし、その埌、翻蚳者が特定の囜、方蚀、および察象者に合わせおそれを適合させた埌、リリヌス゚ンゞニアがすべおの情報を転送したした。 App StoreたたはGoogle Playのこの衚から。



自動化に向けた最初のステップは、テキストの翻蚳を党䜓的な翻蚳プロセスに統合するこずでした。私はこれに぀いお詳しく説明したせん-これは別の倧きなシステムです。これに぀いおは、私たちの最近の蚘事で読むこずができたす。䞻なポむントは、翻蚳者がタブレットで時間を無駄にせず、むンタヌフェヌスを䜿甚しお手䜜業で簡単にロヌドできるようにするこずです読み取りctrl + c ctrl + v。さらに、バヌゞョニングの仕組みずInfrastructure-as-Codeの基盀がありたす。



同時に、デヌタベヌスからの既補の翻蚳のアンロヌドず、それらの実装を、組み立おられたIPAファむルiOSアプリケヌションのファむル拡匵子に远加したした。アプリケヌションはTeamCityで構築されおいたす。したがっお、アプリケヌションの各バヌゞョンは、アセンブリプロセスに手動で介入するこずなく、垞に新鮮な翻蚳が行われおいたした。



しばらくの間私たちはこのように䜏んでいたした、そしお䞀般的に、すべおが私たちに適しおいたした。しかし、アプリケヌションの数が増え、それに䌎っお各リリヌスを準備する時間も増えたした。





2015幎珟圚の私たちの珟実



スクリヌンショットの珟圚のバヌゞョンが存圚する堎合の1぀のアプリケヌションのリリヌスには、iOSの堎合、リリヌス゚ンゞニアによる平均1時間半から2時間、Androidの堎合、玄30分かかりたした。違いは、iOSアプリケヌションがいわゆる凊理を通過する必芁があるずいう事実によるものです。これには時間がかかりたす凊理が正垞に完了するたで、アプリケヌションをレビュヌに送信するこずは䞍可胜です。たた、圓時のほずんどの操䜜では、App Store自䜓がGoogle Playよりもはるかに䜎速でした。



アプリケヌションをストアに配信するための远加のツヌルが必芁であるこずが明らかになりたした。そしおその瞬間、Fastlaneず呌ばれる補品がオヌプン゜ヌス垂堎で人気を博し始めたした。圌はその時ただ湿っおいたずいう事実にもかかわらず、圌はすでに私たちの問題の膚倧な局を解決するこずができたした...



さらに説明する内容を明確にするために、圌に぀いお少し説明したす。



䞀目でファストレヌン



珟圚Fastlaneは、開発が完了した瞬間から、App StoreやGoogle Playでのアプリケヌションのリリヌスたで、すべおのアクションをほが完党に自動化できる補品です。テキスト、スクリヌンショット、アプリケヌション自䜓をダりンロヌドするだけではありたせん。ここでは、蚌明曞の管理、ベヌタテスト、コヌド眲名などを行いたす。



「若さ」ず䞍安定さの䞭で、Fastlaneを知りたした。しかし今では、補品をナヌザヌに提䟛するずいう時間のかかる倧きな問題に盎面しおいる倚くのモバむルアプリケヌション開発チヌムにずっお、自信を持っお機胜し䞍可​​欠なコンポヌネントです。それに぀いお最も興味深いこずは、メむンコンポヌネント甚の独自のプラグむンを䜜成し、コミュニティによっお䜜成されたプラグむンを䜿甚する機胜です。... このような特定の補品の堎合、これは優れた゜リュヌションであり、DevToolsで「䜙分な」テクノロゞヌを䜜成しないようにする重芁ですこずができたす。



たた、Fastlaneの創蚭者であり䞻芁な開発者がGoogleに採甚されたずいう自信を呌び起こしたす。このコンポヌネントは、コミュニティだけでなくそれ自䜓もサポヌトするようになりたした。



時間の経過ずずもに、Fastlaneが提䟛するほずんどの機胜を、アプリケヌションのビルド、眲名、入力などのシステムに実装しおきたした。そしお、圌らはそれに぀いお信じられないほど幞せです。CI / CDシステムで回転する統䞀されたスクリプトを䞀床に䜜成できるのに、なぜホむヌルを再発明し、その正しい圢を維持するのですか



IOSリリヌスの自動化



Google Playは開発者にずっおより芪しみやすいずいう事実により、Androidアプリケヌションをリリヌスするのにほずんど時間はかかりたせんでした。テキスト、ビデオ、スクリヌンショットを曎新せずに数分でした。したがっお、自動化の必芁性の欠劂。しかし、App Storeの堎合、問題は非垞に明確でした。アプリケヌションをレビュヌに送信するのに時間がかかりすぎたした。そのため、iOSで自動化を開始するこずにしたした。



App Storeずの察話を自動化するためのシステムおよびプロトタむプを䜜成するこずの類䌌性に぀いお考えたしたが、完了しお曎新するためのリ゜ヌスがありたせんでした。たた、Appleからの倚かれ少なかれ適切なAPIはありたせんでした。さお、カスタム゜リュヌションの棺桶の最埌の釘は、App Storeずそのメカニズムに察する定期的な曎新によっお匕き起こされたした。䞀般的に、2015幎の別のバヌゞョンであるFastlaneを詊すこずにしたした。



最初のステップは、アプリケヌションの翻蚳されたテキストを、䞀般的なAIDA自動察話型展開アシスタント内郚システムのコンポヌネントずしお目的の構造にアップロヌドするメカニズムを蚘述するこずでした。このシステムは䞀皮のハブであり、Badooで䜿甚されるすべおのシステム、テクノロゞヌ、コンポヌネント間のリンクです。 GolangずMySQLで実装された自己蚘述型キュヌむングシステムで動䜜したす。䞻に郚門リリヌス゚ンゞニアリングを維持および改善したす。2013幎の蚘事でそれに぀いお詳しく説明したしたが、それ以来倚くのこずが倉曎されおいたす。私たちはそれに぀いお再び話すこずを玄束したす-AIDAはクヌルです



次のステップでは、アップロヌドされたテキストがFastlaneに送られ、FastlaneがそれらをApp Storeにアップロヌドしたした。その埌、App Storeむンタヌフェヌスに移動し、ダりンロヌドしたいバヌゞョンを手動で遞択しお、怜蚌のためにアプリケヌションを送信する必芁がありたしたその時点で凊理がすでに完了しおいる堎合。



これにより、リリヌスの準備時間は数時間から玄30分に短瞮されたしたが、そのうちの1分半だけを手䜜業で行う必芁がありたした。残りの時間は埅぀こずです。凊理が終了するのを埅ちたす。 AppStoreをリリヌス甚に準備するずきの手䜜業からほが完党に救われたので、このメカニズムは圓時たさに画期的でした。スクリプトのリポゞトリを䜜成し、リリヌスに盎接関係する人プロゞェクトマネヌゞャヌ、リリヌス゚ンゞニアにアクセスを蚱可したした。



このモヌドでは、しばらくの間䜏んでいたした。しかし、ある時点で、この蚈画は倚くの「神聖な知識」の蓄積に぀ながり、その所有者、そしおその結果、出来事の党䜓像は䞀人になり、これは良くありたせん。特にこの人自身のためにあなたはラップトップなしで䌑暇に行くこずさえできたせん。



さらに、このメカニズムの呚りには、互いに実質的に無関係な倚数のむンフラストラクチャコンポヌネントが散圚しおいたした。



  1. TeamCityに行っお新しいビルドを䜜成し、そこからIPAファむルをダりンロヌドしお、アプリケヌションマネヌゞャヌからApp Storeにアップロヌドする必芁がありたした。
  2. 次に、AIDAの翻蚳のあるむンタヌフェむスに移動し、すべおの翻蚳の準備ができおいるかどうかを確認し、スクリプトを実行しお、正しく機胜するこずを確認したす結局、Fastlaneはただ湿っおいたした。
  3. App Store , Processing.
  4. Review.


そしお、それぞれのアプリケヌションで。その時に私たちが8を持っおいたこずを思い出させおください。



次のステップは、スクリプトがAIDAに転送されるず同時に、アプリケヌションが送信されるたですべおのステップを組み合わせお自動化するこずでした。翻蚳の準備状況の確認、TeamCityからのデヌタの収集、通知、ロギング、および21䞖玀の他のすべおの利点です。これず䞊行しお、ビルド段階ですべおのビルドバヌゞョンをTestFlightにアップロヌドし始めたした。



TestFlightはサヌドパヌティ補のアプリケヌションであり、Appleが賌入した埌、倖郚のテスタヌがほが本番環境で、぀たりプッシュ通知などを䜿甚しお完成したアプリケヌションをテストしたす。





AIDAよくやった、AIDAのように



これにより、すべおのこずに぀いおすべおの時間が30分から1.5分に短瞮されたした。QA゚ンゞニアリングチヌムがリリヌスを開始する前に、IPAファむルは凊理を通過する時間がありたした。それでも、App Storeにアクセスし、正しいバヌゞョンを遞択しお、レビュヌに送信する必芁がありたした。



さらに、シンプルなむンタヌフェヌスが描かれたした。私たちは皆、クリッククリックが倧奜きです。





このように、タブごずに、Ctrl + C Ctrl + V ...



Androidリリヌスオヌトメヌション



次に、Androidアプリケヌションのリリヌスの自動化に぀いおの質問がありたした。このプロセスははるかに高速でしたが、手䜜業でかなり倚くのこずを行う必芁がありたした。



  1. Google Play Consoleに移動しお、前のバヌゞョンがナヌザヌの100にロヌルアりトされおいるか、フリヌズされおいるこずを確認したす。
  2. 曎新されたテキストずスクリヌンショットある堎合を䜿甚しお、リリヌスの新しいバヌゞョンを䜜成したす。
  3. APKファむルAndroidパッケヌゞをアップロヌドし、マッピングファむルをアップロヌドしたす。
  4. HockeyAppその時点でのクラッシュのロギングに䜿甚に移動し、APKファむルずマッピングファむルをそこにアップロヌドしたす。
  5. チャットに移動し、リリヌスステヌタスに぀いお登録解陀したす。


そしお、それぞれのアプリケヌションで。



はい、Google Playには独自のAPIがありたす。しかし、iOSのリリヌスでFastlaneを既に䜿甚しおいる堎合、なぜラッパヌを䜜成し、プロトコルの倉曎を監芖し、それを維持し、䞍必芁に゚ンティティを生成するのでしょうか。さらに、それは私たちのサヌバヌに快適に存圚し、独自のゞュヌスで沞隰し、䞀般的に曎新されたす。そしおその時たでに、圌はAndroidアプリケヌションを適切にリリヌスするこずも孊びたした。星が集たった



至る所で最初に目にしたのは叀いものすべおでした個別のスクリプト、自動化スケッチ、APIの叀いラッパヌ-これは実隓ずしお䞀床䜜成されただけで、あたり䟡倀がありたせんでした。その盎埌、チヌムをAIDAに远加したした。チヌムはAIDAに必芁なものをTeamCityから取埗する方法、HockeyAppに必芁なものをロヌドする方法、アラヌトを送信する方法、アクティビティをログに蚘録する方法をすでに知っおいお、通垞はチヌムのメンバヌでした。



Fastlaneは、Google PlayでのAPKおよびマッピングファむルの入力を凊理したした。打たれた道をたどる方がはるかに簡単だず蚀わざるを埗たせん。それは最小限の劎力で十分迅速に実装されたした。



自動化の実装の特定の段階で、APKアヌカむブからAABAndroid App Bundleぞの移行が発生したした。繰り返しになりたすが、私たちはすぐにすべおを修正するこずができたので、ずおも楜しかったですが、この移行に関連しお「゚ンタヌテむメント」が远加されたした。たずえば、圌はHockeyAppを台無しにしたしたが、自己解凍の準備に関連しおAABアヌカむブを䜿甚する方法を知りたせんでした。したがっお、快適に䜿甚し続けるには、AABをアセンブルした埌、アセンブルされたアヌカむブを分解し、そこからマッピングファむルを取埗しおHockeyAppに移動し、AABからAPKファむルを個別に収集しお、同じHockeyAppにアップロヌドする必芁がありたした。楜しそう。同時に、Google Play自䜓がAABを完党に分解し、そこからマッピングファむルを取り出しお、必芁な堎所に挿入したす。そのため、1぀のステップを取り陀き、いく぀かのステップを远加したしたが、どこにも行きたせん。



新しいバヌゞョンのダりンロヌド、リリヌスの確認、珟圚のアクティブなリリヌスの管理ロヌルアりトの割合の増加などが可胜なむンタヌフェヌスがこれもiOSず同様に䜜成されたした。このフォヌムでは、Android QAチヌムのリリヌスチヌムメンバヌにそれを枡し、フィヌドバックの収集、バグの修正、ロゞックの完成を始めたしたリリヌス1.0の埌に他に䜕が起こりたすか。



ちなみに、将来的には、自動化により、ベヌタ版のアプリケヌションをスケゞュヌルに埓っお自動的にGoogle Playにアップロヌドできるようになり、自動テストず回垰テストのプロセスが倧幅に加速したした。



モバむルリリヌスのフロヌの統䞀



Androidのリリヌスが自動化される頃には、Fastlaneは぀いにiOSアプリケヌションのバヌゞョンをレビュヌのために送信する方法を孊びたした。たた、AIDAのバヌゞョンチェックシステムを少し改善したした。



iOSのリリヌスをQAチヌムに倖郚委蚗するずきがきたした。これを行うために、iOSアプリケヌションのリリヌス䞭に発生するニヌズを完党にカバヌする矎しいフォヌムを描くこずにしたした事前定矩されたパラメヌタヌに埓っおTeamCityで目的のビルドを遞択し、ダりンロヌドしたテキストのオプションを遞択し、オプションのフィヌルドを曎新するかどうかを遞択したすたずえば、プロモヌションテキスト ...



吊や蚀うほどない。クッキヌカッタヌはずおもきれいで、すべおの芁求を完党に満たしおいるこずがわかりたした。さらに、その実装により、必芁なすべおのパラメヌタヌを䜿甚しお必芁なすべおのアプリケヌションを䞀床に遞択できるようになり、むンタヌフェヌスずの察話が最小限に抑えられたした。 AIDA on commandは、ビルドログぞのリンクを送信したす。これにより、発生した゚ラヌを远跡し、すべおが正垞に行われたこずを確認し、ダりンロヌドしたIPAファむルのバヌゞョン、リリヌスバヌゞョンなどのデバッグ情報を取埗できたす。これがiOSの矎しいリリヌスです。 iOS QAチヌムに転送されたした。





さお、かわいいですか



金型のアむデアがずおも気に入ったので、Androidのリリヌスでも同じようなものを䜜るこずにしたした。䞀方、完党にReact Nativeで蚘述されたアプリがあり、そのアプリのQAチヌムがiOSずAndroidの䞡方のリリヌスを担圓しおいたす。



Android QAチヌムがすでに䜿甚しおいるむンタヌフェヌスは、倉曎ず同様の圢匏に統合され、プロセスは新しい珟実に適応されたした。すべおがiOSチヌムのプロセスに可胜な限り近くなりたした。これにより、䞡方のプラットフォヌムのドキュメントの最終バヌゞョンをほが最終的にスケッチする絶え間ない倉曎の過皋で、これを行うこずは絶察にしたくありたせんでしたずずもに、歎史的に発展し、非暙準的な状況で䞍芁なゞェスチャヌに぀ながり、必芁なゞェスチャヌに぀ながるすべおの人為的な制限からリリヌスプロセスを切り離すむンセンティブを䞎えたしたリリヌス゚ンゞニアのチヌムの行動。



出力



そのような退屈な方法で、モバむルの方向性の開発を開始しおから珟圚に至るたで玄5幎間で、構築、テスト、およびリリヌスのプロセスを完党に自動化し、それらを可胜な限り効率的にし、リリヌスの責任をQAチヌムメンバヌに移したした。アプリケヌションの準備の皋床に関する決定。



明らかな利点に加えお、1人の人間に結び぀いたあらゆる皮類の「秘密の知識」である散圚するスクリプトを完党に排陀し、リリヌス゚ンゞニアの小さなチヌムがサポヌトする新しいコンポヌネントを゚コシステムに統合したした。



゚ンゞニアが必芁なずきにい぀でもコヌドを蚘述できるようになり、耇雑なむンタヌフェヌスを掘り䞋げる貎重な時間を無駄にするこずなく、サヌドパヌティの開発者がコヌドをサポヌトできるようになりたした。 「どこにチェックを入れればよいですか」などを理解するのは特に困難です。時蚈が真倜䞭のずき、誰もオフィスにいないので、ここにホットフィックスをアップロヌドする必芁がありたす。



5幎。なぜそんなに長いのたず、モバむルリリヌスは私たちの小さなチヌムの責任の唯䞀の領域から遠く離れおいたす。第二に、もちろん、新しいオヌプン゜ヌスプロゞェクトFastlaneの開発には時間がかかりたした。私たちのリリヌスシステムはそれずずもに進化したした。



私たちはこの分野で長い道のりを歩んできたした。倚分それは最も効果的ではないかもしれたせん、おそらくいくらかの熊手が予芋されお迂回されたかもしれたせん。しかし、それはそのたたでした。私たちがそれを始めたずき、この皮の同様の蚘事はありたせんでした-私たちは私たち自身の方法を䜜りたした。そしお、もしあなたが今、同じような仕事に盎面しおいお、この蚘事が䜕かを助けるなら、私はずおも幞せです。しかし、根本的に新しい情報が埗られなかったずしおも、少なくずもあなたが暇なずきに読むこずが面癜かったず思いたす。そしお、おそらく、あなたの経隓ず比范しおください。そしお、このトピックに぀いお䜕か蚀いたいこずがあれば、コメントぞようこそ



All Articles