让机器给你减压,win10搭建Jenkins实现CICD

339 阅读4分钟

由于 jenkins 是来解放我们的工作,所以我们希望他够稳定,不至于经常去折腾浪费时间,所以选择 LTS 稳定版本。我选择的版本是:Jenkins 2.361.3 LTS windows,接下来就看我下面提供的官方安装教程即可。

下载安装

安装过程遇到的问题

对于遇到这些问题的同学,希望能给你提供一份帮助,避免被麻烦苦恼,如果我遇到的问题不包含在以下内容中,请直接 Google 一般能找到解决办法

问题 1:验证失败无法下一步

  • 问题现状

Untitled.png

  • 解决办法: 控制面板 → 管理工具 → 本地安全策略 → 本地策略 → 用户权限分配 → 作为服务登录

Untitled 1.png

Untitled 2.png

选中它然后右键属性,弹出如下窗口:添加安装过程的填写的用户信息到列表中,最后点确定就可以继续安装了

Untitled 3.png

问题 2:选择 jdk 目录后弹框提示无效?

  • 解决办法:看提示 jekins 支持的 jdk 版本,选择对应的版本即可

Untitled 4.png

提示:到这个界面说明你的 jenkins 安装完毕,切记别急着点进去(否则切换目录又需要安装插件搞一遍,挺久的完全是浪费时间),Jenkins 工作目录默认是安装在 C 盘的,此时你可能跟我一样一样不想让 C 盘爆掉,那么你就跟着我把 Jenkins 的默认 workspace 切换至其他盘符。如果你无需切换 Jenkins 工作空间的话,可以跳过切换 workspace 部分内容

切换 Jenkins 默认工作空间 和 防止 job 运行控制台中文显示乱码问题

  • 找到安装目录下的 jenkins.xml 文件,然后修改如下内容

Untitled 5.png

...
<env name="JENKINS_HOME" value="E:\Program Files\Jenkins"/>
<env name="JAVA_TOOL_OPTIONS" value="-Dsun.jnu.encoding=UTF-8 -Dfile.encoding=UTF-8"/>
...

说明:第一句切换工作目录,第二句:避免 job 运行控制台中文显示乱码问题,所以直接定死 UTF-8 格式

安装插件

进入插件安装页面:Dashboard→Manage Jekins → 插件管理

配置 Configure System

配置:Location

Untitled 6.png

配置:全局属性

添加环境变量配置,方便其他地方复用信息避免重复配置,自己想配多少就点添加即可

Untitled 7.png

配置:Shell

Untitled 8.png

提示:选择 git 安装目录下的 sh.exe,方便在 job 配置执行 shell 命令

配置:Extended E-mall Notification

QQ%E5%9B%BE%E7%89%8720221111143158.jpg 补充说明:

  • SMTP Username:填写你的 qq 邮箱
  • SMTP Password :填写 qq 邮箱的授权码,由于我的已开启。如果你的未开启应该就是显示已关闭,点击开启然后按提示获取授权码即可 Untitled 9.png

Publish over SSH

Untitled 10.png

配置 Global Tool Configuration

配置 Git

Untitled 11.png

配置:Credentials

进入:Dashboard→Manage Jenkins→Credentials→System→**Global credentials (unrestricted),**添加凭证

Untitled 12.png

说明:用于 Jenkins 关联 git 账号 clone 代码,private key key 中填私钥 key。如果你还没有密钥对,请使用ssh-keygen 工具生成。相关文章:**Creating an SSH Key Pair for User Authentication**

创建 Job

创建 Job:Dashboard→ 新增 Item

Untitled 13.png

配置:General

Untitled 14.png

配置:源码管理

Untitled 15.png

配置:Build Steps

Untitled 16.png

配置:构建后操作

  • 上传至服务器
  • 发送邮件

Untitled 17.png

配置:Send build artifacts over SSH

说明:上传打包后结果至服务器

Untitled 18.png

配置:Editable Email Notifacation

1.jpg

说明:触发器规则、邮件接收人等可以根据自己的需求配置,为了方便提供一份邮件模板给大家

<!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>
            本邮件由系统自动发出,无需回复!<br/>
            各位同事,大家好,以下为${PROJECT_NAME }项目构建信息</br>
            <td><font color="#CC0000">构建结果 - ${BUILD_STATUS}</font></td>
        </tr>
        <tr>
            <td><br />
            <b><font color="#0B610B">构建信息</font></b>
            <hr size="2" width="100%" align="center" /></td>
        </tr>
        <tr>
            <td>
                <ul>
                    <li>项目名称 : ${PROJECT_NAME}</li>
                    <li>构建编号 : 第${BUILD_NUMBER}次构建</li>
                    <li>触发原因: ${CAUSE}</li>
                    <li>构建状态: ${BUILD_STATUS}</li>
                    <li>构建日志: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li>
                    <li>构建  Url : <a href="${BUILD_URL}">${BUILD_URL}</a></li>
                    <li>工作目录 : <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>
                    <li>项目  Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li>
                    <li>报告  Url : <a href="${PROJECT_URL}">${PROJECT_URL}allure</a></li>
                </ul>

<h4><font color="#0B610B">失败用例</font></h4>
<hr size="2" width="100%" />
$FAILED_TESTS<br/>

<h4><font color="#0B610B">最近提交</font></h4>
<hr size="2" width="100%" />
<ul>
${CHANGES_SINCE_LAST_SUCCESS, reverse=true, format="%c", changesFormat="<li>%d [%a] %m</li>"}
</ul>
详细提交: <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a><br/>

            </td>
        </tr>
    </table>
</body>
</html>

更多问题

问题:Extended E-mail Notification 无 SMTP username 和 SMTP Passord 选项

解决办法:卸载安装好的 Extended E-mail Notification 插件,替换成 2.72 版本就显示出来了。2.72 下载,提取码: TXYx Untitled 19.png

问题:Error sending to the following VALID addresses: xxx@qq.com

SendFailedException message: 502 Invalid input from 61.140.27.8 to newxmesmtplogicsvrszb6.qq.com

解决方法:将 job 任务配置中的 Editable Email Notification 栏目中的 Project From 清空掉,然后应用保存。再次点击构建即可触发邮件了

Untitled 20.png

问题:shell 执行 tar 解压操作报错,提示:无法 Remove prefix

解决方法:

rm -rf dist.tar.gz
# 特别注意:Remove prefix 是相对的根目录[/]与当前目录[/dist/kh]的部分,而不是打出来的dist里面的需要移除的公共前缀路径
cd dist/kh
tar -zcvf dist.tar.gz *

Untitled 21.png

总结

  • 建议不要用 windows 来打 jenkins 环境,因为坑真的很多

由于我的 jekins 是局域网环境,所以我就没有配置 Jenkins Hook(就是 git 代码提交后 jenkins 收到推送通知后自动开始执行打包操作,网上搜索一下有很多相关教程的)

参考文献


以上:如发现有问题,欢迎留言指出,我及时更正