| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

Jenkins

提供: MyMemoWiki
2021年5月29日 (土) 15:17時点におけるPiroto (トーク | 投稿記録)による版 (→‎GitHub連携)
ナビゲーションに移動 検索に移動

| Docker |

Jenkins

Install(Docker)


ブリッジネットワークの作成

$ docker network create jenkins
$ docker network create --driver bridge --subnet=192.168.0.0/24 --gateway=192.168.0.23 --opt "com.docker.network.bridge.name"="br0" jenkins
fcdef22003bdc75011a53a8a0e71ec8a992f17b15ce671b8064753548541f53e

Jenkins内部からDockerを利用可能にする


  • Docker in Docker docker:dind
    • Docker コンテナ(Jenkins 稼動)上で Docker コンテナ(テスト用DB 稼動)を動かすことになります。これを Docker in Docker といいます
    • Jenkins コンテナのベースイメージとして docker:dind を使用すると、コンテナ上から docker を実行できるようになります
$ docker run \
  --name jenkins-docker \
  --detach \
  --privileged \
  --network jenkins \
  --network-alias docker \
  --ip 192.168.0.15  \
  --env DOCKER_TLS_CERTDIR=/certs \
  --volume jenkins-docker-certs:/certs/client \
  --volume jenkins-data:/var/jenkins_home \
  --publish 2376:2376 \
  docker:dind \
  --storage-driver overlay2
  • 確認
$ docker ps
CONTAINER ID   IMAGE         COMMAND                  CREATED         STATUS         PORTS                                                 NAMES
f15315bf5752   docker:dind   "dockerd-entrypoint.…"   6 minutes ago   Up 6 minutes   2375/tcp, 0.0.0.0:2376->2376/tcp, :::2376->2376/tcp   jenkins-docker
  • 確認2
$ docker volume ls
DRIVER    VOLUME NAME
local     58132856bc0429402f20086a302ff73aa1dc6d06dbc8363cac0d24431d3b11c1
local     jenkins-data
local     jenkins-docker-certs
  • 確認3
$ docker volume inspect jenkins-data
[
    {
        "CreatedAt": "2021-05-28T20:52:44+09:00",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/jenkins-data/_data",
        "Name": "jenkins-data",
        "Options": null,
        "Scope": "local"
    }
]

公式Dockerイメージをカスタマイズ

  • 以下の内容を、”Dockerfile" として保存
FROM jenkins/jenkins:2.277.4-lts-jdk11
USER root
RUN apt-get update && apt-get install -y apt-transport-https \
       ca-certificates curl gnupg2 \
       software-properties-common
RUN curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
RUN apt-key fingerprint 0EBFCD88
RUN add-apt-repository \
       "deb [arch=amd64] https://download.docker.com/linux/debian \
       $(lsb_release -cs) stable"
RUN apt-get update && apt-get install -y docker-ce-cli
USER jenkins
RUN jenkins-plugin-cli --plugins "blueocean:1.24.6 docker-workflow:1.26"
  • "myjenkins-blueocean:1.1" など意味のあるタグを付与して実行
$ docker build -t myjenkins-blueocean:1.1 .

Dockerコンテナとして実行

$ docker run \
  --name jenkins-blueocean \
  --rm \
  --detach \
  --network jenkins \
  --env DOCKER_HOST=tcp://docker:2376 \
  --env DOCKER_CERT_PATH=/certs/client \
  --env DOCKER_TLS_VERIFY=1 \
  --publish 8080:8080 \
  --publish 50000:50000 \
  --volume jenkins-data:/var/jenkins_home \
  --volume jenkins-docker-certs:/certs/client:ro \
  myjenkins-blueocean:1.1 
$ docker run \
  --name jenkins-blueocean \
  --rm  \
  --detach \
  --network jenkins \
  --ip 192.168.0.16  \
  --env DOCKER_HOST=tcp://docker:2376 \
  --env DOCKER_CERT_PATH=/certs/client \
  --env DOCKER_TLS_VERIFY=1 \
  --volume jenkins-data:/var/jenkins_home \
  --volume jenkins-docker-certs:/certs/client:ro \
  myjenkins-blueocean:1.1 
  • 確認
$ docker ps
CONTAINER ID   IMAGE                     COMMAND                  CREATED         STATUS         PORTS                                                                                      NAMES
295ed6908221   myjenkins-blueocean:1.1   "/sbin/tini -- /usr/…"   4 seconds ago   Up 3 seconds   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 0.0.0.0:50000->50000/tcp, :::50000->50000/tcp   jenkins-blueocean
f15315bf5752   docker:dind               "dockerd-entrypoint.…"   6 hours ago     Up 6 hours     2375/tcp, 0.0.0.0:2376->2376/tcp, :::2376->2376/tcp                                        jenkins-docker
$ nmcli con show
NAME                   UUID                                  TYPE      DEVICE    
ctc-a-d17c80           46a14c17-83f7-4d08-bf9d-c9e1aeba3b81  wifi      wlp2s0    
br0                    cd44f828-91d2-44a9-a0ad-5043d4c73f1d  bridge    br0       
docker0                6c866865-d7ba-4c3c-836a-548630f40c71  bridge    docker0   
mpqemubr0              3ccae181-8936-4a15-bee2-7a1e07f3db36  bridge    mpqemubr0 
bridge-slave-enp1s0f1  21562732-1f1c-49b4-a7ba-e6469d46f49b  ethernet  enp1s0f1  
ctc-g-d17c80           21fe84f8-fefd-4f25-a922-e098b6d49e3d  wifi      --        
netplan-enp1s0f1       fb8733d5-5b9d-3c3c-ad52-c077a300b661  ethernet  --   

Dockerコンテナに接続

$ docker exec -it jenkins-blueocean /bin/bash
jenkins@295ed6908221:/$ 

Jenkins Setup


  • アクセスすると、ログにアクセスパスワードが出力される

Jenkins password.png

$ docker logs jenkins-blueocean

Jenkins log password.png

推奨プラグインの一括インストール

Jenkins setup install sugest plugin.png

準備完了

Jenkins ready.png

日本語化

  • 日本語化は、ブラウザの言語に依存。Edge(Chrome)の例

Jenkins japanese.png

GitHub連携


  • https://ics.media/entry/2869/
  • 「Jenkinsの管理」->「プラグインの管理」->「利用可能」から、以下のプラグインをインストール
    • Git Plugin
    • GitHub Plugin
    • GitHub API Plugin
    • Git Client Plugin
    • Run Condition Plugin
    • Run Condition Extras Plugin
    • Build Keeper Plugin
    • Conditional BuildStep Plugin
    • Flexible Publish Plugin