6

私はこのプロジェクトに約1週間取り組んでおり、オンラインで明確な説明なしに2日間検索しています。学校の課題では、次のプログラムを使用してビルドサーバーを設定する必要があります。

  • ビルドツールとしてのMaven。
  • バージョン管理システムとしてのMercurial。
  • Java(JRE)、javacおよびjavadoc。
  • ユニットテスト用のJUnit。
  • Jenkins(JDependプラグインを使用)。

3つのジョブを作成する必要があり、そのうちの1つは次のとおりです。

Mercurialの(ローカル)リポジトリが編集されるたびに、ビルドを開始する必要があります。(意味:すべてのMercurialコミットはJenkinsによって検出される必要があります。この「検出」は1分ごとにトリガーされる必要があります)

使用する必要のあるツールは、 Javac、ビルドツールとしてのMaven 、そしてもちろんMercurialです。

これはすべてUbuntu環境で発生します。私は(まったく)Linuxに精通していないので、これを行う方法がわかりません。

私は既製のソリューションを求めているのではなく、Mercurialの「フック」、この仕事をJenkinsで機能させるために必要な(行う)ことなどを理解するための「ヒント」を求めています。オンラインでの検索はかなりあいまいで、Pythonの例を使用しています。

とても具体的です:少しのガイダンスが歓迎されるかもしれません:)すべての援助の手はあり​​がたいです!

4

3 に答える 3

13

誰かがあなたのリポジトリにプッシュした後にJenkinsでビルドをトリガーする最も効率的な方法は、mecurialでchangegroupフックを使用することです。

一方、Jenkinsでは、特別なトークンを使用してジョブのURLを呼び出すことにより、ビルドをリモートでトリガーできます。対応するトークンを使用したこのトリガーは、Jenkinsのジョブで構成する必要があります。

トリガー構成の構築

repos .hg / hgrcファイルに配置されるMercurialフックは、次のように定義できます。

[hooks]
changegroup = curl --silent http://your.jenkins.server.url/jenkins/job/<YOURJOBNAMEHERE>/build?token=Foo

このフックは、curlコマンドラインツールを使用して、ジョブをリモートでトリガーできるようにする定義済みのトークンを使用してjenkinsジョブのURLを呼び出します。もちろん、LinuxボックスにCurlをインストールする必要があります。

于 2012-11-07T22:08:14.633 に答える
4

あなたの教授は、Jenkins が Mercurial リポジトリに変更がないかポーリングすることを望んでいるようです (「1 分ごとにトリガー」)。Jenkins ジョブをセットアップすると、「ビルド トリガー」というセクションにポーリング オプションが表示されます。それはあなたが望むものです。

より良い解決策は、Mercurial に Jenkins に変更を通知させることです。これは、ポーリングは一般的に悪い考えであるためです (何日も何もチェックインしなくても、Jenkins は、何かが変更されたかどうかを毎分尋ねます)。Mercurial フックの書き方の例については本を参照するか、私が書いたPython スクリプトを使用することができます。

于 2012-11-07T22:02:36.447 に答える