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

文章目录

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

相关推荐
云深时现月1 小时前
jenkins使用cli发行uni-app到h5
前端·uni-app·jenkins
Vanish_ran1 小时前
gitlab与jenkins
运维·gitlab·jenkins
微刻时光2 小时前
Docker部署Nginx
运维·nginx·docker·容器·经验
陈小肚2 小时前
k8s 1.28.2 集群部署 docker registry 接入 MinIO 存储
docker·容器·kubernetes
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ2 小时前
Elasticsearch的查询语法——DSL 查询
大数据·elasticsearch·jenkins
A陈雷2 小时前
springboot整合elasticsearch,并使用docker desktop运行elasticsearch镜像容器遇到的问题。
spring boot·elasticsearch·docker
小扳2 小时前
Docker 篇-Docker 详细安装、了解和使用 Docker 核心功能(数据卷、自定义镜像 Dockerfile、网络)
运维·spring boot·后端·mysql·spring cloud·docker·容器
皮锤打乌龟10 小时前
(干货)Jenkins使用kubernetes插件连接k8s的认证方式
运维·kubernetes·jenkins
南猿北者11 小时前
docker Network(网络)
网络·docker·容器
sam-12312 小时前
k8s上部署redis高可用集群
redis·docker·k8s