Jenkins入门(一)

Jenkins入门

前言:

本套教程均全部使用容器来部署,传统部署请自行搜索。

运行环境:

CentOS Linux release 7.6.1810 (Core)
Docker Version:    18.09.9
可正常访问互联网
关闭防火墙和selinux

Jenkins 容器部署

我们下载LTS版本

LTS是长期支持版本

docker run --name devops-jenkins --user=root -p 8080:8080 -p 50000:50000 -v /opt/data/jenkins_home:/var/jenkins_home  \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/local/bin/docker:/usr/bin/docker \
-d jenkins/jenkins:lts

启动一个名为devops-jenkins的容器

它的用户名为root

将宿主机8080端口与容器内部8080映射

我们将Jenkins相关配置文件挂载出来方便修改

Jenkins 配置代理

更改代理地址

进入Jenkins安装目录

编辑hudson.model.UpdateCenter.xml 文件

将其改成

<?xml version='1.1' encoding='UTF-8'?>
<sites>
  <site>
    <id>default</id>
    <url>https://updates.jenkins-zh.cn/update-center.json</url>
  </site>
</sites>

或手动进入页面配置
http://IP:8080/pluginManager/advanced

清华jenkins源地址

https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

配置密钥

需要配置对应密钥

进入

cd war/WEB-INF/update-center-rootCAs/
删除文件夹内密钥文件
rm -rf *

在文件内创建一个名为mirror-adapter.crt密钥文件

密钥文件写入以下内容

-----BEGIN CERTIFICATE-----
MIICcTCCAdoCCQD/jZ7AgrzJKTANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQGEwJD
TjELMAkGA1UECAwCR0QxCzAJBgNVBAcMAlNaMQ4wDAYDVQQKDAV2aWhvbzEMMAoG
A1UECwwDZGV2MREwDwYDVQQDDAhkZW1vLmNvbTEjMCEGCSqGSIb3DQEJARYUYWRt
aW5AamVua2lucy16aC5jb20wHhcNMTkxMTA5MTA0MDA5WhcNMjIxMTA4MTA0MDA5
WjB9MQswCQYDVQQGEwJDTjELMAkGA1UECAwCR0QxCzAJBgNVBAcMAlNaMQ4wDAYD
VQQKDAV2aWhvbzEMMAoGA1UECwwDZGV2MREwDwYDVQQDDAhkZW1vLmNvbTEjMCEG
CSqGSIb3DQEJARYUYWRtaW5AamVua2lucy16aC5jb20wgZ8wDQYJKoZIhvcNAQEB
BQADgY0AMIGJAoGBAN+6jN8rCIjVkQ0Q7ZbJLk4IdcHor2WdskOQMhlbR0gOyb4g
RX+CorjDRjDm6mj2OohqlrtRxLGYxBnXFeQGU7wWjQHyfKDghtP51G/672lXFtzB
KXukHByHjtzrDxAutKTdolyBCuIDDGJmRk+LavIBY3/Lxh6f0ZQSeCSJYiyxAgMB
AAEwDQYJKoZIhvcNAQELBQADgYEAD92l26PoJcbl9GojK2L3pyOQjeeDm/vV9e3R
EgwGmoIQzlubM0mjxpCz1J73nesoAcuplTEps/46L7yoMjptCA3TU9FZAHNQ8dbz
a0vm4CF9841/FIk8tsLtwCT6ivkAi0lXGwhX0FK7FaAyU0nNeo/EPvDwzTim4XDK
9j1WGpE=
-----END CERTIFICATE-----

重启Jenkins即可正常安装插件

Jenkins 添加节点(静态)

进入节点管理

进入管理页面后点击节点管理

新建节点

填写节点名称 选择固定节点 确认

填写Node相关信息


启动方式
这里选择使用java web来启动添加agent

保存

获取token

保存后点击刚刚创建的节点机器

可以看到获取到的secret-token

-secret 31e527895c5e86c13c572325752fb52eaea3c142ff21a81a50478b1d455a05fa 

添加节点

被控制节点需要拥有java运行环境

[root@qwq java]# java -version
java version "1.8.0_221"
Java(TM) SE Runtime Environment (build 1.8.0_221-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)

下载agent.jar

复制agent.jar下载路径

保存到agent节点

wget http://192.168.1.6:8080/jnlpJars/agent.jar

复制jenkins-agent启动命令

java -jar agent.jar -jnlpUrl http://192.168.1.6:8080/computer/build/slave-agent.jnlp -secret 31e527895c5e86c13c572325752fb52eaea3c142ff21a81a50478b1d455a05fa -workDir "/home/jk_home"

在要被控制节点执行即可

前台启动日志

[root@qwq ~]# java -jar agent.jar -jnlpUrl http://192.168.1.6:8080/computer/build/slave-agent.jnlp -secret 31e527895c5e86c13c572325752fb52eaea3c142ff21a81a50478b1d455a05fa -workDir "/home/jk_home"
九月 09, 2020 4:31:18 下午 org.jenkinsci.remoting.engine.WorkDirManager initializeWorkDir
信息: Using /home/jk_home/remoting as a remoting work directory
九月 09, 2020 4:31:18 下午 org.jenkinsci.remoting.engine.WorkDirManager setupLogging
信息: Both error and output logs will be printed to /home/jk_home/remoting
九月 09, 2020 4:31:18 下午 hudson.remoting.jnlp.Main createEngine
信息: Setting up agent: build
九月 09, 2020 4:31:18 下午 hudson.remoting.jnlp.Main$CuiListener <init>
信息: Jenkins agent is running in headless mode.
九月 09, 2020 4:31:18 下午 hudson.remoting.Engine startEngine
信息: Using Remoting version: 4.3
九月 09, 2020 4:31:18 下午 org.jenkinsci.remoting.engine.WorkDirManager initializeWorkDir
信息: Using /home/jk_home/remoting as a remoting work directory
九月 09, 2020 4:31:18 下午 hudson.remoting.jnlp.Main$CuiListener status
信息: Locating server among [http://192.168.1.6:8080/]
九月 09, 2020 4:31:19 下午 org.jenkinsci.remoting.engine.JnlpAgentEndpointResolver resolve
信息: Remoting server accepts the following protocols: [JNLP4-connect, Ping]
九月 09, 2020 4:31:19 下午 hudson.remoting.jnlp.Main$CuiListener status
信息: Agent discovery successful
  Agent address: 192.168.1.6
  Agent port:    50000
  Identity:      c4:7d:ab:6b:6b:23:94:80:18:92:d9:5d:a2:cf:49:38
九月 09, 2020 4:31:19 下午 hudson.remoting.jnlp.Main$CuiListener status
信息: Handshaking
九月 09, 2020 4:31:19 下午 hudson.remoting.jnlp.Main$CuiListener status
信息: Connecting to 192.168.1.6:50000
九月 09, 2020 4:31:19 下午 hudson.remoting.jnlp.Main$CuiListener status
信息: Trying protocol: JNLP4-connect
九月 09, 2020 4:31:20 下午 hudson.remoting.jnlp.Main$CuiListener status
信息: Remote identity confirmed: c4:7d:ab:6b:6b:23:94:80:18:92:d9:5d:a2:cf:49:38
九月 09, 2020 4:31:21 下午 hudson.remoting.jnlp.Main$CuiListener status
信息: Connected

手动刷新一下页面

添加容器节点

我们需要以下镜像

https://hub.docker.com/r/jenkins/jnlp-slave

官方给出在linux运行jenkins-agent命令

docker run --init jenkins/inbound-agent -url http://jenkins-server:port <secret> <agent name>

Note: --init is necessary for correct subprocesses handling (zombie reaping)

初始化镜像要添加--init为了防止僵尸进程

运行命令:

docker run --init jenkins/jnlp-slave -url http://39.100.134.17:8080 -workDir=/opt/java c479f0044b37421ab5576580b774d3e3469ba971758956526b86300c7359f141 build

运行结果

Jul 15, 2020 2:14:46 AM hudson.remoting.jnlp.Main createEngine
INFO: Setting up agent: build
Jul 15, 2020 2:14:46 AM hudson.remoting.jnlp.Main$CuiListener <init>
INFO: Jenkins agent is running in headless mode.
Jul 15, 2020 2:14:46 AM hudson.remoting.Engine startEngine
INFO: Using Remoting version: 4.3
Jul 15, 2020 2:14:46 AM hudson.remoting.Engine startEngine
WARNING: No Working Directory. Using the legacy JAR Cache location: /home/jenkins/.jenkins/cache/jars
Jul 15, 2020 2:14:47 AM hudson.remoting.jnlp.Main$CuiListener status
INFO: Locating server among [http://39.100.134.17:8080]
Jul 15, 2020 2:14:47 AM org.jenkinsci.remoting.engine.JnlpAgentEndpointResolver resolve
INFO: Remoting server accepts the following protocols: [JNLP4-connect, Ping]
Jul 15, 2020 2:14:47 AM hudson.remoting.jnlp.Main$CuiListener status
INFO: Agent discovery successful
  Agent address: 39.100.134.17
  Agent port:    50000
  Identity:      ca:fe:53:c4:9f:a5:1e:a4:72:68:59:ad:ad:dc:bd:49
Jul 15, 2020 2:14:47 AM hudson.remoting.jnlp.Main$CuiListener status
INFO: Handshaking
Jul 15, 2020 2:14:47 AM hudson.remoting.jnlp.Main$CuiListener status
INFO: Connecting to 39.100.134.17:50000
Jul 15, 2020 2:14:47 AM hudson.remoting.jnlp.Main$CuiListener status
INFO: Trying protocol: JNLP4-connect
Jul 15, 2020 2:14:47 AM hudson.remoting.jnlp.Main$CuiListener status
INFO: Remote identity confirmed: ca:fe:53:c4:9f:a5:1e:a4:72:68:59:ad:ad:dc:bd:49
Jul 15, 2020 2:14:48 AM hudson.remoting.jnlp.Main$CuiListener status
INFO: Connected

最后看到Connected基本上连接成功了

出现问题请查看端口8080与50000端口是否放行

目前是前台输出我们把它放入后台容器中执行

docker run -dit jenkins/jnlp-slave -url http://39.100.134.17:8080 -workDir=/opt/java c479f0044b37421ab5576580b774d3e3469ba971758956526b86300c7359f141 build

查看节点页面是否正常连接

Jenkins 添加节点(动态)

首先需要先安装Docker插件

https://plugins.jenkins.io/docker-plugin/

或在jenkins插件管理中搜索Docker插件并安装

docker开启API远程访问

https://blog.csdn.net/longzhanpeng/article/details/82217398

#vim /usr/lib/systemd/system/docker.service
* * * * 省略
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
* * * * 省略

重启加载Docker

systemctl daemon-reload

systemctl restart docker

测试一下

curl http://localhost:2375/version

设置一些腾讯云或阿里云的安全策略和防火墙

posted @ 2020-09-09 09:01  iXiAo9  阅读(508)  评论(0编辑  收藏  举报