Docker 搭建 Jenkins
背景
在日常开发中,项目发布与部署,版本的迭代部署,隐形中占据了很长时间,特别是一些前端项目,样式的更改很频繁,这就需要我们频繁的发布版本,有没有一种很好的解决方式呢?Jenkins 就是这样一个持续平台,主要包含
普通项目构建
,流水线构建
,多分支流水构建
。
准备工作
由于在项目部署中服务器多是 CentOs
,在这里我也采用 CentOS
搭建
前提条件
- 检查是否安装了
Docker
,如果本机没有请移步 Docker安装
安装 Jenkins
下载镜像
1 | docker pull jenkins |
启动 Jenkins
1 | docker run -u root -d --name jenkins --restart=always -p 8080:8080 \ |
设置宿主机的
8080
映射端口,并且挂载数据卷到宿主机/home/jenkins_home
目录下
查看运行中的容器docker ps
1 | CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES |
在这个过程中可能会遇到容器运行失败,通过
docker logs jenkins
查看日志
1 | cannot touch '/var/jenkins_home/copy_reference_file.log': Permission deniedCan not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions |
出现上面这种报错信息是因为volume 权限问题,需要修改下目录权限, 因为当映射本地数据卷时,/home/docker/jenkins目录的拥有者为root用户,而容器中jenkins user的uid为1000 执行如下命令即可
方式一
1 | chown -R 1000:1000 /home/docker/jenkins |
方式二
1 | docker run -d --name jenkins -p 9090:8080 -v /home/jenkins_home:/var/jenkins_home -u 0 jenkins |
初始化 Jenkins
容器启动成功后输入 http://服务器地址:8090
,如果无法访问,请检查一下防火墙端口是否开放,如果是云服务器还需要检查安全组设置,第一次访问图片如下所示:
首次启动jenkins需要输入密码,需要进入容器内获取密码。密码位于
/var/jenkins_home/secrets/initialAdminPassword
。
方式一
1 | docker exec -it jenkins /bin/bash |
获取密码
1 | cat /var/jenkins_home/secrets/initialAdminPassword |
方式二
由于我们将
/var/jenkins_home
– 挂载到–>/home/jenkins_home
所以也可以直接cat /home/jenkins_home/secrets/initialAdminPassword
获取密码。
输入密码过后会进入下面界面: 安装插件
等待安装会出现一下界面: 不用关错误信息,直接跳过。
设置jenkins 的默认登录账号和密码,就可以进入仪表盘了。
插件安装失败
进入jenkins的主页面右上角可能会出现一些报错信息,主要是提示jenkins 需要的某些插件没有安装,或者说jenkins版本太低了,插件无法使用这个时候我们需要先升级jenkins做一个升级。
方式一: 自动升级
方式二: 手动升级
Jenkins的官网下载好最新jar包上传到服务器,也可以使用wget命令。
1 | wget http://updates.jenkins-ci.org/download/war/2.239/jenkins.war |
Jenkins的更新主要是替换jenkins镜像里面的war包 ,我们可以把下载好的war包使用docker cp直接进行复制命令如下
1 | docker cp jenkins.war jenkins:/usr/share/jenkins |
更换插件源
Update Site 中更改插件源, 保存提交
1 | https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json |
安装必要插件
- Localization: Chinese (Simplified) 1.0.14 汉化包 搜索关键字 chinese
- Publish Over SSH 1.20.1 搜索关键字 ssh
- DingTalk 钉钉通知 2.3.0
到这里基本上就可以正常使用了 jenkins 发布项目了