スポンサーリンク

docker-composeでjenkinsに入門

docker
この記事は約8分で読めます。

はじめに

jenkinsをdockerで動かして勉強します。やったことのまとめです。

masterだけでslaveはなし。slaveはパス。

 

追記:このdockerhub、使わないほうがいいかも。8ヶ月も更新止まっててjenkinsのversionが2.60.3と大変古いものになっていてpluginもまともに入らないorz

 

参考サイト

jenkinsのdokcerhub

 

初期設定はこちらがわかりやすい

 

ディレクトリ構成とファイル

ディレクトリ構成

ubuntu@MyEC2 ~/jenkins % tree -a --charset=C
.
|-- docker-compose.yaml
`-- work

1 directory, 1 file

~/jenkins/配下にdocker-compose.yamlとworkディレクトリを作っています。

 

docker-compose.yaml

version: "3"
services:
  jenkins:
    image: jenkins:2.60.3
    container_name: jenkins
    network_mode: host
    volumes:
      - ./work:/var/jenkins_home
    environment:
      TZ: Asia/Tokyo
    tty: true

volumesでworkディレクトリをjenkins dockerコンテナ内の/workに紐づけてあげる。

用意するのはとりあえずこれだけ。手順の中で追加するものが少しあります。

sh動かしてみる

まずは適当なshを実行させることを目指します。

 

jenkinsの初期設定

起動させます。

docker-compose up -d

 

起動したらアクセスします。アクセスはhttp://XXX:8080。テスト用なのでhttpとか気にしない。

/var/jenkins_home/secrets/initialAdminPasswordにあるpasswordを求められますが、

work=/var/jenkins_homeになっているので

cat work/secrets/initialAdminPasswordでパスワードを確認して貼り付け。

 


Customize JenkinsではInstall suggested pluginsを選択。後でどうにでもなるので前に進みます。

 


なんか色々失敗してるけどRetryの隣のContinueを選んで先に進みます。

 


Create First Admin User画面ではユーザを作るんでしょうけど下の方にあるCotinue as adminを選んでスキップ。(良くない。良い子はちゃんとユーザ作りましょうw)

スキップするとuser/passがadmin/さっき張ったwork/secrets/initialAdminPasswordのパスになります。

 

ジョブの作成~ワークスペースの作成

ここまでで無事Jenkinsにログインできます。Jenkinsに歓迎されるはずです。

とりあえず何でもいいのでジョブを作ります。

 


Enter an item nameは何でもいいが今回はtestworkとします。

フリースタイル・プロジェクトのビルドを選択してOK。

次画面の細かい設定は全部無視して保存。あとで修正できるので。

 

 


プロジェクト出来たらビルド実行。workspaceが作成されます。

 

shの追加~ビルドの実行

コンソールに戻って~/jenkins/work/workspace/testwork作成されていることを確認します。

ubuntu@MyEC2 ~/jenkins/work/workspace/testwork
 % ll
total 8
drwxr-xr-x 3 ubuntu ubuntu 4096 Mar 15 12:16 ..
drwxr-xr-x 2 ubuntu ubuntu 4096 Mar 15 12:16 .

 

先ほど作ったworkspace/testworkに移動します。

cd ~/jenkins/work/workspace/testwork

 

テスト用にhello.shを作ります。

~/jenkins/work/jobs/testwork/hello.sh

#!/bin/bash
echo "Hello World!"

 

先ほど作成したプロジェクト testworkまで移動し、ワークスペースをクリックします。ここに先程作ったhello.shがあるはずです。

 

確認できたら設定をクリック。さっき入力を飛ばした画面になるのでビルドにあるビルド手順の追加→シェルの実行と進みシェルスクリプト箇所にbash hello.shと入力して保存します。

 

ビルド実行をクリック。ビルド#2が出来るのでそれをクリックします。コンソール出力を確認すると

Started by user admin
Building in workspace /var/jenkins_home/workspace/testwork
[testwork] $ /bin/sh -xe /tmp/jenkins6658125862623520180.sh
+ bash hello.sh
Hello World!
Finished: SUCCESS

ということでHello World!と表示されます。やったぜ。

 

goを動かしてみる

shではなくgolangでもビルドできるか試してみます。

とりあえずdokcer落として以下を~/jenkins/work/workspace/testwork/に作成します。

 

~/jenkins/work/workspace/testwork/hello.go

package main

import "fmt"

func main() {
        fmt.Println("Hello World! from golang")
}

 

さきほどと同じようにdockerを起動します。

docker-compose up -d

 

testworkのワークスペースまで進みhello.goがあることを確認します。

先ほどと同じようにビルドしようとしてもgo: not foundと言われているのでプラグインを追加します。

 

Jenkins→Jenkinsの管理→プラグインの管理に進み、利用可能のタブを選んでフィルターにgolangと入力します。

 

出てきたgoをチェックして再起動せずにインストールを選択。

インストールが成功したら

Jenkins→Jenkinsの管理→Global Tool Configurationを選択。

 


Goの追加をクリックして名前を入力。ここでは適当にgo 1.12.1としてます。そのままSaveして抜けます。

 

再度testworkに戻って設定をクリック。

ビルド環境のSet up Go programming language toolsをクリック。

先ほど名前を付けたものがGo versionにあるので選択します。

最後に保存してビルド実行!

1回目は時間がかかるので●が点滅している間に#番号→コンソール出力で様子を見に行きます。少し待つとうまくいく。はず。

Started by user admin
Building in workspace /var/jenkins_home/workspace/testwork
Unpacking Go from https://dl.google.com/go/go1.12.1.linux-amd64.tar.gz to /var/jenkins_home/tools/org.jenkinsci.plugins.golang.GolangInstallation/go_1.12.1 on Jenkins
[testwork] $ /bin/sh -xe /tmp/jenkins8147930960120221168.sh
+ go run hello.go
Hello World! from golang
Finished: SUCCESS

ちゃんとHello World! from golangと出力されています。

 

ちなみに設定のシェルスクリプトを
go build hello.go
./hello

としてgoのbuildも出来ちゃいます。

Started by user admin
Building in workspace /var/jenkins_home/workspace/testwork
[testwork] $ /bin/sh -xe /tmp/jenkins8591861736203403705.sh
+ go build hello.go
+ ./hello
Hello World! from golang
Finished: SUCCESS

 

最後に

jenkins、食わず嫌いをしていたんですが、使ってみるとシンプルかも。

 

スポンサーリンク
dockergolangjenkins
スポンサーリンク
hakenをフォローする
定年まで泣くんじゃない
タイトルとURLをコピーしました