宝珠レジストリには405以上の宝珠が登录されています。

惊くべきことですが,これらの圆球のほとんどは,皆さんのようなユーザー,CircleCIの素晴らしいユーザーコミュニティ,そしてCircleCIの新しいテクノロジーパートナープログラムに参加されている方々によって提供されています。ただし,CircleCIが公开している圆球も30个近くあります.CircleCI初のコミュニティ&パートナーエンジニアとして,私はここ数か月,できる限りユーザーが介入しなくても,これらの圆球をビルド,テスト,およびデプロイできるようにする持続可能な开発パイプラインを作り出す作业に取り组んできました。

すべてのOrbは異なるため,これは簡単な取り組みではありません。サードパーティツールやサービスをインストールして構成するorbもあります。さまざまなクラウドプロバイダーにデプロイしたり,外部環境でコードをテストしたりできるようにするorbもあります。また,一部のorbは,CircleCIプラットフォームをユーザーが簡単に利用できるようにするために使用される,既存のCircleCIの構成機能に対するシンタックスシュガー(糖衣構文)となっています。

これらのさまざまな种类の宝珠の开発をすべてサポートするためには,どのような継続的インテグレーションや継続的デプロイメントツールを利用したらよいでしょうか?さらに重要なことは,自分で宝珠を开発するときに,このようなツールをどのように利用するかということです。最终的には,谁かがプルリクエストを球リポジトリにマージするたびに,混帐拉とcircleci ORB发布を入力し,コンピュータの前で待っていることはなくなります。

このブログを読んでいらっしゃる方であれば,宝珠についてある程度の知识をすでに持っているのではないでしょうか?自分で,球を公开されていたり,CircleCIのプロジェクトで宝珠を使い始めていたりしている方もいらっしゃるでしょう.Orbsを初めて使用される方は,以前の宝珠关连のブログをご覧ください。サポートエンジニアの凯尔特赖恩が,初めてorbを書くための有用なヒントを紹介しています。彼はまた,CircleCIの懈怠球GitHubリンク)を作成した経験について公開しています(これは今のところ,CircleCIの中で最も人気の高いOrbになっています)。さらに基本的な入門書をお探しの場合は,オーブの作成コンフィグの再利用に关するドキュメントが非常に役立ちます。

このブログでは,新しい宝珠のための,自动化された理想的なCI / CDプロセスな设定について说明します。私の次回のブログでは,Azure的CLI球とこの宝珠に组み込まれている自动化について详しく说明します。

それでは,新しい宝珠のための自动化のプロセスを说明していきます。このような自动化プロセスにはどのような最终目标があるのでしょうか?

バージョン管理

CircleCIは,DevOps的エコシステムの中心として重要な役割を果たしており,中核となる概念は,「基础设施即代码(コードとしてのインフラストラクチャ)」です.Orbsはコードで示されるインフラストラクチャであり,他のソフトウェアと同じように,ビルド,テスト,デプロイする必要があります。そのためには,圆球をGIT中リポジトリに配置する必要があります。

现在,いくつかの宝珠は非常に小规模なものです。自分で作成するは球,ある単纯な操作を1つだけ実行するかもしれません。大规模な圆球もあります(CircleCIが公开しているAWS ECS球)を参照してください)。小规模な圆球,特に外部サービスの恩恵をあまり受けない宝珠の场合,いくつかのタイプの圆球monorepoのほうが适切となる场合があります。実际には,复数の圆球があるリポジトリであっても,テストが可能な圆球は多くあります.CircleCIが公开した最初のいくつかの圆球が保存されているcircleci-球体リポジトリで,このアプローチが実际に使用されています。

時間が経つにつれて,たとえば,サードパーティのデプロイを中心とするOrbなど,複雑な多くのOrbでは,詳細なアプローチが必要であることがわかってきました。このような場合には,orbとリポジトリの関係を対1にすると理想的です。CI / CDのロジックはすべてconfig.ymlファイル内に置く必要があります。単一のコンフィグファイルでいくつもの大规模な圆球のインテグレーションテストと自动公开を管理しようとすると,すぐに手に负えなくなります。

多层テスト

网络サイトやアプリケーションをテストする际には,开発パイプラインにおける复数の箇所において,様々な方法でテストをすると思います.Orbsについても同じことを行う必要があります。

宝珠のエコシステム内で,このような阶层の异なるテストとはどんなものがあるでしょうか.Orbs SDKのプレビューにある文章の言い换えになりますが,以下のような検证やテストが考えられます。

  1. スキーマ検证:これはたった一つのCLIコマンドで検证できます.Orbが正しい形式のYAMLで记述され,奥布スキーマに准拠しているかどうかを确认します。
  2. ランタイムテスト::この段階では,個別のテストを設定し,CircleCIビルド内で実行する必要があります。
  3. 统合テスト::これは,非常に高度な圆球や,サードパーティサービスのための安定したインターフェイスとして公开されることを前提としたような圆球でのみ必要となるテストです.Orbの统合テストを行うには,カスタムビルドと独自の外部テスト环境が必要です。

拡张テストという阶层も考えられます.Orbsは本质的にはCircleCIコンフィグを抽象化した断片です。つまり,特定の圆球が期待するCircleCIのコンフィグを生成するかどうかをテストできます。実际には,拡张テストの正确性を维持するためには,球のソース自体だけでなく,対応する拡张されたCircleCIコンフィグも管理し,これらの2つの整合性を保つことが求められるため,费用対效果があまり高くないことがわかりました。しかし,一部の宝珠では,この方法が役立つ场合があります.CircleCIのソリューションディレクターである埃迪·韦布は,CircleCI讨论の宝珠テストのディスカッションで,このアプローチについて分かりやすく说明しています(具体例もあります)。

自动デプロイメント

私にとって,自動デプロイメントは,orbの開発プロセスを自動化する最終的な目標です。このような自動化を実現できなければ,拡張し続けるCircleCIのorbを維持することはできなかったでしょう。

初めて圆球を作成される场合には,最初は,単纯に手动で公开したくなるかもしれません。结局のところ,ここでは,いくつかの単纯なシェルコマンドについて话しているだけですが,この诱惑に屈しないようにしてください.CircleCIは,プルリクエストを自分の球リポジトリにマージした后,更新された圆球がレジストリにどうして表示されないのかという圆球作成者からの质问に何度も回答していますが,これは,圆球のテストおよび公开プロセスにおけるデプロイメントを実际に自动化していないことによります。信じてください。経験上,最初から自动化しておくと,后で戻って自动化するよりもずっとスムーズに事を运ぶことができることが分かっています。

球体の自动デプロイメントにはいくつかの微妙な违いがあります.CircleCI CLIは,本番稼働用の球体を公开する3つの异なる方法を提供しています。

  1. circleci ORB发布を使用して,orb.ymlファイルをレジストリに直接公开できます。
  2. circleci ORB发布推广を使用して,以前に公开された圆球の开発版を,セマンティックバージョニングされた制品版の圆球に升格できます。
  3. 既存の制品版宝珠のバージョンをインクリメントできます。たとえば,foo/bar@1.1.0からfoo/bar@1.1.1(パッチリリース)または1.2.0(マイナーリリース),または2.0.0(メジャーリリース)にインクリメントできます。

私の経験上,実際には,開発版orbを製品版orbに昇格することが,最も有用な自動デプロイメントの仕組みであることが分かりました。この方法では,すべてのコミットで,Orbソースコードの基本的なテスト/検証を行うことができ,その後で,条件付きでOrbの開発バージョンを公開し,開発バージョンのOrbで広範なテストを実行し,最後に,公開したばかりの開発バージョンのOrbを製品版に昇格できます。

まとめ

では,この方法でビルド,テスト,デプロイされたの球config.ymlどのようになるでしょうか?最初にお伝えします。それほど复雑ではありません!CircleCIでは,宝珠开発の自动化の基本的な仕组みのほとんどを,「球」として抽象化しました。机能の例を确认するには,先月CircleCIが公开したAzure的CLI球をご覧ください。小规模である程度简易な球ですので,简単に理解できるようになっていますが,サードパーティのクラウドプロバイダーである微软Azureとの统合であるため,复雑な部分もあります。この宝珠のconfig.ymlには2つの異なるワークフローが含まれています。1つは基本的な検証と開発バージョンの公開であり,もう1つは,統合/使用テストと本番環境へのOrbのデプロイメント(可能な場合)です。次のフォローアップブログでは,天青CLI球とこれら2つのワークフローを全体的に说明していきます。

CircleCIのオープンソースエコシステムは拡大し続けていますが,宝珠はその中心であり,皆様が参加することでより多くの宝珠が利用できるようになります.GitHubまたは到位桶の自分の宝珠をcircleci,球体トピックタグでタグ付けすると,他のユーザーがより簡単に見つけることができるようになります。質問やご意見については,CircleCI讨论の宝珠のセクションに投稿してください。


その他の资料: