Contents
はじめに
jenkinsをdockerで動かして勉強します。やったことのまとめです。
masterだけでslaveはなし。slaveはパス。
追記:このdockerhub、使わないほうがいいかも。8ヶ月も更新止まっててjenkinsのversionが2.60.3と大変古いものになっていてpluginもまともに入らないorz
参考サイト
jenkinsのdokcerhub
初期設定はこちらがわかりやすい
ディレクトリ構成とファイル
ディレクトリ構成
1 2 3 4 5 6 |
ubuntu@MyEC2 ~/jenkins % tree -a --charset=C . |-- docker-compose.yaml `-- work 1 directory, 1 file |
~/jenkins/配下にdocker-compose.yamlとworkディレクトリを作っています。
docker-compose.yaml
1 2 3 4 5 6 7 8 9 10 11 |
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作成されていることを確認します。
1 2 3 4 5 |
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
1 2 |
#!/bin/bash echo "Hello World!" |
先ほど作成したプロジェクト testworkまで移動し、ワークスペースをクリックします。ここに先程作ったhello.shがあるはずです。
確認できたら設定をクリック。さっき入力を飛ばした画面になるのでビルドにあるビルド手順の追加→シェルの実行と進みシェルスクリプト箇所にbash hello.shと入力して保存します。
ビルド実行をクリック。ビルド#2が出来るのでそれをクリックします。コンソール出力を確認すると
1 2 3 4 5 6 |
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
1 2 3 4 5 6 7 |
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回目は時間がかかるので●が点滅している間に#番号→コンソール出力で様子を見に行きます。少し待つとうまくいく。はず。
1 2 3 4 5 6 7 |
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も出来ちゃいます。
1 2 3 4 5 6 7 |
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、食わず嫌いをしていたんですが、使ってみるとシンプルかも。
コメント