用docker搭建jenkins

用docker镜像搭建jenkins

踩坑点:

  1. 配置镜像加 docker 命令和运行权限

  2. 自动化部署脚本编写

  3. pom文件未加配置,这个配置没加可能跑步起来

image-20210624203418223

安装流程

1、安装 jenkins 镜像

docker命令挂载,否则容器内部无法使用docker命令

docker run -d --restart=unless-stopped --name jenkins_954L -u root \
-v $(which docker):/usr/bin/docker \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/local/dockerinfo/jenkins:/var/jenkins_home \
-p 28080:8080 -p 50000:50000 jenkinszh/jenkins-zh

-u root
# 使用root身份去运行,避免无法执行宿主机的docker命令

-v $(which docker):/usr/bin/docker
# 将宿主机的docker命令目录挂载到jenkins容器内部
# $(which docker):动态获取当前docker命令目录

-v /var/run/docker.sock:/var/run/docker.sock
# 挂载docker容器进程通信文件到容器内
# docker.sock文件官方解释:It’s the unix socket the Docker daemon listens on by default and it can be used to communicate with the daemon from within a container.

-v /usr/local/dockerinfo/jenkins:/var/jenkins_home
# 挂载jenkins的数据目录

jenkinszh/jenkins-zh
# 为什么没用jenkins镜像,而用jenkins-zh?
# 看这个-zh也很明白了,这是中文的意思。
# 主要目的不止这个,因为jenkins的插件默认下载地址是:https://www.google.com/,这个在国内无法访问的。
# 而jenkins中文社区提供的-zh的镜像默认的下载地址是国内镜像地址。
# 也有很多别人基于jenkins二次打包,这些坑都填好了,但是我个人比较喜欢用官方的东西,不喜欢别人二次打包的镜像。
# 主要里面可能加了作者认为你需要但你并不需要的插件或者其他服务在里头,我比较喜欢自己搞。
# jenkins中文社区地址:https://jenkins-zh.cn/

2、下载完后进入挂载点修改镜像

默认是国外的镜像,需要手动修改

cd /usr/local/dockerinfo

进入宿主机挂载=>修改jenkins.model.JenkinsLocationConfiguration.xml内容改为:

http://mirror.xmission.com/jenkins/updates/update-center.json

image-20210624165549752

配置 Dockerfile,加到 workspace 的项目下

# Dockerfile
FROM java:8-alpine
ADD target/demo-jenkins.jar demo-jenkins.jar
EXPOSE 8001
ENTRYPOINT ["java", "-jar", "/demo-jenkins.jar"]

3、自动化部署脚本

#!/bin/bash
echo "开始构建jenkins-demo"

CID=$(docker ps -a | grep "jenkins-demo-server")
if [ "$CID" != "" ];then
        echo "删除现有容器"
        docker stop jenkins-demo-server
        docker rm jenkins-demo-server
fi

docker rmi jenkins-demo-server
echo "执行Dockerfile"
cd /var/jenkins_home/workspace/demo
docker build -t jenkins-demo-server .
echo "构建容器"
docker run -d --name jenkins-demo-server -p 8001:8080 jenkins-demo-server
echo "执行完成"

4、配置码云码云hooks

手动使用 rsa 配置 ssh 码云配置 ssh

私钥放jenkins,公钥放码云用于后续连接

image-20210624202826682

私钥放这

创建 maven 项目

源码拉取码云项目即可,拉取之后构建即可

绑定 webhooks 即可实现自动监听打包部署

(触发器也需要安装gitee插件)

  1. 安装 gitee 插件=>绑定 gitee =>测试连接

image-20210624220823398

  1. jenkins 工程配置

  2. 配置 webhooks,通知 jenkins 自动拉取

image-20210624221222511


5、最后测试:

IDEA push 代码

image-20210624222136396

浏览器测试=>
image-20210624222953643

posted @ 2021-06-24 20:41  `陌上殇`  阅读(334)  评论(0)    收藏  举报