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

MyMemoWiki

「Jenkins」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
 
(同じ利用者による、間の28版が非表示)
1行目: 1行目:
 
| [[Docker]]  |
 
| [[Docker]]  |
 
==Jenkins==
 
==Jenkins==
 +
{{amazon|B07JGWKRZQ}}
 
===Install([[Docker]])===
 
===Install([[Docker]])===
 
----
 
----
 
====ブリッジネットワークの作成====
 
====ブリッジネットワークの作成====
 
*https://www.jenkins.io/doc/book/installing/docker/
 
*https://www.jenkins.io/doc/book/installing/docker/
 +
*https://www.typea.info/blog/index.php/2021/05/24/ubunt_docker_tensorflow_other_host_bridge/
 
<pre>
 
<pre>
 
$ docker network create jenkins
 
$ docker network create jenkins
21行目: 23行目:
 
$ docker run \
 
$ docker run \
 
   --name jenkins-docker \
 
   --name jenkins-docker \
  --rm \
 
 
   --detach \
 
   --detach \
 
   --privileged \
 
   --privileged \
48行目: 49行目:
 
local    jenkins-data
 
local    jenkins-data
 
local    jenkins-docker-certs
 
local    jenkins-docker-certs
 +
</pre>
 +
*確認3
 +
<pre>
 +
$ 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"
 +
    }
 +
]
 
</pre>
 
</pre>
  
90行目: 106行目:
 
$ docker run \
 
$ docker run \
 
   --name jenkins-blueocean \
 
   --name jenkins-blueocean \
   -- rm
+
   --rm \
 
   --detach \
 
   --detach \
 
   --network jenkins \
 
   --network jenkins \
97行目: 113行目:
 
   --env DOCKER_CERT_PATH=/certs/client \
 
   --env DOCKER_CERT_PATH=/certs/client \
 
   --env DOCKER_TLS_VERIFY=1 \
 
   --env DOCKER_TLS_VERIFY=1 \
  --publish 8080:8080 \
 
  --publish 50000:50000 \
 
 
   --volume jenkins-data:/var/jenkins_home \
 
   --volume jenkins-data:/var/jenkins_home \
 
   --volume jenkins-docker-certs:/certs/client:ro \
 
   --volume jenkins-docker-certs:/certs/client:ro \
109行目: 123行目:
 
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
 
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
 
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
 +
</pre>
 +
 +
<pre>
 +
$ 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  -- 
 
</pre>
 
</pre>
  
117行目: 143行目:
 
</pre>
 
</pre>
  
====Jenkins homeディレクトリへのアクセス====
+
===Jenkins Setup===
*docker run で、Jenkinsのホーム・ディレクトリ(/var/jenkins_home)をマッピングした場合、ローカルマシンからアクセスできる
 
====Jenkins Setup====
 
 
----
 
----
 
*アクセスすると、ログにアクセスパスワードが出力される
 
*アクセスすると、ログにアクセスパスワードが出力される
127行目: 151行目:
 
</pre>
 
</pre>
 
[[File:jenkins_log_password.png|500px]]
 
[[File:jenkins_log_password.png|500px]]
 +
 +
====推奨プラグインの一括インストール====
 +
 +
[[File:jenkins_setup_install_sugest_plugin.png|500px]]
 +
 +
====準備完了====
 +
 +
[[File:jenkins_ready.png|500px]]
 +
 +
=====Web画面からの再起動=====
 +
<pre>
 +
http://192.168.0.16:8080/safeRestart
 +
</pre>
 +
 +
====日本語化====
 +
*日本語化は、ブラウザの言語に依存。Edge(Chrome)の例
 +
[[File:jenkins_japanese.png|500px]]
 +
 +
==JOBの作成==
 +
===新規フリースタイルプロジェクトのビルド===
 +
[[File:jenkins_job01.png|600px]]
 +
 +
===ソースコード管理[[Git]]===
 +
[[File:jenkins_job02.png|600px]]
 +
 +
[https://developer.aiming-inc.com/infra/jenkins-github-webhook-collaboration/ JenkinsとGitHubのWebhook連携の整理]
 +
 +
[[File:jenkins_job03.png|600px]]

2021年6月3日 (木) 13:07時点における最新版

| Docker |

Jenkins

Install(Docker)


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

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

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


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

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

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

Dockerコンテナとして実行

  1. $ docker run \
  2. --name jenkins-blueocean \
  3. --rm \
  4. --detach \
  5. --network jenkins \
  6. --env DOCKER_HOST=tcp://docker:2376 \
  7. --env DOCKER_CERT_PATH=/certs/client \
  8. --env DOCKER_TLS_VERIFY=1 \
  9. --publish 8080:8080 \
  10. --publish 50000:50000 \
  11. --volume jenkins-data:/var/jenkins_home \
  12. --volume jenkins-docker-certs:/certs/client:ro \
  13. myjenkins-blueocean:1.1
  1. $ docker run \
  2. --name jenkins-blueocean \
  3. --rm \
  4. --detach \
  5. --network jenkins \
  6. --ip 192.168.0.16 \
  7. --env DOCKER_HOST=tcp://docker:2376 \
  8. --env DOCKER_CERT_PATH=/certs/client \
  9. --env DOCKER_TLS_VERIFY=1 \
  10. --volume jenkins-data:/var/jenkins_home \
  11. --volume jenkins-docker-certs:/certs/client:ro \
  12. myjenkins-blueocean:1.1
  • 確認
  1. $ docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. 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
  4. 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
  1. $ nmcli con show
  2. NAME UUID TYPE DEVICE
  3. ctc-a-d17c80 46a14c17-83f7-4d08-bf9d-c9e1aeba3b81 wifi wlp2s0
  4. br0 cd44f828-91d2-44a9-a0ad-5043d4c73f1d bridge br0
  5. docker0 6c866865-d7ba-4c3c-836a-548630f40c71 bridge docker0
  6. mpqemubr0 3ccae181-8936-4a15-bee2-7a1e07f3db36 bridge mpqemubr0
  7. bridge-slave-enp1s0f1 21562732-1f1c-49b4-a7ba-e6469d46f49b ethernet enp1s0f1
  8. ctc-g-d17c80 21fe84f8-fefd-4f25-a922-e098b6d49e3d wifi --
  9. netplan-enp1s0f1 fb8733d5-5b9d-3c3c-ad52-c077a300b661 ethernet --

Dockerコンテナに接続

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

Jenkins Setup


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

Jenkins password.png

  1. $ docker logs jenkins-blueocean

Jenkins log password.png

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

Jenkins setup install sugest plugin.png

準備完了

Jenkins ready.png

Web画面からの再起動
  1. http://192.168.0.16:8080/safeRestart

日本語化

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

Jenkins japanese.png

JOBの作成

新規フリースタイルプロジェクトのビルド

Jenkins job01.png

ソースコード管理Git

Jenkins job02.png

JenkinsとGitHubのWebhook連携の整理

Jenkins job03.png