实现Jenkins分布式,Docker部署Agent荐

## 实现Jenkins分布式,Docker部署Agent
```
1. 中小型公司,很多就是单机跑一个项目,没有什么高可用,没有swarm,k8s。
2. 由于Jenkins一次性需要构建多个项目,这样导致cpu 居高,解决方法为:slave 方式
3. 用docker-compose方式管理 slave
```分布式存储
###ins 需要踩坑点说明
```
1. 端口问题,使用docker 运行的Jenkins,需要开放 50000 端口,映射到宿主机
2. Jenkins全局安全配置问题。需要前往 系统管理==》全局安全配置,找到 “instagram 代理 ” 指定50000 端口。有防火墙,或安全组,需要放行。
3. Jeninterestkins 如果是使用反向代理访问的,配置 slave 节点需要 指定 从节点 启动方式=jenkins自动部署=》Tunnel 连接位置,部署此位置需要填写 你后端的 IP+端口地址 ,列如:8.8.8.8:50000
`jenkins有什么用``
## 开始配置
```
1. 点击 系统管理--节点管理--新建节点
2. 配置从节点 信息,如下图:
```
![](https://s4.51cto.com/images/blog/202105/25/61b799d53945ca0071fa0b3d7687524a.jpg?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2adocker容器5a6i,coljenkins停止构建命令or_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
-----
`3保jenkins教程存后显示如下图:
配置完毕`
![](https://s4.51cto.com/images/blog/202105/25/037206c2ab1eca883678cdocker常用命令990599a617d.png?x-oss-process=image/watermark,size_14,text_Qjenkins停止构建命令DUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_1部署图0,shadow_20,type_ZmFuZ3poZW5naGV分布式事务pdGk=)
-----
## 制作Dockerfile,docker-compose.yml 文件
```
1. 下载 上图 链接中 agent.jar 文件 至你的 sjenkins教程lave 节点
2. 编写 Dockerfile 文件,制作 镜像,如下:
```
`vim Dockerfile`
```
FROM java:8
ADD agent.jar /usr/local/src
RUN chmod +部署与布署哪个正确x /usr/local/src/*部署与布署哪个正确
RUN mkdir /usr/local/logs
WORKDIR /usr/local/src
```
```
3指定build 命令: `docker bdockeruild -t jdocker常用命令enkins-slave-test:v1 .`
4编写 docker-compose.yml分布式 文件
```
-----
vim docker-compose.yml
```
verinstagramsion: '2'
services:
jenkins:
image: jenkins-slave-test:v1
container_name: jenkindocker面试题及答案s_agent
restart: always
volumeinto1s:
- '/var/lib/jenkins:/var/lib/jenkins'
- '/var/lib/jenkins/apachine-maven-3.6.3:/usr/local/maven'
command: java -jar agent.jar -jndocker是干什么的lpUrl http://jenkins.mitaiot.com/computer/test10.10/slave-agent.jnlp -secret b8fb64b22ef77a231811aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -workDir "/var/lib/jenkijenkins停止构建命令ns"
```
-----
**上述dockerhub部署会件中 挂载了 maven ,因为后面需要 使用此工具打包。如不需要者自行替换。执行启动命令: docker-compose up -d**
-----
## 编写 pipline 脚本,验证
**1. 可以看见 slave 已经在线,如下图:**
![](https://individuals4.51cto.com/images/blog/202分布式光伏105/25/3e0b8c58906368ed47049010d280ad95.png?insx-oss-分布式系统process=im分布式数据库a部署的意思ge/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,colordocker是干什么的_FFFFFF,t_100,g_se,x_10,y_jenkins自动部署10,shadow_20,type_ZmFuZ部署工作与布署工作3poZW5naGVpdGk=)
-----
2. 创建项目,编写 pipline 脚本
```
pipeline {
agent {label 'test10.10' }
stages {
stage部署会和布署会的区别('Git Clone') {
steps {
echo 'Gitdocker容器 Clone Start'
deleteDir()
sleep 2
git branch: 'test', credentialsId: 'f436fc9d-0d0c-4e1e-a8a3-d797bee9部署的拼音7910', url: 'http://gitlab.mitaiot.com/qiyewainstagramibao/JavaCJ.git'
}
}
stage('Build') {
steps {
echo "Start Build"
sh "cd /var/lib/jenkins/workspace/mita_platdockerformc-lyh;/usr/local/m分布式aven/bin/mvn clean package -Dmaven.test.skip=true"
sh "pwd"
}
}
}
}
```
## 结果
**在 slave 节点会有相应文件创建,并且项目也拉取,编译,部署工作与布署工作打包**