【技術メモ】JenkinsでGitLabからplaybook取ってきてAnsible実行
概要
タイトルの通り
- Jenkinsジョブで
- GitLabからモジュール取ってきて
- Ansibile実行する
をやってみた手順
jenkins の設定
Jenkinsプラグイン設定
- Git Plugin
- Gitlab Hook Plugin(WebHook使う場合)
- AnsiColor (コンソールが色分けされる)
GitLabからソースをcloneする設定
公開鍵/秘密鍵の作成
[root@jenkins ~]# cd /home/jenkins [root@jenkins ~]# sudo -u jenkins -H ssh-keygen -t rsa -C jenkins@YOUR.JENKINS.URL Generating public/private rsa key pair. Enter file in which to save the key (/home/jenkins/.ssh/id_rsa): Created directory '/home/jenkins/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/jenkins/.ssh/id_rsa. Your public key has been saved in /home/jenkins/.ssh/id_rsa.pub. (snip)
.ssh/config 設定
jenkins ユーザは GitLab から SSH でソースコードを clone するので、YOUR.GITLAB.URL 用の ssh config を追加します。
[root@jenkins .ssh]# vi config [root@jenkins .ssh]# cat config Host YOUR.GITLAB.URL User git Hostname YOUR.GITLAB.URL IdentityFile /var/lib/jenkins/.ssh/id_rsa
認証情報の登録
Jenkinsの画面から、 [認証情報]->[System]->[グローバルドメイン]->[認証情報の追加]で以下を入力
- スコープ:グローバル
- ユーザー名:(GitLabのアカウント)
- パスワード:(GitLabのパスワード)
- ID:
- 説明:なにかしら
GitLab側設定
JenkinsがGitLabからcloneできるよう、GitLab用のユーザをGitLab プロジェクトに追加。
GitLabアカウント作成、プロジェクト参加設定
終わってる前提。
アカウントにSSH keyを設定
GitLab画面から、[SSH Keys]->[Add SSH key]
- [Key]にjenkinsサーバのid_rsa.pubの内容をコピー
- [Title]は適当に(デフォルトはユーザ名@ホスト名)
Web Hookの設定
(ここ試してない。)
GitLab のリポジトリにおいてイベントが発生した際に Jenkins のビルドを実行する設定。
GitLab画面から[Web Hooks]
- [URL] :http://YOUR.JENKINS.URL/gitlab/build_now
- [Trigger]:Push events
Jenkinsジョブ登録
ソース持ってくるところ
jenkinsファイル
checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '********-****-****-****-************', url: 'http://YOUR.GITLAB.URL/GROUP_NAME/PROJECT_NAME.git']]])
もってきたリポジトリはjenkinsのworkspace配下に展開される
- 展開先の指定あるのかな?
- workspaceをクリアするpluginも入ってるぽい
- ブランチ名とか動的に変える仕組み考えたい
Ansibleつかうところ
jenkinsファイル
sh 'ansible-playbook ./Ansible-playbook/site.yml --syntax-check'
参考リンク
SourceTree + Git + Ansible + Jenkns で 継続的デリバリお試し環境をつくってみた(その2)