基于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

相关推荐
todoitbo2 小时前
openEuler 云原生实战:Docker Compose 部署 Nextcloud 企业级私有云
docker·云原生·容器·openeuler
悟能不能悟2 小时前
登录jenkins默认用户密码
运维·jenkins
weixin_46684 小时前
Docker常用命令与操作
运维·docker·容器
摇滚侠4 小时前
零基础小白自学 Git_Github 教程,Action CI/CD 完整实践,笔记23
笔记·git·ci/cd
The star"'5 小时前
docker swarm和containerd
运维·docker·容器
❀͜͡傀儡师5 小时前
Docker部署OneTerm堡垒机
运维·docker·容器·oneterm
知秋正在9965 小时前
ElasticSearch服务端报错:Unrecognized VM option ‘UseAVX=2‘
大数据·elasticsearch·jenkins
北珣.5 小时前
docker容器-命令
运维·docker·容器
十点摆码6 小时前
使用 Jenkins + Gitee + Node 自动化部署 Vue
gitee·node.js·自动化·vue·jenkins
❀͜͡傀儡师6 小时前
使用Docker部署DashDot服务器仪表盘和Drupal
服务器·docker·容器