DevOps 之 Jenkins 安装、配置、美化、插件及常见错误处理

<div class="post-body han-init-context" itemprop="articleBody" style="opacity: 1; display: block; transform: translateY(0px);"><p>继续上一篇的话题,既然已经搭建了 GitLab 的代码仓库,那么现在就可以开始进行下一步持续集成环境的搭建了。公司准备利用 Jenkins CI 进行持续集成,本文记录了 Jenkins 的安装、基础配置、界面美化、常用插件及常见错误处理。</p><a id="more"></a><h2 id="1-安装Jenkins"><a href="#1-安装Jenkins" class="headerlink" title="1. 安装Jenkins"></a>1. 安装 Jenkins</h2><p><strong>准备工作</strong></p><ol><li><p>安装 JDK,并配置环境变量</p></li><li><p>安装 maven</p></li><li><p> 配置阿里云的 maven 镜像源地址,<code>vim /usr/share/maven/conf/settings.xml</code> 将👇内容添加进 <code>mirrors</code> 节点</p><div class="highlight-wrap"><button class="copy-btn">复制</button><figure class="highlight xml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">mirror</span>&gt;</span></span><br><span class="line"> <span class="comment">&lt;!--This sends everything else to /public --&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">id</span>&gt;</span>nexus-aliyun<span class="tag">&lt;/<span class="name">id</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">mirrorOf</span>&gt;</span>\*<span class="tag">&lt;/<span class="name">mirrorOf</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">name</span>&gt;</span>Nexus aliyun<span class="tag">&lt;/<span class="name">name</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">url</span>&gt;</span>http://maven.aliyun.com/nexus/content/groups/public<span class="tag">&lt;/<span class="name">url</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">mirror</span>&gt;</span></span><br></pre></td></tr></tbody></table></figure></div></li><li><p>安装 git</p></li></ol><p><strong>配置镜像源地址</strong></p><div class="highlight-wrap"><button class="copy-btn">复制</button><figure class="highlight shell"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo</span><br><span class="line">sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key</span><br><span class="line">yum install jenkins</span><br></pre></td></tr></tbody></table></figure></div><p><strong>修改访问 IP 和 端口号</strong></p><ol><li><code>vim /etc/sysconfig/jenkins</code></li><li><code>JENKINS\_PORT="10080"</code></li></ol><p><strong>配置 JDK 路径到 Jenkins 中</strong></p><ol><li><p><code>vim /etc/init.d/jenkins</code></p></li><li><p>将自己的 java 目录加入到 <code>candidates</code> 里</p><div class="highlight-wrap"><button class="copy-btn">复制</button><figure class="highlight plain"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">candidates="</span><br><span class="line">/etc/alternatives/java</span><br><span class="line">/usr/lib/jvm/java-1.8.0/bin/java</span><br><span class="line">/usr/lib/jvm/jre-1.8.0/bin/java</span><br><span class="line">/usr/lib/jvm/java-1.7.0/bin/java</span><br><span class="line">/usr/lib/jvm/jre-1.7.0/bin/java</span><br><span class="line">/usr/bin/java</span><br><span class="line">/opt/jdk1.8.0\_144/bin/java</span><br><span class="line">"</span><br></pre></td></tr></tbody></table></figure></div></li></ol><p><strong>安装完毕后启动</strong></p><div class="highlight-wrap"><button class="copy-btn">复制</button><figure class="highlight shell"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo service jenkins start # 启动jenkins服务</span><br></pre></td></tr></tbody></table></figure></div><h2 id="2-配置-Jenkins"><a href="#2-配置-Jenkins" class="headerlink" title="2. 配置 Jenkins"></a>2. 配置 Jenkins</h2><ol><li><p><strong>初始化密码</strong></p><p><code>cat /var/lib/jenkins/secrets/initialAdminPassword</code></p></li><li><p><strong>安装插件</strong></p><p>选择左侧推荐的插件安装即可</p></li><li><p><strong>配置管理员账号密码</strong></p></li><li><p><strong>配置 JDK、Maven、Git、Docker</strong></p><p>系统管理 → 全局工具配置(尽量在服务器本地安装,然后输入安装路径,不推荐使用在线安装,因为在线安装有些资源都在国外,下载速度极慢)</p></li><li><p><strong>配置邮件服务器信息</strong></p><p>系统管理 → 系统设置,①Jenkins Location→系统管理员邮件地址②Extended E-mail Notification③邮件通知。</p><p>其中<strong> Extended E-mail Notification</strong> 的两个地方可以做个性化配置:</p><ul><li><p>Default Content Type 邮件的内容类型,改为<code>HTML(text/html)</code>。</p></li><li><p>Default Subject 邮件的标题,改为<code>构建通知:$PROJECT\_NAME - Build # $BUILD\_NUMBER - $BUILD\_STATUS!</code>。</p></li><li><p>Default Content 邮件的内容,改为👇内容。</p><div class="highlight-wrap"><button class="copy-btn">复制</button><figure class="highlight html"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">&lt;!DOCTYPE html&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">html</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">head</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">meta</span> <span class="attr">charset</span>=<span class="string">"UTF-8"</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">title</span>&gt;</span>${PROJECT\_NAME}-第${BUILD\_NUMBER}次构建日志<span class="tag">&lt;/<span class="name">title</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">head</span>&gt;</span></span><br><span class="line"></span><br><span class="line"><span class="tag">&lt;<span class="name">body</span> <span class="attr">leftmargin</span>=<span class="string">"8"</span> <span class="attr">marginwidth</span>=<span class="string">"0"</span> <span class="attr">topmargin</span>=<span class="string">"8"</span> <span class="attr">marginheight</span>=<span class="string">"4"</span> <span class="attr">offset</span>=<span class="string">"0"</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">table</span> <span class="attr">width</span>=<span class="string">"95%"</span> <span class="attr">cellpadding</span>=<span class="string">"0"</span> <span class="attr">cellspacing</span>=<span class="string">"0"</span> <span class="attr">style</span>=<span class="string">"font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif"</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">tr</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">td</span>&gt;</span>(本邮件是程序自动下发的,请勿回复!)<span class="tag">&lt;/<span class="name">td</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;/<span class="name">tr</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">tr</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">td</span>&gt;</span><span class="tag">&lt;<span class="name">h2</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">font</span> <span class="attr">color</span>=<span class="string">"#0000FF"</span>&gt;</span>构建结果 - ${BUILD\_STATUS}<span class="tag">&lt;/<span class="name">font</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;/<span class="name">h2</span>&gt;</span><span class="tag">&lt;/<span class="name">td</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;/<span class="name">tr</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">tr</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">td</span>&gt;</span><span class="tag">&lt;<span class="name">br</span> /&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">b</span>&gt;</span><span class="tag">&lt;<span class="name">font</span> <span class="attr">color</span>=<span class="string">"#0B610B"</span>&gt;</span>构建信息<span class="tag">&lt;/<span class="name">font</span>&gt;</span><span class="tag">&lt;/<span class="name">b</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">hr</span> <span class="attr">size</span>=<span class="string">"2"</span> <span class="attr">width</span>=<span class="string">"100%"</span> <span class="attr">align</span>=<span class="string">"center"</span> /&gt;</span><span class="tag">&lt;/<span class="name">td</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;/<span class="name">tr</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">tr</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">td</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">ul</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">li</span>&gt;</span>项目名称: ${PROJECT\_NAME}<span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">li</span>&gt;</span>构建编号: 第${BUILD\_NUMBER}次构建<span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">li</span>&gt;</span>触发原因: ${CAUSE}<span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">li</span>&gt;</span>构建日志: <span class="tag">&lt;<span class="name">a</span> <span class="attr">href</span>=<span class="string">"${BUILD\_URL}console"</span>&gt;</span>${BUILD\_URL}console<span class="tag">&lt;/<span class="name">a</span>&gt;</span><span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">li</span>&gt;</span>构建Url: <span class="tag">&lt;<span class="name">a</span> <span class="attr">href</span>=<span class="string">"${BUILD\_URL}"</span>&gt;</span>${BUILD\_URL}<span class="tag">&lt;/<span class="name">a</span>&gt;</span><span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">li</span>&gt;</span>工作目录: <span class="tag">&lt;<span class="name">a</span> <span class="attr">href</span>=<span class="string">"${PROJECT\_URL}ws"</span>&gt;</span>${PROJECT\_URL}ws<span class="tag">&lt;/<span class="name">a</span>&gt;</span><span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">li</span>&gt;</span>项目Url: <span class="tag">&lt;<span class="name">a</span> <span class="attr">href</span>=<span class="string">"${PROJECT\_URL}"</span>&gt;</span>${PROJECT\_URL}<span class="tag">&lt;/<span class="name">a</span>&gt;</span><span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;/<span class="name">ul</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;/<span class="name">td</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;/<span class="name">tr</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">tr</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">td</span>&gt;</span><span class="tag">&lt;<span class="name">b</span>&gt;</span><span class="tag">&lt;<span class="name">font</span> <span class="attr">color</span>=<span class="string">"#0B610B"</span>&gt;</span>Changes Since Last Successful Build:<span class="tag">&lt;/<span class="name">font</span>&gt;</span><span class="tag">&lt;/<span class="name">b</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">hr</span> <span class="attr">size</span>=<span class="string">"2"</span> <span class="attr">width</span>=<span class="string">"100%"</span> <span class="attr">align</span>=<span class="string">"center"</span> /&gt;</span><span class="tag">&lt;/<span class="name">td</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;/<span class="name">tr</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">tr</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">td</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">ul</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">li</span>&gt;</span>历史变更记录 : <span class="tag">&lt;<span class="name">a</span> <span class="attr">href</span>=<span class="string">"${PROJECT\_URL}changes"</span>&gt;</span>${PROJECT\_URL}changes<span class="tag">&lt;/<span class="name">a</span>&gt;</span><span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;/<span class="name">ul</span>&gt;</span> ${CHANGES\_SINCE\_LAST\_SUCCESS,reverse=true, format="Changes for Build #%n:<span class="tag">&lt;<span class="name">br</span> /&gt;</span>%c<span class="tag">&lt;<span class="name">br</span> /&gt;</span>",showPaths=true,changesFormat="<span class="tag">&lt;<span class="name">pre</span>&gt;</span>\[%a\]<span class="tag">&lt;<span class="name">br</span> /&gt;</span>%m<span class="tag">&lt;/<span class="name">pre</span>&gt;</span>",pathFormat=" %p"} </span><br><span class="line"> <span class="tag">&lt;/<span class="name">td</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;/<span class="name">tr</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">tr</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">td</span>&gt;</span><span class="tag">&lt;<span class="name">b</span>&gt;</span>Test Informations<span class="tag">&lt;/<span class="name">b</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">hr</span> <span class="attr">size</span>=<span class="string">"2"</span> <span class="attr">width</span>=<span class="string">"100%"</span> <span class="attr">align</span>=<span class="string">"center"</span> /&gt;</span><span class="tag">&lt;/<span class="name">td</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;/<span class="name">tr</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">tr</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">td</span>&gt;</span><span class="tag">&lt;<span class="name">pre</span> <span class="attr">style</span>=<span class="string">"font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif"</span>&gt;</span>Total:${TEST\_COUNTS,var="total"},Pass:${TEST\_COUNTS,var="pass"},Failed:${TEST\_COUNTS,var="fail"},Skiped:${TEST\_COUNTS,var="skip"}<span class="tag">&lt;/<span class="name">pre</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">br</span> /&gt;</span><span class="tag">&lt;/<span class="name">td</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;/<span class="name">tr</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">tr</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">td</span>&gt;</span><span class="tag">&lt;<span class="name">b</span>&gt;</span><span class="tag">&lt;<span class="name">font</span> <span class="attr">color</span>=<span class="string">"#0B610B"</span>&gt;</span>构建日志 (最后 100行):<span class="tag">&lt;/<span class="name">font</span>&gt;</span><span class="tag">&lt;/<span class="name">b</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">hr</span> <span class="attr">size</span>=<span class="string">"2"</span> <span class="attr">width</span>=<span class="string">"100%"</span> <span class="attr">align</span>=<span class="string">"center"</span> /&gt;</span><span class="tag">&lt;/<span class="name">td</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;/<span class="name">tr</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">tr</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">td</span>&gt;</span><span class="tag">&lt;<span class="name">textarea</span> <span class="attr">cols</span>=<span class="string">"80"</span> <span class="attr">rows</span>=<span class="string">"30"</span> <span class="attr">readonly</span>=<span class="string">"readonly"</span> <span class="attr">style</span>=<span class="string">"font-family: Courier New"</span>&gt;</span>${BUILD\_LOG, maxLines=100}<span class="tag">&lt;/<span class="name">textarea</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;/<span class="name">td</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;/<span class="name">tr</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;/<span class="name">table</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">body</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">html</span>&gt;</span></span><br></pre></td></tr></tbody></table></figure></div></li><li><p>勾选上 <strong>Enable Debug Mode、Require Administrator for Template Testing、Enable watching for jobs、Allow sending to unregistered users</strong></p></li></ul></li></ol><h2 id="3-美化-Jenkins"><a href="#3-美化-Jenkins" class="headerlink" title="3. 美化 Jenkins"></a>3. 美化 Jenkins</h2><p>安利一款 material 风格的主题:<span class="exturl" data-url="aHR0cDovL2Fmb25zb2YuY29tL2plbmtpbnMtbWF0ZXJpYWwtdGhlbWUv" title="http://afonsof.com/jenkins-material-theme/">http://afonsof.com/jenkins-material-theme/<i class="fa fa-external-link"></i></span> ,支持使用 CDN,也支持自定义公司 logo 等等。</p><h2 id="4-常用插件"><a href="#4-常用插件" class="headerlink" title="4. 常用插件"></a>4. 常用插件</h2><ol><li>Maven Integration plugin:用于构建 Maven 项目</li><li> Gitlab Hook Plugin:用于触发 GitLab 的一些 WebHooks 来构建项目</li><li> Simple Theme Plugin:配合上面的美化 Jenkins 使用</li><li> FireLine Plugin:代码规范检查,已经集成了阿里巴巴的代码规约(P3C)检查</li><li> HTML Publisher plugin:将一些测试结果变成 HTML 文档</li><li> JUnit Plugin:JUnit 测试</li><li><span class="exturl" data-url="aHR0cHM6Ly9wbHVnaW5zLmplbmtpbnMuaW8vY2hlY2tzdHlsZQ==" title="https://plugins.jenkins.io/checkstyle"> Checkstyle Plug-in<i class="fa fa-external-link"></i></span>:检测代码风格</li><li><span class="exturl" data-url="aHR0cHM6Ly9wbHVnaW5zLmplbmtpbnMuaW8vZmluZGJ1Z3M=" title="https://plugins.jenkins.io/findbugs"> FindBugs Plug-in<i class="fa fa-external-link"></i></span>:检测构建出来的 class 文件是否安全</li><li><span class="exturl" data-url="aHR0cHM6Ly9wbHVnaW5zLmplbmtpbnMuaW8vYW5hbHlzaXMtY29sbGVjdG9y" title="https://plugins.jenkins.io/analysis-collector"> Static Analysis Collector Plug-in<i class="fa fa-external-link"></i></span>:对 7、8 两个插件检测出来的结果进行汇总</li><li> Extended E-mail Notification:个性化邮件模板</li><li><span class="exturl" data-url="aHR0cHM6Ly93aWtpLmplbmtpbnMuaW8vZGlzcGxheS9KRU5LSU5TL0RpbmdkaW5nK05vdGlmaWNhdGlvbitQbHVnaW4=" title="https://wiki.jenkins.io/display/JENKINS/Dingding+Notification+Plugin"> Dingding\[钉钉\] Plugin<i class="fa fa-external-link"></i></span>:钉钉通知插件</li></ol><h2 id="5-常见错误解决"><a href="#5-常见错误解决" class="headerlink" title="5. 常见错误解决"></a>5. 常见错误解决</h2><p><strong>添加镜像源的时候出现如下错误:</strong></p><div class="highlight-wrap"><button class="copy-btn">复制</button><figure class="highlight shell"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">Resolving pkg.jenkins-ci.org (pkg.jenkins-ci.org)... failed: Temporary failure in name resolution.</span><br><span class="line"></span><br><span class="line">wget: unable to resolve host address ‘pkg.jenkins-ci.org’</span><br></pre></td></tr></tbody></table></figure></div><p>解决方法:</p><p><code>vim /etc/resolv.conf</code> 添加一行 <code>nameserver 8.8.8.8</code></p><p><strong>HTML Publisher Plugin 插件在新的 Jenkins 版本中,打开生成的网页中无法加载 CSS、无法点击按钮等情况:</strong></p><p>由于 CSP(Content Security Policy)所致,可在 系统管理→脚本命令行 中执行:</p><p> <code>System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","")</code></p>原文地址:https://xkcoding.com/2018/01/04/devops-jenkins.html</div>
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

DevOps 之 Jenkins 安装、配置、美化、插件及常见错误处理 - HelloWorld