基于docker部署jenkins

1. 拉镜像

和其他的部署的镜像的方式一样,通常是直接使用docker search jenkins
然后直接docker pull jenkins
此时,在安装插件的时候发现插件都安装失败,提示jenkins版本太低
正确的安装方式是pull的时候直接带上版本号,使用docker pull jenkins/jenkins:lts

2. 部署jenkins

  • 默认使用的端口号是808050000
  • 默认数据目录为:/var/jenkins_home需要映射出来持久化
  • 如果需要把jenkins单独映射一级目录,则启动时添加:JENKINS_OPTS: '--prefix=/jenkins'
  • 修改时区问题,则启动时添加:JAVA_OPTS=-Duser.timezone=Asia/Shanghai

因此使用docker部署的话,可以执行以下脚本:

docker run -d --name jenkins -p 8080:8080 -p 50000:50000 -v /jenkins_data/:/var/jenkins_home -e JENKINS_OPTS="--prefix=/jenkins" JAVA_OPTS=-Duser.timezone=Asia/Shanghai

使用docker-compose时,xml为:

jenkins:
  image: docker.io/jenkins/jenkins:lts
  ports:
    - 8080:8080
    - 50000:50000
  restart: always
  volumes:
    - /jenkins_data/:/var/jenkins_home/
    - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
  environment:
    JENKINS_OPTS: '--prefix=/jenkins'
    JAVA_OPTS: '-Duser.timezone=Asia/Shanghai'

3. 配置nginx转发

配置转发时,最好是把jenkins目录单独映射出来,转发时需要带上实际的请求头信息,不然会报脚本错误:

Mixed Content: The page at ‘https://XXX’ was loaded over HTTPS, but requested an insecure

nginx配置为:

location /jenkins/ {
      proxy_pass http://jenkins:8080/jenkins/;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
  }

配置完成后基本上就可以访问了

4.插件选择

如果是第一次用,在部署时选择默认即可,后续在按需选择
常用的插件有以下几种:

  • Git plugin
  • Gitee Plugin #和码云中集成
  • GitHub plugin
  • Maven Integration plugin
  • Publish Over SSH
  • Pipeline
  • NodeJS Plugin
    ...

5.构建时注意事项

  • 默认安装后无法找到maven或者版本不对
    jenkins - 系统管理 - 全局工具配置 - maven -新增maven安装新的maven,在构建时使用新配置的maven即可

  • gitee插件配置
    Gitee 帮助中心 / 第三方服务集成 / 帮助详情 / Jenkins 插件

  • 如何把构建的结果拷贝到目标机器
    如果是拷贝到同一个宿主机的环境,则可以把宿主机的目录也映射到jenkins中
    如果是网络可联通的环境,则使用Publish Over SSH插件,通过插件或者shell的scp拷贝过去

你可能感兴趣的:(基于docker部署jenkins)