前に、私たちのチームは、バックエンドとフロントエンドを含む、ターンキーiOSおよびAndroidアプリケーションを開発していると書きました。 これにより、スケーラブルな配布プロセスとプロジェクト管理の確立された標準が緊急に必要になります。
しかし、それが何とかしてできる唯一の製品がある場合と、毎月特別な要件を持つ新しいチームが登場する場合、CI / CDをすばやく入手する必要がある場合です。
おそらく、このまさに統合をセットアップするための指示があり、ベストプラクティス、スクリプト、インフラストラクチャの推奨事項、およびその他のライフハックについて説明することになると思われます。
私もそう思いました。
開始する
しかし、彼は突然、これらすべてが産業規模での単なるコピーアンドペーストであり、正しい決定は指示ではなくツールにあることに気づきました。 プロジェクトを独自に分析、構成、構築するツール。 最終的に、継続的な統合は、人生を簡素化し、ボリュームスクリプトに同じ法外なものを書くための巨大なチュートリアルを作成する必要がある新しい問題を追加しないように設計されました。 そしてまたサポート。
このため、 TravisやCircleなどの言語の能力、インフラストラクチャの厳密性とアクセス性については非常に満足していますが、それでも十分ではありません。 これらはすべて、ガイドの研究に責任を負い、製品が開発されているプラットフォームの機能を深く理解する必要があります。 iOSまたはAndroidアプリケーションを作成できるだけでは不十分です。SDKの機能と内部のデバイスを知る必要があります。
すべての開発者がプラットフォームを認識し、コマンドラインからアセンブリを構成できるのは普通のことと言えますが、私は同意しません。 開発者は、開発、製品の作成、SDKメソッド、適切なライブラリを理解し、それらを適用できる必要があります。 しかし、配信システム、スクリプト言語、インフラストラクチャを理解する方法はありません。 これは以前と同じですが、単純なサイトを作成するには、少しのシステム管理者である必要がありました。 少し誇張しますが、理解できたと思います。
リサーチ
車輪を再発明しないために、私はインターネットに深く飛び込む必要がありました。そこでは、既存のサービスを見つけてその強さをテストしたいと考えました。 誰もが知っているように、1つの頭にアイデアが来ることはありません。
私はいくつかのテストプロジェクトをとることに決めました。それは見つかったすべてのサービスの実験に与えます。
成功の基準は、ソースコードの取得からCrashlyticsでの展開まで、継続的な統合のフルサイクルを実施する能力です。
まず、iOSに焦点を当てます。私は個人的に著者であり、この分野でより専門知識を持っています。2番目に、リンゴの作成は常に証明書やその他の障害により不可解な設定で有名です。
テストのサンプルとして、各記事で取り上げた古き良きプロジェクトを見てみましょう。 それでは、行きましょう。
Googleの20ページ目まで長いダイビングの後、説明に合った3つの製品を見つけました。 そのうちの2つは原則として開始されなかったため、検討することさえせず、 3つ目は機能しましたが、どういうわけかXcodeの適切なバージョンを判断できず、CarthageとCocoapod(未開始-依存関係)を説明できませんでした。どんな種類のキャッシュも聞いたことがありません。 そして、最終的に、予想どおりにアセンブリを反転しました。
ああ、これらの物語。 偽りの慎みがなければ、私は今よりうまくやれることに気づきました。 なぜなら、野心的な言葉遣いに加えて、競合他社はどこで、どのように修正し、一般的にはより良く、より速くするかということを明確に理解していたからです。
仕事
アイデアに触発され、アイデアをサポートした同僚とともに、プロトタイプを開発しました。 「虎の目」の下で一晩中どのように働いたのかという壮大な物語は省略します。
主な目標は、すべての人の継続的インテグレーションの構成を完全に自動化することでした。そのため、マネージャーであっても、リポジトリへのリンクのみを持ち、技術的な知識がまったくなくても、会社で通常のビジネスプロセスを構築できました。 iOS向けに開発していない人に、作成したものを使用して継続的インテグレーションをセットアップするように依頼する実験も行いました。 彼がすべてをしてくれてとてもうれしかったです。 私たちが正しい方向に進んでいるという信号でした。
すべてがどうなるかについての短いデモビデオ。
Travisと比較すると、リソースが同じ場合、依存関係の最適化と個々のワーカーを仮想化して不足しているソフトウェアを提供する必要がないため、プロジェクトは4〜5倍速く組み立てられます。
言うのを忘れました。 プロジェクトはBuildbenという名前を決定しました。 最初、彼らは私たちの素晴らしいオフィス猫に敬意を表してベンを望んでいました。そして、ビッグベンとビルドベンの間にしゃれが生まれました。
しかし、気が散りました。 あなたはおそらくすでにすべてを理解していました。クラスはそれ自体ですべてを行い、猫はクールで、私たちは素晴らしいです。 彼らが言うように-何が私たちを驚かせるでしょうか?
しかし、何で。 私たちはあなたが好きになるいくつかの特別な機能を特別に用意しました:
- クラウドでのCarthageフレームワークのキャッシュ。 一度まとめられたものが再び構築されることはありません。
誰かが遭遇していなければ、githubの多くのフレームワークがコンパイルされたバイナリを提供しないという問題があります。 そして、提供されている場合は、特定のSwift専用です。 Swiftのバージョンごとに独自のライブラリリポジトリを作成しました。これは作業中に定期的に自動的に更新されます。
- iOS開発者キャビネットの自己設定用ユーティリティ。 アプリケーションをデプロイするときは、証明書、プロファイル、バンドルID、資格、icloudなどを常に考慮する必要があります。 これらすべてを自分で行い、自動化しました。
- Crashlyticsアプリケーションを準備するためのツール。 Crashlyticsを使用したすべての人は、新しいアプリケーションを作成するとき、または少なくともバンドルIDを変更するときは、少なくとも1回実行して作成する必要があることを知っています。 また、新しいバンドルIDでアプリケーションを確認する必要がある場合はどうでしょうか? それとも、SDKで問題なくkrashlishikで配布の楽しみを使いたいですか?
したがって、すべてが正常に機能するようになりました。 管理パネルでCrashlyticsを選択するだけで十分です。
Fabricのユーザー名またはパスワードを入力するか、アカウントを持っていない場合は、タンバリンと踊らずに自分で登録できるようにする予定です。
- 非同期アセンブリ。 何かを同時に行うことができる場合、それを行います。 たとえば、Cocoapods&Carthageは異なるマシンに並行してインストールされ、その後一緒にマージされます。 その結果、強力なリソースを必要としないタスクは対応するマイクロプロセスによって実行されるため、コンパイルにすべての力を注ぐことができます。
次のステップ
ある時点で、私たちは自分のボイラーで調理している時間が長すぎることに気付きました。数人の知人と友人を除いて、このサービスを聞いた人はほとんどいませんでした。 はい、そして資金はゴムではありません、Amazonのクラウドはそれ自体に支払いません。
スタートアップの最高の伝統に投資家を探しに行くことが決定されました。 長い間探す必要はありませんでしたが、これは驚くべきことでした。興味を持って予約を入れました。
彼らは多くの質問をし、チームとしての経験、私たちが開発したプロジェクト
" -紳士、すべてが素晴らしく、プロジェクトは興味深い。しかし、一つだけあります。ユーザーが必要です。彼らがいなければ、プロジェクトが本当に人気があり、開発する価値があるという確実性はありません。会話を続けてください。 」
そして、新製品を愛し、最前線に立つ準備ができている技術者をどこで見つけることができますか? もちろんここハブに いくつかの書かれた記事の聴衆との私の小さな知り合いは、ここにいる人々は、批判するのが好きですが、合理的で好奇心itive盛であることを示しました。
私は売り手でもマーケターでもありません。愛について美しく話す方法はわかりませんが、ここまで読んでみれば、このトピックは興味深く思えたので、それを使っていただければ幸いです。
ベータテストのリクエストを残すことができる小さなランディングサイトがあります。大歓迎です。 各アプリケーションは目覚まし時計をトリガーし、すぐに実行して応答します。 しかし、残念ながら、私たちのリソースは現在非常に限られており、全員を招待することはできませんが、最大限に努力します。
重要なニュアンス
投稿の最後にFAQを追加します。これは、コメントでお知らせするたびに更新されます。
現在、セキュリティの問題を見つけることができます。 これは誰もが理解している特に重要な側面です。
また、あなた自身で展開し、妄想を忘れることができる箱入りバージョンの開発は私たちの最優先事項であり、その必要性を知っていると言いたい、そして複製したい。
おわりに
おそらくこれが私が伝えたかったことのすべてです。 質問に答え、アドバイスに耳を傾け、あらゆる側面をより詳細に聖別することを嬉しく思います。
ああ、ところで、これは私が話していたのと同じ猫です。
奇跡ですね。
そして伝統により、私は有用なリンクを共有したい:
- Crashlyticsは非常に便利で無料の配布システムです。 優れたチュートリアルとiOSおよびAndroid向けの明確なSDKが用意されているため、お勧めします。
- MattermostはSlackのような、自己ホスト型で無料のチームコミュニケーションのためのチャットです。 できるすべてのものと簡単に統合できます。 あなたがまだ電報でビジネスの問題を議論しているなら、ここにいます。
- Fastlaneは、継続的な統合のためのスイス製ナイフです。 自分で展開している場合、これは必須です。 確かに、Rubyのある程度の知識が必要です。
UPD1:おっと! 予期せぬことに、数十のアプリケーションと自信のあるバグレポートのリストを受け取りました。
来週の月曜日まで、新しい参加者の入場を強制停止しました。
私たちはすべての新しいユーザーに注意を払います。私たちと一緒にいてくれてありがとう。
よくある質問
質問:コードがどこにもリークしないことを確認できるのはなぜですか?
回答:まず第一に、これは私たちの主な主な責任です。 私たちはあなたのコードを読まず、外部の誰もそれにアクセスできません。すべてがプロジェクトごとに個別のサンドボックスに隠されています。 さらに、組み立て後にすぐに削除し、ログのみを残します。 これは機密保持契約に書かれており、サービスに登録することで自動的に署名されます。 つまり 機密保持契約では、アセンブリ後にソースコードを削除することを明記しています。
Q:さて、iTunes Connectへのアクセスはどうですか? 私たちのアプリケーションを壊さないことをどのように確認できますか?
回答:サービスを使用するか、独自のスクリプトを使用するかに関係なく、外部アクセス用に別のアカウントを使用することをお勧めします。 あなたは私たちの製品が行きたい国境を決めることができます。 私たちにとって、私たちは情報の安全性に関心を持つ人よりも多くいます。
質問:セキュリティを気にせずに自分で展開できるボックス版をリリースする予定はありますか?
回答:すぐに計画しています。 これは優先分野の1つです。