tsalakh ain sus noam Huyah ol guf

勉強会のメモ。その他備忘録。参考にさせて頂いたサイトや資料はリンクさせて頂いていますが不都合があればご連絡ください。

【技術メモ】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]


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)

GitLabとJenkinsを連携する

~/.ssh/configについて