JavaRush /Java Blog /Random-JA /継続的インテグレーション
Nikita Koliadin
レベル 40
Днепр

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

Random-JA グループに公開済み
同僚の皆さん、こんにちは!コンピューターに常にプロジェクトをビルドさせることにうんざりしていませんか? それなら、この記事はあなたのためのものです! 継続的インテグレーション - 1この記事では、継続的インテグレーション (以下、単に CI) に関する資料を簡潔かつ明確に提示し、「それは何ですか?」「なぜ?」といった素朴な疑問に答えます。なぜ?" テストプロジェクトの例を示します。この記事は、少なくともBuild System: Mavenに精通しており、 Git の使用方法とプロジェクトをGitHubにプッシュする方法を知っている経験豊富なユーザーを対象としています。

「継続的インテグレーションとは何ですか?」

この質問についてWiki が何を教えているか見てみましょう: 継続的インテグレーション (CI、英語の継続的インテグレーション) は、作業コピーを共通のメイン開発ブランチに 1 日に数回マージし、初期段階でプロジェクトの自動ビルドを頻繁に実行することで構成されるソフトウェア開発手法です。潜在的な欠陥を検出し、統合上の問題を解決します。 怖いですね。この用語を簡単な言葉で説明してみましょう。 継続的インテグレーションは、バグや非互換性を検出するために、特定のマシン上で特定の構成を使用してソフトウェアを構築および自動テストするためのシステムです。 さて、問題ありません。それはわかりましたが、次のような論理的な疑問が生じます。

なぜ CI が必要なのでしょうか?

大規模なプロジェクトを作成していて、機能を追加/変更する必要があると想像してみましょう。正常に作成し、テストを作成し、起動すると、すべてがうまくいったように見えますが、そうではありません。ある機能の変更が別の機能に影響し、さらに別の機能が影響を受け、さらに別の機能が影響を受けて、バグがどこかに滑り込んでエラーが発生するという状況が発生します。はい、これは設計が不十分なプロジェクトである可能性が高いと言えますし、それは正しいかもしれません。しかし、そうではなく、これらの接続が実際に存在する必要がある場合はどうなるでしょうか? そして、よくあることですが、プロジェクトの執筆と作成を複数回行う場合はどうなるでしょうか? 新しく作成した機能に対してテストを実行したところ、肯定的な結果が得られました。簡単にコミットしてどこかにプッシュし、自宅で高価なウィスキーを飲みながら葉巻を吸う方法をすでに考えていますが、そうではありません。悲しいことに、あなたの同僚や上司が、誰であろうと、あなたのコミットのせいでビルド全体がクラッシュしたと言います。あなたは当惑しながら、自分はプログラマーであり、すべてをテストしてきたと言いました。しかし、多くの場合、プロジェクト全体を常にテストする時間がなく、アセンブリ全体ではなく、変更を加えたコード部分のみをテストしていました。ここで CI が役に立ちます。リソースにプッシュするたびに、CI はプロジェクトを最初からビルドし、すべてテストを実行します。すべてのテストに合格してプロジェクトがビルドされた場合にのみ、ビルドは合格ステータスを受け取ります。そうしないと、復帰して何が問題だったのかを確認する機会が得られます。そこで、 「なぜそうなるのに、そうでないのはなぜですか?」という質問をする時が来ました。そしてソフトウェアの実装を見てみましょう。 すでに述べたように、この記事は Maven と Git に精通している人を対象としています。したがって、CI の設定など以外に私がどのようにして何をしているのかを知っていただければ幸いです。
  1. まず、単純な Maven テスト プロジェクトを作成し、その中に「Hello World!」を出力するクラスを作成しましょう。そして、いくつかの簡単な操作を実行します。そして、このクラスの最も簡単なテストを書いてみましょう。

    結果として、次のような基本的なプロジェクト構造が得られます。

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

    すべてのソースは私の GitHub にあります。Main に何を書くか、どのようなテストがあるかは関係ありません。

  2. プロジェクトを GitHub にプッシュします。

  3. ここからが楽しい部分です。CI の中では、可用性と信頼性を考慮してTravis CIを選択しました。Travis は GitHub を使用してソース コードをホストしています。

    したがって、Travis CI Web サイトにアクセスし、GitHub 経由でログインします。プロファイルでは、プロジェクトを接続します。

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

    押すたびにすべてを組み立てる準備ができていますが、問題はどのように組み立てるかです。

  4. 大好きなIDEAに戻り、.travis.ymlファイルを作成します。

    このファイルは Travis ビルド構成を担当します。最も一般的な設定を見てみましょう。

    • プロジェクトを実装する言語を指定する必要があります。
    • ビルドを高速化するには、ディレクトリへのパスを指定します。
    • アセンブリの成功または失敗に関する通知方法を指定します。

    一般的な Travis 構成は次のようになります。

    # https://docs.travis-ci.com/user/languages/java/
    language: java
    jdk: oraclejdk9
    
    # Improve Build Speed https://dzone.com/articles/travis-ci-tutorial-java-projects
    cache:
      directories:
      - $HOME/.m2
    
    # Notifications https://docs.travis-ci.com/user/notifications/
    notifications:
      email:
        recipients:
          - qThegamEp@gmail.com
        on_success: always # default: change
        on_failure: always # default: always

    わかりやすくするために、リンク付きのコメントを追加しました。

  5. 再度 GitHub にプッシュし、Travis Web サイトを開き、プロジェクトを選択してビルドを監視します。その結果、ビルドの成功に関する通知を受け取ります。

    継続的インテグレーション - 4 継続的インテグレーション - 5

    また、このサイトでは、プロジェクトのアセンブリが成功したことを示すバッジが表示されます。これを README.md に挿入できます。

    継続的インテグレーション - 6
役立つリンク: 本文中に誤字・脱字があるかもしれません。ご清聴ありがとうございました!
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION