3
9

More than 5 years have passed since last update.

GitHub連携したJenkinsをサクッと構築したい

Last updated at Posted at 2017-05-31
1 / 2

求めるJenkinsおじさん

  • Jenkins >= 2.0

基盤

  • AWS(使い慣れているので/ public ip あればなんでもいいです)

AWS上の構成

EC2(publicにさらしたくない) + ELB(SSL終端させたい、ここでポート変換) の構成でいく。
ELBのSecurity Groupは自分家(自拠点)とGitHubのhookだけ許可する様に設定GitHubのIPはhttps://api.github.com/metaで調べて開けておく。

Jenkins

サクッと作りたいのでdockerを使う。

packageからinstallとかでもいいが、jenkinsのアップデートする時に面倒なのでdockerでold versionとnew versionの2つ立てて置いて切り替える時にポートだけ変更してアクセスするようにしたかった。(ALBのtarget groupとか使ってもいいけど面倒なので)

officialのdocker imageがある様なのでそこから作成する。

$ docker pull jenkins
$ docker run -p 8080:8080 -p 50000:50000 jenkins

8080がJenkinsのweb用のポートで、50000がslaveとの連携用のポート

alpineベースのimageもある様でそちらを使用する場合は、jenkins:alpine

起動させる時にJekinsのhome directoryとか(jobなど)をhost側に出して置きたい場合は、

$ docker run -p 8080:8080 -p 50000:50000 -v /var/jenkins_home jenkins

起動する時にadminのパスワードが流れるのでそれをコピーしておく。

------省略------

*************************************************************
*************************************************************
*************************************************************

Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  <= これをコピー

This may also be found at: /var/jenkins_home/secrets/initialAdminPassword

*************************************************************
*************************************************************
*************************************************************
------省略------

ログイン後におすすめpluginのinstallが選択されているのでとりあえずinstall

imageがでかくなるのが嫌な場合は個別でpluginをinstall。

Jenkinsの管理 >> Pluginの管理 >> 利用可能 から GitHub Pluginを選択してinstall

ここまできておもむろにhttps://elb.endpoint/scriptを開いて

Jenkins.instance.pluginManager.plugins.each{
  plugin ->
    println ("${plugin.getShortName()}:${plugin.getVersion()}")
}

を実行する。結果をコピってplugins.txtとして保存する。

  • あとで使いまーす。

Job

とりあえず、Free Styleのprojectを作成して、

  • General
    • GitHub project
    • Project url
  • ソースコード管理
    • Git (通知だけしたい場合でもここを指定する必要あり)
    • リポジトリURL
    • 認証情報
  • ビルド・トリガ
    • GitHub hook trigger for GITScm polling (旧: Build when a change is pushed to GitHub)

あとは好きに設定しておく。

GitHub

Settings >> integration & services >> serviciesのadd services >> Jenkins (GitHub plugin)
を選択
Jenkins hook url にhttps://elb.endpoint/github-webhook/ (例にしたがって)
を入れてactivate。

上の方にtest用のボタンがあるのでそれを押すこともできるが実行されちゃうので気をつけましょう

連携

連携自体はこれで終わりです。

余談 Jenkins Update する時

/var/jenkins_homeにjobやconfigなどの情報があるので引き抜いて置きます。

FROM jenkins:alpine

VOLUME /var/jenkins_home
COPY plugins.txt /usr/share/jenkins/plugins.txt
USER root
RUN /usr/local/bin/plugins.sh /usr/share/jenkins/plugins.txt
USER jenkins

こんな感じして/var/jenkins_homeを新しいおじさんに食わせてあげるとサクッと新しいversionのjenkinsができちゃいます。(imageを移してもいいです。)

3
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
9