Jenkins 的 Docker 容器安装以及 Jenkins 配置

前言

建议大家拉取 镜像不要 search 来查看,建议直接去 docker hub 中去找到指定的镜像,再去拉

安装 jenkins 镜像的时候,其实 jenkins 镜像中已经包含了 git,jdk 这两个工具,没有 mvn

jenkins 的新版本镜像是 jenkins/jenkins,其他的是些老版本了,我建议使用 lts,表示长期支持版

Jenkins 镜像拉取

  • jenkins 的 docker 镜像拉取

    # 拉取新的 jenkins 长期支持版
    docker pull jenkins/jenkins:lts
    
    # 查看 docker 拉取到的镜像
    docker images
    

Jenkins 容器生成与启动

  • jenkins 镜像生成容器

    我本人在本地期望的映射地址是服务器地址 /home/jenkins=>容器中地址 /var/jenkins,因为 var 文件目录中存储的常是经常变动的文件内容,如缓存日志等,端口号映射我选择服务器端口 8080=>容器中端口 8080,当然这一点需要特别注意,因为研发的服务器中端口 8080 一般已经被使用了,所以项目上会提供安全可用的端口号给予使用,就选择这些端口号作为服务器端口

    # 生成 jenkins 的 docker 容器
    docker run --name jenkins -p 8080:8080 -v /home/jenkins:/var/jenkins jenkins/jenkins:lts
    
    # 查看已经生成了哪些容器
    docker ps -a
    
    # 查看容器是否在运行
    docker ps
    
  • 启动 jenkins 容器

    # 先检查容器有哪些,不管在不在运行
    docker ps -a
    
    # 检查容器有哪些在运行
    docker ps
    
    # 启动容器
    docker start [容器 id]
    
  • 如果创建的 jenkins 容器有问题,想删除刚创建的容器

    # 若想停止容器
    docker stop [容器 id]
    
    # 若想删除容器,需要先停止容器
    docker rm [容器 id]
    

进入 Jenkins 以及初始操作

  • 进入 jenkins 中

    # 先打开火狐浏览器输入网址再回车,这个 8080 是因为之间配置的映射地址是从服务器的 8080 映射出来的,项目上一般不能用 8080,应选用其他安全未被占用的端口
    localhost:8080
    
    # 刚进入 jenkins 时需要初始密码,这个密码一般在启动 jenkins 容器的控制台中有显示,或者进入 jenkins 容器中去寻找,现在我们先在控制台输入如下命令来进入容器中
    docker exec -u 0 -it [容器 id] /bin/bash
    
    # 输出 jenkins 的密码文件内容并将控制台的密码输入到浏览器中
    cat /var/jenkins_home/secrets/initialAdminPassword
    
    # 之后在其中安装插件可以创建自己的新账号
    
  • jenkins 容器安装插件

    安装插件有两种方式,第一种自动安装必要插件,第二种进行可选择安装,由于我未涉及到移动端,我这里不想装 gradle 等其他插件,我个人选择了自定义安装插件,博友们可以选择第一种自动安装,这里安装比较慢

    安装好后,如果要做 java 的 maven 项目,并且想从 gitlab 或者 github 上拉代码有一些插件几乎是必装的,若是做自动化产出,有一些也是必装的,我这里写下我做 selenium-grid 平台跑代码必装的一些插件,请博友在插件管理里面自行核对

    • Ant Plugin【ant 项目】
    • Oracle Java SE Development Kit Installer Plugin【java】
    • GitHub Branch Source Plugin【github】
    • GitLab Plugin【gitlab】
    • Maven Integration plugin【maven 项目】
    • SSH Slaves plugin【节点机使用 ssh】
    • Subversion
    • Localization: Chinese (simplified)【多语言】
    • Locale plugin【多语言】
    • Email Extension Template Plugin【邮件】

    全部安装好了可以勾选上重启 jenkins,这里会比较慢,很久没有反应可以试着刷新一下页面。

Jenkins 中后续的配置

  • jenkins 设置 jdk,git 以及 mvn

    先进入 jenkins 的全局工具配置中,找到 java,git 以及 maven 配置处

    # jenkins 全局工具配置处我们 jdk 名称我们随便取,我取 jdk1.8
    
    # JAVA_HOME 我写的是 /usr/local/openjdk-8,jenkins 容器中 jdk 默认在 /usr/local/ 下,我们可以先进入 jenkins 容器中查看下容器中的 jdk 在哪,先执行如下命令进入容器
    docker exec -it [容器 id] /bin/bash
    
    # 查看 JAVA_HOME 在哪,默认是 /usr/local/openjdk-8
    echo $JAVA_HOME
    
    # 将获取到的 JAVA_HOME 复制到浏览器中
    
    # 浏览器中 git 的名称我取的是 git2.11,因为我的 jenkins 容器中默认有这个 git
    
    # 在控制台中查看 git 可执行文件路径,同样是先进到容器中,jenkins 的容器中默认是 /usr/bin/git
    which git
    
    # 将容器中可执行文件 git 的路径(一直到 git)拷贝到浏览器中
    
    # 浏览器中 maven 我这里选择勾选 install automatically,并且自己起 maven 名字,选择最新版的 maven
    
    # 最后记得从容器内部出来
    exit
    
  • jenkins 设置成中文显示

    # 进入 jenkins 中配置系统中
    
    # 找到 Locale,Default Language 中填写 zh_CN,然后勾选忽略浏览器和强制将与语言应用于所有用户,这个 Locale 依赖于前面语言插件
    
  • jenkins 中项目出发邮件模板配置

    • 先配置下 Extended E-mail Notification

      我打算配置 smtp 位 qq 的,建议小伙伴们配置成公司企业邮箱号

      # SMTP server SMTP 服务器
      smtp.qq.com
      
      # Default user E-mail suffix 默认用户邮箱后缀
      @qq.com
      
      # 勾选 Use SMTP Authentication 表示使用 SMTP 认证
      
      # User Name 用户,这里填写 qq 号
      123456789
      
      # Password 填写 smtp 授权码,这个得在邮箱中获取
      ●●●●●●●●●●●●●●●●
      
      # 勾选 Use SSL
      
      # SMTP port 填写
      465
      
      # Default Content Type 默认内容类型选择
      HTML (text/html)
      
      # Default Recipients 默认接收人
      [email protected]
      
      # Default Subject 默认主题填写
      ${BUILD_STATUS} - ${PROJECT_NAME} - Build # ${BUILD_NUMBER} !
      
      # Default Content 默认内容用 html 写,这个请见下方的 html 代码
      
      # 勾选 Allow sending to unregistered users 允许发送给未注册用户
      

      Default Content 邮件发出来的默认内容

      <!DOCTYPE html>
      <html>
      <head>
      <meta charset="UTF-8">
      <title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title>
      </head>
      
      <body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"
          offset="0">
          <table width="95%" cellpadding="0" cellspacing="0"
              style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
              <tr>
                  <td>(本邮件是程序自动下发的,请勿回复!)</td>
              </tr>
              <tr>
                  <td><h2>
                          <font color="#0000FF">构建结果 - ${BUILD_STATUS}</font>
                      </h2></td>
              </tr>
              <tr>
                  <td><br />
                  <b><font color="#0B610B">构建信息</font></b>
                  <hr size="2" width="100%" align="center" /></td>
              </tr>
              <tr>
                  <td>
                      <ul>
                          <li>项目名称&nbsp;&nbsp;${PROJECT_NAME}</li>
                          <li>构建编号&nbsp;&nbsp;第${BUILD_NUMBER}次构建</li>
                          <li>SVN&nbsp;版本:&nbsp;${SVN_REVISION}</li>
                          <li>触发原因:&nbsp;${CAUSE}</li>
                          <li>构建日志:&nbsp;<a href="${BUILD_URL}console">${BUILD_URL}console</a></li>
                          <li>构建&nbsp;&nbsp;Url&nbsp;&nbsp;<a href="${BUILD_URL}">${BUILD_URL}</a></li>
                          <li>工作目录&nbsp;&nbsp;<a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>
                          <li>项目&nbsp;&nbsp;Url&nbsp;&nbsp;<a href="${PROJECT_URL}">${PROJECT_URL}</a></li>
                      </ul>
                  </td>
              </tr>
              <tr>
                  <td><b><font color="#0B610B">Changes Since Last
                              Successful Build:</font></b>
                  <hr size="2" width="100%" align="center" /></td>
              </tr>
              <tr>
                  <td>
                      <ul>
                          <li>历史变更记录 : <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a></li>
                      </ul> ${CHANGES_SINCE_LAST_SUCCESS,reverse=true, format="Changes for Build #%n:<br />%c<br />",showPaths=true,changesFormat="<pre>[%a]<br />%m</pre>",pathFormat="&nbsp;&nbsp;&nbsp;&nbsp;%p"}
                  </td>
              </tr>
              <tr>
                  <td><b>Failed Test Results</b>
                  <hr size="2" width="100%" align="center" /></td>
              </tr>
              <tr>
                  <td><pre
                          style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">$FAILED_TESTS</pre>
                      <br /></td>
              </tr>
              <tr>
                  <td><b><font color="#0B610B">构建日志 (最后 100行):</font></b>
                  <hr size="2" width="100%" align="center" /></td>
              </tr>
              <!-- <tr>
                  <td>Test Logs (if test has ran): <a
                      href="${PROJECT_URL}ws/TestResult/archive_logs/Log-Build-${BUILD_NUMBER}.zip">${PROJECT_URL}/ws/TestResult/archive_logs/Log-Build-${BUILD_NUMBER}.zip</a>
                      <br />
                  <br />
                  </td>
              </tr> -->
              <tr>
                  <td><textarea cols="80" rows="30" readonly="readonly"
                          style="font-family: Courier New">${BUILD_LOG, maxLines=100}</textarea>
                  </td>
              </tr>
          </table>
      </body>
      </html>
      
    • 再配置下 E-mail Notification

      这个邮件配置不需要装什么 jenkins 插件,默认就有,但是没有 Extended E-mail Notification 功能强大

      # SMTP server SMTP 服务器
      smtp.qq.com
      
      # 用户默认邮件后缀
      @qq.com
      
      # 勾选使用 SMTP 认证
      
      # 用户名填写 qq 号
      123456789
      
      # 密码填写 smtp 授权码,这个在邮箱中获取
      ●●●●●●●●●●●●●●●●
      
      # 勾选使用 SSL 协议
      
      # SMTP 端口
      465
      
      # 勾选通过发送测试邮件测试配置,在 Test e-mail recipient 中填写个人邮箱用来接收验证
      [email protected]
      
      # 点击 Test configuration 发送测试,若显示 Email was successfully sent 表示成功,我之前爆出了 501 错误,请看下方 Jenkins Location 解答
      
    • Jenkins Location 多语言配置

      # 在配置 E-mail Notification 时 Test configuration 验证邮箱接收爆出 501 错误,解决要先找到 Jenkins  Location
      
      # Jenkins URL 这个我配置的是本机
      http://localhost:8080/
      
      # 系统管理员邮件地址
      [email protected]
      
      # 然后再点击 E-mail Notification 中的 Test configuration 测试邮件接收成功显示
      Email was successfully sent
      
发布了124 篇原创文章 · 获赞 40 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/abcnull/article/details/103835363
今日推荐