Jenkins

Jenkins 使用

一. 系统要求

  1. 最低要求

    RAM > 256M,DISK > 1G

  2. 最小化团队

    RAM > 1G,DISK > 50G+


二. 安装

1. 安装Jenkins

  1. 快捷安装

    1
    docker run --name jenkins -itd -p 8080:8080 -p 50000:50000 jenkins/jenkins:lts
  2. 使用docker-compose安装

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    version: '3'
    services:
    jenkins:
    container_name: 'jenkins'
    image: jenkins/jenkins:lts
    restart: always
    user: jenkins:994 # 这里的 jenkins 要对应当前系统登录用户
    ports:
    - "8080:8080"
    - "50000:50000"
    - "10051:10051"
    volumes:
    - /home/jenkins/data:/var/jenkins_home
    - /usr/bin/docker:/usr/bin/docker
    - /var/run/docker.sock:/var/run/docker.sock

安装完成后,需要获取jenkins管理员的初始密码

  1. 使用 docker logs -f jenkins 打印日志

  2. 找到日志中输出的 hash密码

2. 进入Jenkins界面

  1. 在文本框中,输入刚刚获取到的 管理员密码,解锁Jenkins
  2. 安装Jenkins插件
    • 插件安装方式有两种:
      • 离线
      • 在线
    • 在线安装插件时,有部分插件需要用到谷歌的服务,这时候,需要配置代理。或者使用离线安装
    • 常用插件
      • GitHub
      • Git client
      • GitLab
      • Gitlab Authentication
      • PAM Authentication
      • Matrix Authorization Strategy
      • Role-based Authorization Strategy
      • LDAP
      • SSH Slaves
      • WMI Windows Agents
      • Build Timeout
      • Dashboard View
      • Folders
      • ThinBackup
      • AnsiColor
      • Build With Parameters
  3. 创建管理员
  4. 配置全局的Jenkins的回调地址(也是Jenkins的登录地址)

三. 备份Jenkins容器内部数据

  1. 使用docker commit进行备份

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    # ① 查找到当前运行的容器
    docker ps | grep jenkins
    # ② commit 当前容器
    docker commit <当前容器的ID> <镜像名称>
    # ③ 查看镜像
    docker images | grep <镜像名称>
    # ④ 重启镜像
    docker run -itd -v /tmp:/tmp <镜像名称>
    # ⑤ 查看容器名称
    docker ps | grep <镜像名称>
    # ⑥ 使用交互式终端,连接到容器,使用容器内部的cp命令,把容器内部的/var/jenkins_home目录,拷贝到容器的/tmp目录下
    docker exec -it <容器名称> cp -r /var/jenkins_home /tmp
    # ⑦ 停止并删除容器
    docker stop <容器名称> && docker rm <容器名称>
  2. 使用官方文档方式,进行备份

    1
    docker run --rm --volumes-from <需要备份的容器名称> -v /tmp/backup:/backup ubuntu tar cvf /backup/backup.tar /var/jenkins_home
  3. 使用docker cp命令,快速备份

    1
    2
    3
    4
    # ① 查看容器ID
    docker ps | grep <容器名称>
    # ② 复制容器内部的 /var/jenkins_home 目录 到当前的 /tmp/目录下
    docker cp <容器ID>:/var/jenkins_home /tmp/

四. Jenkins 使用 Gitlab 登录

  1. 进入系统控制 > 全局安全配置

  2. 授权策略中,选中Gitlab Commiter Authorization Strategy

  3. 配置 Gitlab Authorization Settings

    注意:

    1. Admin User Names 必须和 Gitlab 超级管理员的 UserName对应,否则会丢失超级管理员权限

  4. 在安全域中,选中 Gitlab Authentication Plugin

    注意:

    1.Client IDClient Secret要在Gitlab中获取

    2. GitLab Web URIGitLab API URIGitLab链接

  5. 进入Gitlab,选择管理中心,进入应用,并新增应用

    注意:

    1.  重定向URI 为:`<jenkins地址>/securityRealm/finishLogin`
    
     2.  必须要选中api
  6. 这时,我们会获取到Client IDClient Secret

  7. 将得到的Client IDClient Secret填充到Jenkins的安全域配置中

注意:

1.此时,如果还是无法登陆,需要在Gitlab管理中心 > 网络 > 外发请求 中,把<允许Webhook和服务对本地网络的请求>勾选上。