Macにjenkinsをインストールする(続き)

こんにちはKUJIRAです。昨年Macにjenkinsを入れたのですが、その直後から実はdockerでいいんじゃね?と思って構築し直し使ってみたので記事にします。

そもそもMacにjenkinsをインストールしたら何が起こったのか

まぁ、当たり前ですが、環境内に色々とゴミが溜まっていって環境を清潔に保つことができなくなりました。

あと、個人的な環境設定で影響を受けるものがごく稀にあったためCI環境としては本当に良くないんだなということにも気づきました。

Dockerとjenkinsコンテナを使ってみる

まず前提条件ですが、以下が行われていることが条件です。

  • 環境はMac
  • Homebrewがインストールされている
  • homebrew-cask が利用可能

これらが満たせていない人はインストール周りの記事を読んでも役に立たないかもしれませんので悪しからず。

Dockerインストールから利用開始まで

まずbrewコマンドでdockerをインストールする

するとdockerデスクトップがインストールされるのでlaunchpadから起動する。(ちなみに、homebrew-caskを使わないと普通のdockerがインストールされますが、自分はなんとなくデスクトップの方を選びました)

起動するとIDを求められるのでDocker Hubへのログインを求められるのでIDを入力してログインします。(持っていない方はIDを作成してください)

Docker Hub

ログインしたら、Docker Hubにあるイメージは利用可能になるので準備はできました。

jenkinsイメージのダウンロードとコンテナ利用

DockerおよびDocker Hubの利用が可能になったら本題のjenkinsイメージを落としてコンテナを立ち上げます。

これでDocker Hubから安定版のjenkinsイメージをダウンロードしてきてコンテナを立ち上げてくれます。

コンテナ名は「local_jenkins」でローカルホストの「18080」ポートにアクセスすると利用できます。

ちょっとはまったこと

jenkinsコンテナを立ち上げてはまったのは以下の2点です。

  • initialAdminPasswordどこ?
  • pythonとか利用したいけど見つからないと言われる

initialAdminPasswordどこ?

一番最初に分からなかったのはinitialAdminPasswordの場所でした・・・。コンテナなので、どうにかして知る方法あるだろうと思って色々試した結果、以下の2つの方法があることがわかりました。

  • コンテナにあるファイルを参照する方法
  • コンテナのログを確認する方法

コンテナにあるファイルを参照するためには以下のコマンドでコンソール入力をを狩野にしなければいけないです。

「docker exec」コマンドは対象のコンテナで任意のコマンドを実行するためのコマンドです。今回はbashを起動しコンテナ内の操作を行っています。(docker attachコマンドというのもあったのですが、どうもうまくいかなかったので、これについては今後の課題)

ログインしたら、「/var/jenkins_home/secrets/initialAdminPassword」を確認します。

もう一つの方法は「docker logs」コマンドを利用する方法です。

するとログが出力されるので、そこからinitialAdminPasswordを取得します。

pythonとか利用したいけど見つからないと言われる

次に困ったことはpythonプロジェクトなどをjenkinsでテストしたいけどpython3が見つからなくてテストがこけるというものでした。

これは単純で起動したコンテナはデビアンベースのLinuxが立ち上がっているのですが、そこにpython3がインストールされていないために発生していました。

そのため、先ほどのexecコマンドを用いてpython3をインストールすれば解決できました。

そもそも?

立ちあげる時にDocker fileを書いて立ち上げればこんなこともないのでは?などと思ったり。

これは今度までの宿題だな。

まとめ

環境を汚すことなく利用できてとっても便利なコンテナ。
DockerについてはLinux利用は最初LXCあるやんとか思っていたけどそれのラッパーとして動くみたいなので、Dockerで動くものを一つ作っておけばOSまたいで使えそうです。

今まで家の中の環境構築は全てVMで行なっていたのですが、これからはDockerですねw

以上、KUJIRAでした。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください