travis-ci.orgとは何ですか?

画像



きっとtravis-ci.orgプロジェクトに関する誇大広告を誰もが聞いたでしょう 。 私は例外ではなく、前回のtoster.ruカンファレンスで発言した開発者の1人であるJosh Kalderimisが私の関心をさらに高めたことを考えると、最終的にtravis -ciが何で、何が食べられるのかを理解することにしました。 読んだ後、このサービスがルビー開発者をどのように助けることができるか、また彼らがどのように彼を助けることができるかを学びます。 座って、始めましょう...



継続的インテグレーション



結局のところ、「継続的統合」という用語はかなり古いものです。 2000年にMartin Fowlerによって紹介され、記事「Continuous Integration」およびロシア語では「continuous integration」のように聞こえます。 これは、開発中のプロジェクトをさまざまなランタイムで自動的かつ継続的にアセンブル/テストする開発プロセスの一部です。 この手法は、プロジェクトの統合におけるエラー/不整合を最も迅速に特定し、それに応じて後続のダウンタイムのコストを削減するために考案されました。



原則は非常に単純です:特定のサービスは別のマシンで実行されます。その責任は、プロジェクトのソースコード、そのアセンブリ、テスト、ロギング、および分析のための上記の操作の分析のためのデータを提供する機能を取得することです。



もちろん、無料のチーズはネズミ捕りでしか見つけることができず、利便性のために支払う必要があります。別のサーバーを選択して稼働状態に維持し、必要なソフトウェアシステムの可用性を確保し、ランタイム環境を構成し、データのバックアップコピーを作成します。 これにはすべて、多くの時間とリソースが必要です。 そして、この責任をサードパーティのサービスに委任することは非常に理にかなっています。 これがまさにtravis-ciとは-「オープンソースコミュニティの継続的な統合ホスティング」です。 彼を詳しく見てみましょう。



技術面



Travis-ciは多くのプログラミング言語をサポートしていますが、その中にはルビーもあります(元々はルビープロジェクト用に開発されていたので、驚くことではありません)。 サービスの使用開始は非常に簡単です。 いくつかの手順を実行するだけで、プロジェクトのガイドに詳細が記載されています 。 プロセス全体についてのみ説明します。



つなぐ



Travis-ciはgithub.comサービスと連携するため、最初に行う必要があるのは、プロジェクトのソースコードをそこに配置することです。 マイナーな技術設定(フックをリポジトリにインストールするなど)を除いて、プロセス全体は.travis.ymlファイルでさまざまなオプションを説明することになります。 プロジェクトが機能する言語、使用する必要のある言語のバージョン(すべてをすぐに実行できます)、環境(ruby用のそのようなファイルの例)で記述する必要があります。 このファイルは、githubリポジトリのルートに配置する必要があります。



設定が成功した場合、travis-ciはプロジェクトの継続的なテストを開始し、現在のステータスを表示します:赤(テスト中に問題がありました)、黄色(警告があります)、緑(すべてのテストに合格しました)。 ステータスに加えて、次の情報を確認できます。エラーメッセージまたは何か問題が発生した場合の警告。 最後のコミットとその作者。 組立履歴など 一般的に、インターフェースは非常に有益で理解しやすいものです。 さらに、travis-ciは電子メールで問題を通知します。



サービスの特徴



  1. .travis.ymlファイルがgithubリポジトリのルートに落ちた瞬間、プロジェクト言語のいずれかのワーカーが解放されたときにのみ作業が開始されます。
  2. .travis.ymlファイルが存在するすべてのアクティブなプロジェクトブランチがテストされます。
  3. アセンブリ間のソフトウェア環境の状態は保存されません。 これは、テストプロセス中にデータベースが変更された場合、ファイルが作成された場合など、その後のアセンブリではこれらの結果が利用できないことを意味します。 新しいビルドはそれぞれ、クリーンな状態で始まります。
  4. .travis.ymlファイルでエラーを起こさないために、travis -lintユーティリティがあります。 彼女はチェックできます:

    • YAML形式に矛盾はありますか?
    • 指定された言語キー
    • travis-ciは指定されたランタイムをサポートしますか
    • ファイルは廃止された関数を使用しません


  5. 最大の効率のために、いわゆる アセンブリマトリックス。 これは、複数のランタイム、環境変数などを指定する場合を意味します 1つのファイルで、アセンブリに使用されるすべての可能な組み合わせのチェーンが自動的に構築されます。 以下の例では、4つのアセンブリが実行されます。


#.travis.yml rvm: - 1.9.3 - rbx-18mode env: - FOO=foo BAR=bar - FOO=bar BAR=foo
      
      







興味深い事実



  1. サービスの名前にある「Travis」とは、子供向けテレビ番組「Bob The Builder」のトラヴィストラクターという漫画のキャラクターの名前を意味します。
  2. プロジェクトを財政的に支援するよう一般の人々を動機付けるために、著者はサイトlove.travis-ci.orgを作成しました。このサイトでは、一定量のサポートを寄付でき、金額の大きさに応じて、ステッカー、着メロなどのさまざまなお土産を提示します。 同じサイトで、収益化を含む将来の計画がいくつか説明されていることも興味深いです。


おわりに



Travis-ciは意志によって-意志ではなく、それ自体に関心を呼び起こします。 現在、非常に大規模で有名なプロジェクトがホストされているという事実を考慮すると、そのようなサービスに対する需要があります。 このサービスは勢いを増しているだけであり、ユーザーの大規模なコミュニティを見つけてほしいと願っています。



参照資料



  1. サービスウェブサイト
  2. サービス文書
  3. Github.comプロフィール
  4. ジョシュ・カルデリミスTwitter
  5. スヴェン・フックスTwitter
  6. マーティン・ファウラーの継続的統合文献



All Articles