Jenkins 導入

created at 2019-08-19 17:47+0900

Jenkins とは、テストやらビルドやらデプロイやらの自動化をお手伝いしてくれる執事さん。カッチョよく言うと継続的インテグレーションツール。

https://jenkins.io/

以下、Jenkinsの導入手順についての覚書。

docker-composeファイル作成

次のようにdocker-compose.ymlファイルを作成する。

version: '3.7'
services:
  jenkins:
    image: jenkinsci/blueocean
    container_name: jenkins
    environment:
      - VIRTUAL_HOST=jenkins.r-square.net
      - VIRTUAL_PORT=8080
    expose:
      - 8080
      - 50000
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /var/docker.d/jenkins/data:/var/jenkins_home
    logging:
      driver: journald
    networks:
      - common_link
    restart: always
networks:
  common_link:
    external: true
  • docker hub にはjenkinsイメージが何種類かあってややこしい。

    • jenkins -> Docker オフィシャルイメージ。しかしもう中の人が飽きてしまったらしい。

    • jenkins/jenkins:lts -> これ推奨らしい。

    • jenkinsci/blueocean -> GUIでパイプライン作れちゃうらしい。

  • networksのcommon_linkと環境変数VIRTUAL_HOST,VIRTUAL_PORTはnginx-proxyに転送してもらうための設定。

  • /etc/localtimeはコンテナ内のタイムゾーンをホスト側へ合わせるための設定。

  • コンテナ内の/var/jenkins_homeにjenkins関係のデータがモリモリ作られるので、ホスト側(/var/docker.d/jenkins/data)へつなぐ。

  • loggingドライバーはお好みで設定。

ホスト側のJenkinsディレクトリの権限設定

jenkinsコンテナ内ではuid:1000,gid:1000で実行されているので、ホスト側のJenkinsディレクトリのパーミッションを同じuid,gidにしておく。(そうしないとjenkinsの起動に失敗する。)

sudo chown 1000:1000 /var/docker.d/jenkins/data

docker-compose 起動

バックグラウンドで起動させる。

sudo docker-compose up -d

まとまらないまとめ

Jenkinsさんは「ホスト側ディレクトリのパーミッションを変更したくなければ自分でDockerfile書けばいいじゃない」って言うスタンスなんだろうなあ。