GitlabプロジェクトとJenkinsジョブの連携方法
GirlabとJenkinsを連携させる機会がありましたので、備忘録を兼ねて残します。
結構端折っていたり、オレオレルールがあると思います。
ご指摘等々ありましたら、お教え頂ければ幸いです。
前提条件
- GitlabとJenkinsのソフト間の連携が完了済みであること
- GitlabにJenkinsの情報を投稿するための専用ユーザを作成し、sshキー登録等が完了済みであること
- Jenkins内で、Gitlabからアクセスができるユーザの認証情報を作成していること
- Jenkins内で、GitlabにJenkinsの情報を投稿するための専用ユーザのAPIアクセストークンが登録済みであること
(この辺は参考参考を参照。)
ソフトウェアバージョン情報
Gitlab
Community Edition 11.10.4
Jenkins
2.164.3
説明すること
簡単(低レベル)なGitlabとjenkinsの連携。
GitlabでMerge Request(Pull Request)を送ったらJenkinsで自動ビルドを行い、その結果がMerge Requestに反映されるまで行う。
低レベル : テスト等しない
説明しない事
テストツール等の連携方法。
注意事項
URLのhttps等については使用しているシステムに依存する。
手順 (Gitlabの手順はG、Jenkinsの手順はJを付けている)
G-プロジェクト作成
ここでは特別な設定はなし。
G-プロジェクトメンバにjenkins用ユーザを追加
権限をdeveloper
以上にする。 (プロジェクト内でコメント等行うため。)
J-ジョブ作成
新規ジョブ作成
ダッシュボード(左上のJenkinsを押下したときに表示される画面)
-> 新規ジョブ作成
。
<Jenkins URL>/view/all/newJob
ジョブ名を入力し、ジョブの種類を選択してOK
ボタンを押下。
今回はフリースタイル・プロジェクトのビルド
を選択。
ジョブ設定 (記述していないものについては設定変更しない)
ソースコード管理
Gitを選択。
- リポジトリ
- リポジトリURL
git clone
するときのURL。 - 認証情報
Gitlabからアクセスができるユーザの認証情報を選択する。
接続できるかどうか自動で判別してくれる。
接続できなければ赤文字でその旨が表示される。 - ビルドするブランチ
- ブランチ指定子
プロジェクトの運用方法に応じて設定。
今回は**
(全て)を入力。
- ブランチ指定子
- リポジトリURL
ビルド・トリガ
プロジェクトの運用方法に応じて設定。
今回はBuild when a change is pushed to GitLab. GitLab webhook URL: <URL>
をチェック。
- Enabled Gitlab triggers
プロジェクトの運用方法に応じて設定。
今回は、Merge Requestを open / 再open した時のみビルドするようにしたかったため以下のように設定した。- Push Events
チェックを外す。 - Approved Merge Requests (EE-only)
チェックを外す。 - Comments
チェックを外す。
- Push Events
ビルド環境
プロジェクトの運用方法に応じて設定。
今回はビルド開始前にワークスペースを削除する
をチェック。
ビルド
テスト等設定できるが、今回はしない。
簡単に連携を確認するだけなので、ビルド手順の追加
ボタンを押下してシェルの実行
を選択し、以下コマンドを記入。
echo "Hello world"
ビルド後の処理
ビルドが成功したかどうかをGitlab上のMerge Requestに記述したいので、ビルド後御処理の追加
ボタンを押下してAdd note with build status on GitLab merge requests
を選択
全ての設定が終わったら保存
ボタンを押下してジョブの作成を完了する。
J-APIトークン作成
GitlabからJenkinsにアクセスする用のAPIトークンを作成する。
- Jenkinsの画面右上の自分のユーザ名をクリックする。
- 左メニューの
設定
を押下する。 -
APIトークン
->Current token(s)
でAdd new Token
ボタンを押下する。 - トークンの名前を任意で入力する。
-
Generate
ボタンを押下し、表示された文字列はあとで使うのでコピーしてメモ帳等で保持しておく。
忘れたりした場合は再度トークンを作成する
G-Webhook作成
連携のための設定を行う。
設定する場所
設定
-> インテグレーション
<projectURL>/settings/integrations
設定項目
URL
https://<jenkinsのユーザID>:<jenkinsのユーザがjenkins上で作成したAPIトークン>@<projectURL>
Trigger
プロジェクトの運用方法に合わせてチェックするSSL verification
チェックを外す
設定後、Add webhook
ボタンを押下し、webhookを作成。
作成後、Test
ボタンでWebhookが動作するかどうかを確認し、動作すればOK。
エラーが起きた場合の対処方法については後述。
エラーと対処方法
参考程度に。
解決しなければエラー文で検索。
どうしようもない場合は最終手段としてプロジェクトかジョブを削除。
401
認証エラー。
原因
- jenkinsでAPIトークンが作成されていない。
- ユーザIDが間違っている。
対処方法
- APIトークンが作成されているか確認。作成されていたならもう一度作り直す。
- ユーザIDの確認。ユーザ名と混同しないよう注意。
404
指定したURLにアクセスできない。
原因
URLが間違っている。
対処方法
URLをもう一度コピペし直す。
G-マージリクエスト発行
Gitlabで適当にマージリクエストを発行する。
担当者はjenkinsにする必要はない。
マージリクエストページ内下部のディスカッション欄で以下の投稿がされていることを確認する。
J-ビルド結果確認
jobのページ内左にあるビルド履歴
の最新のビルドを確認する。
番号がリンクになっているので押下。
コンソール出力
を押下する。
今回、ビルド設定の中でecho
コマンドを打ったので、コンソールに文字列が出力される。その旨がかかれていて、エラーが起きていないならば連携は完了。
参考資料
JenkinsとGitLabを連携する方法
Gitlab+Jenkins 自动构建(自動ビルド)
JenkinsとGitHubのWebhook連携の整理
Author And Source
この問題について(GitlabプロジェクトとJenkinsジョブの連携方法), 我々は、より多くの情報をここで見つけました https://qiita.com/yuyaaaaaaaaaaaa/items/d0adadb8b81b4184f66a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .