一、运行jenkins
这里我们选择Jenkins中国定制版的镜像是因为下载jenkins的插件快不会失败,因为插件源换成了国内的
docker run -itd \
-p 8080:8080 -p 50000:50000 \
--name jenkins \
--privileged=true -u root \
--restart=always \
-v /data/jenkins:/var/jenkins_home \
jenkinszh/jenkins-zh:lts
备注: 8080是web端口;50000是jenkins的slave节点连接jenkins的master节点需用到的
容器运行后我们打开页面,我的宿主机ip是192.168.15.9
,容器的8080
端口映射到了宿主机8080
端口,所以我们通过http://192.168.15.9:8080/
访问web服务,第一次访问需要解锁jenkins输入管理员密码
因为我们把容器的/var/jenkins_home
映射到了宿主机的/data/jenkins
目录,所以通过以下方式获取初始密码,copy到web
$ cat /data/jenkins/secrets/initialAdminPassword
19d2df6c2cc64cd4828bac4506107071
安装推荐的插件
等待插件安装完成后,创建一个管理员账号
实例配置默认即可
二、添加节点
jenkins可以分布式构建代码,比如有两个项目需要打包 ,我们可以让第一个项目在A节点打包,另一个项目在B节点打包,这样可以互不干扰并发打包两个项目了。
新增节点
节点名称唯一,不能重复
以下是两种不同的方式添加slave节点
1、ssh方式添加节点(节点可以是物理机也可以是容器,此处物理机)
# step1: 在jenkins容器所在的宿主机先生成ssh key
$ ssh-keygen # 一直 enter 确认即可
# step2: 把整个".ssh"目录copy到/var/jenkins_home
$ cp -r ~/.ssh /data/jenkins
# step3: 把 ~/.ssh/id_rsa.pub 内容append到slave节点机的 ~/.ssh/authorized_keys文件
# step4: 把 ~/.ssh/id_rsa 内容copy到新增节点的 "Credentials"私钥中
备注:在新增节点的表单中启动方式选“Launch agent via ssh”,并点击高级按钮设置slave节点机器的java命令路径(which java)
以下截图是上面步骤的补充说明
设置节点
- 远程工程目录:会自动创建填写的目录
- 主机:节点机ip
- Credentials:没有凭证的话需要添加
添加凭证 - Username:必须是ssh key的用户
最后启动节点就可以了
节点就在线了
2、通过java web代理方式添加节点(节点可以物理机也可以容器,此处容器)
# step1:启动一个ubuntu18.04镜像的容器
$ sudo docker run -dit --name ubuntu --privileged=true ubuntu:18.04 /bin/bash
# step2:进入容器
$ sudo docker exec -it ubuntu /bin/bash
# step3:安装依赖(容器必须安装了java、ssh、git、wget)
$ apt update
# 安装wget
$ apt-get -y install wget
# 安装java
$ apt install -y default-jre
$ apt install -y openjdk-8-jre-headless
# 安装ssh
$ apt install -y openssh-server
# 安装git
$ apt install -y git
# step4: 下载"agent.jar"(agent.jar包连接在jenkins节点详情)
$ wget http://192.168.15.9:8888/jnlpJars/agent.jar
# step4: 连接jenkins master(命令在jenkins节点详情)
$ java -jar agent.jar -jnlpUrl http://192.168.15.9:8888/computer/docker/slave-agent.jnlp -secret 5372c28e77f561b8cd85b579316636228dcc34b357a628d56609edc104cb65d9 -workDir "/root/go"
最后在jenkins节点管理中启动节点即可