JenkinsでGitにPush時に自動ビルドさせる

Published: 2016年3月23日 by tomsato

概要

以前 Jenkins入門の入門 でJenkinsの概要と導入について調べましたが
1歩進んでGitHubと連携してGitにPushした時に自動ビルドを走らせるまでをやってみます

ユニットテスト(単体テスト)やビルドなどを自動で走らせたい時に良いかと思います
ここから応用するとプルリクエストをマージさせた時に走らせたりなど色々なタイミングで自動ビルドを行うことができます

手順

GitHubの設定

※ 以下全てJenkinsサーバでの作業
GitHubにSSHを行ってknown_hostsに追加を行う

$ sudo su -s /bin/bash jenkins
$ mkdir ~/.ssh;cd ~/.ssh
// 自分のメールアドレス
$ ssh-keygen -t rsa -C test@example.com
// パスワードを聞かれるが空で登録する

$ chmod 600 id_rsa
$ vim ~/.ssh/config
Host github
  HostName github.com
  IdentityFile ~/.ssh/id_rsa
  User git

以下で出力される内容は次で使うのでコピーする … ①

$ cat id_rsa.pub
ssh-rsa ...略...

https://github.com/settings/keys
GitHubの「SSH Keys」にアクセスして
「New SSH Key」を押す

Title 何でも良い、ここではtestとする
Key ①でコピーした内容を貼付ける

この状態でGitHubにsshアクセスする

$ ssh -T git@github.com
The authenticity of host 'github.com (...)' can't be established.
RSA key fingerprint is ...
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,...' (RSA) to the list of known hosts.
Hi tomsato! You've successfully authenticated, but GitHub does not provide shell access.

このようになればknown hostsが追加されてGitHub側の設定は完了

Jenkinsの設定

まずはGitHubと連携させるためのプラグインを入れる

プラグイン管理より:http://{Jenkinsサーバ}:8080/pluginManager/

とりあえず「アップデート」のタブから全てをチェックして「再起動せずにインストール」を押す
その後「利用可能」タブから「Git Plugin」をチェックして「再起動せずにインストール」を押す
画面遷移後「インストール完了後、ジョブがなければJenkinsを再起動する」で再起動して反映もしておく

Jenkinsの設定を行う

  1. 「新規ジョブ作成」から
  2. 「ジョブ名」(ここではcommitビルドとする)を入力
  3. 「フリースタイル・プロジェクトのビルド」にチェック
  4. 「OK」で作成

Jenkisn01

commitビルドのページに遷移して「設定」よりジョブの設定ページに遷移する

Jenkins02

入力項目

項目 説明 記述例
プロジェクト名 ジョブの名前 commitビルド
ソースコード管理 何を使うか Git
Repository URL:git@github.com:{accountname}/{repo}.git
ビルド・トリガ 何をトリガに実行するか SCMをポーリング
スケジュール:「* * * * *」
ビルド 何を実行するか シェルの実行
シェルスクリプト:「echo ‘Hello World!!’」

設定イメージ

Jenskins03
Jenkins04Jenkins05

手順

手動実行

ここまで設定できたら一度ジョブを実行する

ジョブのページから「ビルドの実行」でジョブを実行する

正常に実行できることを確認する

Pushする

$ cd your_repository/

$ vim README.md
$ git add .
$ git commit -m 'test'
$ git push origin master

少しすると自動でcommitビルドが実行されることが確認できる

コメントを書く

※ 個別に返信が必要な時のみご記入ください

※ Emailは公開されません

※ 承認されると名前・コメントが下記に表示されます

コメント一覧

最近の投稿

ビジュアルリグレッションテストについてまとめ、ネットで調べると数多くのライブラリがありどれがどんな立ち位置なのか全体像がわかりずらかったのでどんな種類があるのか入門の入門としてまとめます、またPlaywrightを使って実際に触ってみました

社内ツールなどの超小規模なAPIをGolangで実装する際にフレームワークを使うべきかを、実際にnet/httpを使った実装とフレームワークを使った実装を比較することでどれだけ優位性があるかを見ていきたいと思います。今回はフレームワークにはシンプルで使いやすそうなEchoを使うことにします。

vue-pdfを使ってNuxt.jsで作成しているアプリケーションに pdfスライドを表示させるサンプルを作成しました README.md通りに実装してもうまくいかないところがあったのでそのあたり含めてまとめます

Vue.js / Nuxt.jsにおけるログインの実装方法をまとめる Auth0やNuxt.jsのAuth Moduleとmiddlewareについて調べつつサンプルを作成することで理解を深める

コンポーネント設計について考える Atomic DesignやPresentational Component, Container Componentについてまとめつつ 自分だったらVue.js / Nuxt.jsでどういうコンポーネント設計にするかについてまとめます

カテゴリ一覧

タグ一覧