基于Docker+Jenkins+Gitl搭建持续集成环境(部分关键笔记)

文章目录

      • Jenkins
        • 查看密码
      • 问题
        • jenkins升级问题
        • jenkins时区设置问题
        • 配置插件更新代理
        • 安装WebHooks并启用
        • 配置Jenkins参数
      • 解决jenkins安装插件报错: An error occurred during installation: No such plugin: cloudbees-folder

Jenkins

# 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"

# 当前目录下所有文件赋予权限(读、写、执行)
chmod -R 777 ./jenkins
# 运行
docker-compose -f docker-compose-jenkins.yml -p jenkins up -d

访问地址:ip地址:10000

查看密码

# 普通权限进入到docker容器
docker exec -it jenkins /bin/bash
# 使用root权限进入到docker容器
docker exec -it -u root jenkins /bin/bash
# 查看密码
cat /var/jenkins_home/secrets/initialAdminPassword

问题

jenkins升级问题

# 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时区设置问题

# 1.进入系统管理->脚本命令行,执行下面命令设置为上海时间(该方式重启后失效)
System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai') 
# 2.在部署容器时添加参数,-e JAVA_OPTS=-Duser.timezone=Asia/Shanghai(一直有效)

配置插件更新代理

# 输入网址   http://localhost:8080/pluginManager/advanced 
# 进入该页面最底下,找到【Update Site】,
# 把其中的URL改成清华大学的Jenkins插件镜像地址:
# http://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json 

安装WebHooks并启用

# 在Jenkins插件管理搜索安装插件Generic Webhook Trigger
# 构建触发器启用钩子后地址: http://139.9.205.69:10000//generic-webhook-trigger/invoke?token=xxxx
# 为了安全可开启Generic Webhook Trigger Whitelist

配置Jenkins参数

# 打开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

到国内清华大学开源软件镜像站的插件中心,下载这个插件

Index of /jenkins/plugins/skip-certificate-check/latest/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

你可能感兴趣的:(docker,docker,jenkins,ci/cd)