文章目录
Jenkins
shell
# https://hub.docker.com/r/jenkins/jenkins
version: '3'
services:
jenkins:
image: registry.cn-hangzhou.aliyuncs.com/zhengqing/jenkins:2.346.1 # 原镜像`jenkins/jenkins:2.346.1`
container_name: jenkins # 容器名为'jenkins'
restart: unless-stopped # 指定容器退出后的重启策略为始终重启,但是不考虑在Docker守护进程启动时就已经停止了的容器
volumes:
# 数据卷挂载路径设置,将本机目录映射到容器目录 (下面映射可在容器中执行宿主机docker命令)
- "/usr/bin/docker:/usr/bin/docker"
- "/var/run/docker.sock:/var/run/docker.sock"
- "/usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7"
# - "/usr/local/bin/docker-compose:/usr/local/bin/docker-compose" # 无效
- "./jenkins/jenkins_home:/var/jenkins_home"
# ThinBackup插件备份jenkins配置存储目录
- "./jenkins/jenkins_config:/var/jenkins_config"
# 解决jenkins安装插件报错: An error occurred during installation: No such plugin: cloudbees-folder
# 下载地址 http://ftp.icm.edu.pl/packages/jenkins/plugins/cloudbees-folder/
- "./jenkins/jenkins_home/war/META-INF/detached-plugins/cloudbees-folder.hpi:/var/jenkins_home/war/META-INF/detached-plugins/cloudbees-folder.hpi"
environment: # 设置环境变量,相当于docker run命令中的-e
TZ: Asia/Shanghai
LANG: en_US.UTF-8
JAVA_OPTS: '-Xmx2048M -Xms2048M -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:MaxNewSize=128m -Djava.util.logging.config.file=/var/jenkins_home/log.properties -Duser.timezone=Asia/Shanghai'
user: root # 使用root权限运行容器【docker中通过`-u root`命令】
ports: # 映射端口
- "10000:8080"
shell
# 当前目录下所有文件赋予权限(读、写、执行)
chmod -R 777 ./jenkins
# 运行
docker-compose -f docker-compose-jenkins.yml -p jenkins up -d
访问地址:ip地址:10000
查看密码
shell
# 普通权限进入到docker容器
docker exec -it jenkins /bin/bash
# 使用root权限进入到docker容器
docker exec -it -u root jenkins /bin/bash
# 查看密码
cat /var/jenkins_home/secrets/initialAdminPassword
问题
jenkins升级问题
shell
# docker下jenkins升级只要需要替换容器中的jenkins.war文件并重启docker容器
# 1.进入docker容器,其中-u root是使用root权限登录
docker exec -u root -it jenkins /bin/bash
# 2.使用wget命令下载最新版本的jenkins.war文件
# 3.使用whereis jenkins命令查看jenkins的安装路径 `/usr/share/jenkins/jenkins.war`
# 4.使用cp命令将新的war包覆盖旧文件即可
# 5.浏览器访问ip:8080/restart 重启即可升级成功
# 备注:在进行容器部署时可以将容器的【/user/share/jenkins】目录挂载在宿主机上,以后升级只需替换jenkins.war文件即可。此种方式存在一个问题,在部署后由于宿主机的挂载文件夹为空,所以在部署后无法正常启动容器,放入jenkins.war与ref文件即可正常启动。
jenkins时区设置问题
shell
# 1.进入系统管理->脚本命令行,执行下面命令设置为上海时间(该方式重启后失效)
System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai')
# 2.在部署容器时添加参数,-e JAVA_OPTS=-Duser.timezone=Asia/Shanghai(一直有效)
配置插件更新代理
shell
# 输入网址 http://localhost:8080/pluginManager/advanced
# 进入该页面最底下,找到【Update Site】,
# 把其中的URL改成清华大学的Jenkins插件镜像地址:
# http://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
安装WebHooks并启用
shell
# 在Jenkins插件管理搜索安装插件Generic Webhook Trigger
# 构建触发器启用钩子后地址: http://139.9.205.69:10000//generic-webhook-trigger/invoke?token=xxxx
# 为了安全可开启Generic Webhook Trigger Whitelist
配置Jenkins参数
shell
# 打开updates文件夹中的default.json
# 把connectionCheckUrl中的http://www.google.com修改为http://www.baidu.com
# 把url中的http://updates.jenkins.io/download替换为http://mirrors.tuna.tsinghua.edu.cn/jenkins
解决jenkins安装插件报错: An error occurred during installation: No such plugin: cloudbees-folder
shell
到国内清华大学开源软件镜像站的插件中心,下载这个插件
Index of /jenkins/plugins/skip-certificate-check/latest/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror