GitHubを使ったプロジェクトのためにJenkins-ciをセットアップしようとしています。私はすでにJenkinsに適切なプラグインを設定しました。プロジェクトの誰かがマスターになるときにだけJenkinsにビルドスクリプトを実行させたい。これまでのところ、誰かがどこにプッシュしてもビルドがトリガーされるように設定することができましたが、それは広すぎるのです。これはGitの受信後サービスフックで行いました。
私はJenkins wikiといくつかのチュートリアルを読みましたが、この特定の詳細は欠けています...それはおそらくポーリングと関係があるのでしょうか?それともGit側で作業して、Gitがmaster
が変更されたときにのみJenkinsをトリガーするようにするべきですか?
がすでに述べたように、を曖昧にしている一方で、(で説明されているように)良い解決策があります 投票JenkinsビルドをGitフックから起動する):
JenkinsジョブのビルドトリガーをPoll SCMに設定しますが、donotを指定します。スケジュール.
URLを通知するためのGitHub受信後トリガーを作成する
http://yourserver/jenkins/git/notifyCommit?url=<URL of the Git repository>?token=<get token from git to build remotely>
これにより、指定したGitリポジトリをポーリングするすべてのビルドがトリガーされます。
しかし、ポーリングは実際には使用されているブランチに何かプッシュされているかどうかを確認します。
それは完璧に機能します。
バージョン0.5の時点で、Jenkins用のGitHubプラグインは 変更がGitHubにプッシュされたときにビルドをトリガーする することができます。
リモートでビルドをトリガーする代わりに、ポーリングでビルドをトリガーするようにJenkinsプロジェクト設定を変更してください。
Jenkinsは、固定の内部情報に基づいて、またはURLによってポーリングできます。後者は、そのブランチに変更がない場合にビルドをスキップしたいものです。正確な詳細は ドキュメント にあります。基本的にあなたはただ "Poll SCM"オプションをチェックし、スケジュールセクションを空白のままにし、そしてJENKINS_URL/job/name/pollingを打つためにリモートURLを設定する必要があります。
安全なJenkins環境をお持ちの場合は、/build
とは異なり、/polling
URLに認証が必要です。指示 ここ に詳細があります。例えば、私はGitHubの受信後フックをusername:apiToken@JENKIS_URL/job/name/polling
に持っています。
GitLabの場合は、次の手順に従います。
Jenkinsプロジェクトの「今すぐ作成」URLをプッシュイベントURLとして入力します。
例えばhttp://server.com/jenkins/job/project_name/build?delay=0sec
Add Web Hook
をクリックしてからtest hook
をクリックしますその後、リポジトリにコミットするたびにWebフックが起動され、ビルドが作成されます。 Jenkinsワークスペースを必ずdelete workspace before each build
に設定して、新しいコードの新しいコピーを取得してください。
Gitとは関係ありませんが、以下ではMercurialを使ってJenkinsのジョブ設定について詳しく説明します。それは同様の問題を抱えている他の人たちを助けるかもしれません。
Poll SCM
オプションを選択します。値を* * * * *
に設定します[URLTrigger] - Poll with a URL
を確認してください。変更日の変更、URLコンテンツなどのオプションを選択できるようになりました.Monitor change of content
さて、いくつかのテストチェックインによってMercurialリポジトリへの変更を引き起こします。
JenkinsジョブがSCMの変更を検出して実行されるようになりました。 Mercurialの変更によりビルドが実行されると、テキストStarted by an SCM change
が表示されます。それ以外の場合は、手動で起動したユーザー。
Gitが提供するGitフックを使ってJenkinsの仕事を開始するには、curlを使うだけです。
コマンドcurl http://localhost:8080/job/someJob/build?delay=0sec
はJenkinsジョブを実行できます。ここで、someJob
はJenkinsジョブの名前です。
あなたの隠された.gitフォルダの中の "hooks"フォルダを探してください。 "post-commit.sample"ファイルの名前を "post-commit"に変更します。メモ帳でそれを開き、 ":Nothing"の行を削除して、そこに上記のコマンドを貼り付けます。
それでおしまい。コミットをするたびに、Gitはファイルに定義されたコミット後コマンドを起動します。
Gitコマンド/ GUIからコードがリポジトリにプッシュされた後のJenkinsとの継続的統合:
.git/hooks
フォルダに移動します。hooks
フォルダには、いくつかのファイルが含まれています。 "post-commit"をチェックしてください。存在しない場合は、ファイル拡張子を付けずに "post-commit"ファイルを作成します。
C:\work\test\\.git\hooks\post-commit
下記のコマンドで "post-commit"ファイルを編集します。それがあなたのローカルソースコードフックフォルダに存在することを確認してください。
curl -u userName:apiToken -X POST http://localhost:8080/jenkins/job/jobName/build?token=apiToken
例:
curl -u admin:f1c55b3a07bb2b69b9dd549e96898384 -X POST http://localhost:8080/jenkins/job/Gitcommittest/build?token=f1c55b3a07bb2b69b9dd549e96898384
5。
userName
:Jenkinsのユーザー名
jobName
:ビルドのジョブ名
apiToken
:あなたのAPIトークンを入手するには、あなたのJenkinsユーザーページ(インターフェースの右上)に行ってください。ページの左側にある「設定」メニューで利用可能です:「APIトークンを表示する」
ソースコードを変更して、そのコードをリポジトリにコミットします。
あなたの仕事、http://localhost:8080/jenkins/job/Gitcommittest/
は築き上げるべきです。
ブランチを指定する必要があります。デフォルトでは、それは何でも聴きます。ブログ投稿Hudson:GitとMavenのプラグインをご覧ください。
Generic Webhook Trigger Plugin はこれを達成するためにフィルタで設定することができます。
で設定した場合
ref
という名前の変数と式$.ref
。$ref
と^refs/heads/master$
のようなフィルタ表現を持つフィルタ。その場合、そのジョブはmaster
へのプッシュごとにトリガーされます。投票なし.
実際にビルドを実行するには、Webフックからもっと多くの値が必要です。必要なものを選択するために、JSONPathを使って変数を追加するだけです。
ここでいくつかのユースケースがあります: https://github.com/jenkinsci/generic-webhook-trigger-plugin/tree/master/src/test/resources/org/jenkinsci/plugins/ gwt/bdd
私の現在の組織では、スナップショットビルドを生成するために、これをマスターで行うのではなく、開発とリリース/ブランチの両方で行っています(Git Flowを使用しています)。
マルチブランチパイプラインを使用しているので、Jenkinsファイルでwhen {}構文を使用してこれを行います。
stage {
when {
expression {
branch 'develop'
}
}
}
これはこのブログ記事で詳しく説明されています。 https://jenkins.io/blog/2017/01/19/converting-conditional-to-pipeline/#longer-pipeline
上記の答えは正しいですが、私は彼らの単純さのためにここで初心者である彼らに話しています
特にパイプラインのビルドトリガーを設定するために:
2つのGithubブランチがあるとしましょう:1.master、2.dev、そしてJenkinsfile(パイプラインスクリプトが書かれている)と他のファイルが各ブランチで利用可能です
新しいPipelineプロジェクトを設定する(devブランチ用)
## 1. git-pluginとcronベースのアプローチとのコード統合前提条件git pluginをインストールし、あなたの名前とメールアドレスで設定してください。
## 2.コード統合:github-pluginとwebhookのアプローチ前提条件Githubプラグインをインストールし、Githubサーバーを設定する必要があります。そうでない場合は接続をテストする必要があります次の設定を検討してください
JenkinsのアカウントでGithubプラグインを設定する
GitHubセクション存在しない場合はGithubサーバーを追加します。API URL: https://api.github.com 認証情報:シークレットテキストを追加します([追加]ボタンをクリック:タイプシークレットテキストを選択)。値Personal Access Token(生成します) Githubアカウントから - >設定 - >開発者設定 - >個人用アクセストークン - >トークンの追加 - >範囲の確認 - >トークンのコピー)接続のテスト - > Githubアカウントに接続しているかどうか確認します。事前のサブセクションでは、 'shared secret'に以前の認証情報を選択してください。
次の方法であなたのリポジトリに追加されていない場合は、webhookを追加してください。
Github Pullリクエストプラグインがある場合は、公開されているJenkins URLでも設定してください。
プルリクエストビルダープラグインを使用します。 https://wiki.jenkins-ci.org/display/JENKINS/GitHub+pull+request+builder+plugin
それは本当に簡単です。その後、GitHubのWebフックを設定してビルドを開始することができます。