转载

jenkins自动化工具使用教程

自动化构建、测试、部署、代码检测越来越重要。主要有一下几点原因

1.   企业做大,项目变多,多端支持( webh5 ,小程序等)

2.   微服务提倡高内聚低耦合,项目因拆分变多

3.   DevOps 自动化运维流行

4.   集群化,高可用部署方案

5.   避免人工操作出现的错误

6.   集成管理系统,实现提交发布、发布审批、发布等 UI 可视化操作

等等原因,学习使用 jenkins 实现自动化作业非常有必要。这是我学习过程中整理的资料,分享给大家。

欢迎向我推荐更好的资料和讨论关于 jenkins 的问题。

目录

一、        安装

1)        Jenkins 环境

2)        Jenkins 安装插件因网络问题报错处理方案

3)        Jenkins 在url 中关闭和重启.

4)        如何将Jenkins 集成到其他系统

二、        常见设置

1)        Jenkins 英文切换成中文

2)        Jenkins 中文乱码

3)        环境变量、脚本变量使用

4)        查看job 执行时的历史环境变量

5)        去掉JENKINS 的首页警告

6)        定时构建

三、        常用工具cli

1)        git

2)        脚本

a)        shell

b)        bat

3)        xcopy

4)        7zip (7z

四、        安全设置

1)        常规安全设置

2)        用户权限管理

五、        Dotnet 程序编译发布

1)        环境准备

2)        Msbuild 插件 + webdeploy

3)        使用msbuild 命令行

六、        备份、回滚

1)        jenkins 配置、job 等备份、还原

2)        站点备份、还原

七、        文件传输

1)        Rsync 同步工具

2)        Publish over SSH 插件

3)        Publish Over FTP 插件

4)        Copy Artifact 插件

5)        Copy Data To Workspace 插件

八、        分布式构建

1)        master-slave

2)        多job 串行、并行

3)        pipeline

4)        触发JENKINS 远程构建

九、        自动化测试

十、        优化设置

1)        设置友好的构建记录名字

2)        设置详细的构建描述内容

3)        日志大小的问题

4)        job 并发构建

十一、        其他插件

1)        多环境多配置插件 Matrix Project Plugin

2)        job 参数化扩展

3)        jenkins 插件 build timeout 和build timestamp

4)        Email 通知功能

十二、        解决方案与案例

1)        Dotnet 应用

2)        IOS /Android APP 应用

3)        nodejs 项目(webpack 打包)

一、     安装

Jenkins 是基于 Java 开发的一种可视化持续集成工具,将流水式的操作实现自动化。常用于自动化构建、自动化集成、自动化测试、自动化交付等

官方下载: https://jenkins.io/download/

1) Jenkins 环境

安装 Jenkins

https://www.cnblogs.com/linJie1930906722/p/5965230.html

怎么在 jenkins 面板上面升级

https://jingyan.baidu.com/article/295430f1e503b10c7e0050d4.html

2) Jenkins 安装插件因网络问题报错处理方案

Jenkins 镜像地址改为国内镜像地址:系统管理 >> 管理插件 >> 高级 菜单下将 ' 升级站点 ' 中的 URL 设为 http://mirror.xmission.com/jenkins/updates/current/update-center.json    保存并且重启 jenkins 服务

3) Jenkins url 中关闭和重启 .

https://www.cnblogs.com/jmcui/p/6933084.html

exitrestartreload

4) 如何将 Jenkins 集成到其他系统

Jenkins 常见 REST API (将 Jenkins 集成到其他系统)

https://www.cnblogs.com/imzye/p/8094145.html

二、     常见设置

1) Jenkins 英文切换成中文

Locale 插件

https://blog.csdn.net/qq_15807167/article/details/79896131

2) Jenkins 中文乱码

解决 jenkins 控制台中文乱码问题

https://www.cnblogs.com/gaigaige/p/6835084.html

      jenkins 解决日志打印乱码问题

https://blog.csdn.net/rosyhuan/article/details/78595876

3) 环境变量、脚本变量使用

Jenkins 可用环境变量列表以及环境变量的使用( Shell/Command/Maven/Ant

https://www.cnblogs.com/EasonJim/p/6758382.html

[Jenkins] 传递自定义变量 :job 内部步骤传递 & job 之间传递

http://www.cnblogs.com/junneyang/p/5239480.html

Jenkins 环境变量管理(全局环境变量 < Slave 配置环境变量 < Job 参数 < Job injected 环境变量)

https://blog.csdn.net/huaqiangli/article/details/79281487

Environment Injector 插件 (EnvInject) :添加的环境变量,只有这个 job 的构建过程中可见,其他 jobs 的构建不可见

4) 查看 job 执行时的历史环境变量

当前 job 执行记录 控制台输出 - Environment Variables

5) 去掉 JENKINS 的首页警告

https://www.cnblogs.com/lanbojini/p/9916911.html

6) 定时构建

Jenkins 定时构建语法规则

https://www.cnblogs.com/codeBang/p/9987492.html

三、     常用工具 cli

1)    git

jenkins git 拉取代码

https://www.cnblogs.com/jwentest/p/7065783.html

jenkins 同时拉取多个 git 仓库(插件: multiple-scms

http://dbp5588.iteye.com/blog/2396735

jenkins 选择分支构建( 插件: git Parameters

https://blog.csdn.net/u012375924/article/details/73835857

2)    脚本

a) shell

Shell 脚本常用命令

https://www.cnblogs.com/chen-lhx/p/5743438.html

( 一般以 .sh 为文件后缀,脚本开头必须是   #!/bin/bash )

b) bat

bat 教程

https://blog.csdn.net/jiangxian2008/article/category/6443498

批处理 FOR 参数 /Ftokens 详解

https://www.jb51.net/article/17928.htm

遍历文件夹 & 字符串处理  

https://www.cnblogs.com/dasusu/p/9058554.html

bat errorlevel%errorlevel% 的区别

https://www.jb51.net/article/49996.htm

iis7 appcmd 命令:操作站点 start|stop ,操作应用程序池 start|stop|recycle( 回收 )

http://blog.51cto.com/irow10/1790404

3)    xcopy

Xcopy 命令参数使用介绍

https://www.cnblogs.com/ChineseMoonGod/p/5458930.html

4)    7zip 7z

7zip dos 命令行用法总结

https://www.jb51.net/article/30541.htm

四、     安全设置

1) 常规安全设置

jenkins 全局安全设置

https://blog.csdn.net/liyasong666888/article/details/50350371

2) 用户权限管理

自带的权限管理

https://www.cnblogs.com/zz0412/p/jenkins_jj_14.html

Jenkins 权限控制插件 Role-based Authorization Strategy

https://blog.csdn.net/qn0007/article/details/78477792?locationNum=2&fps=1

Jenkins - Jenkins 修改用户密码

https://www.jianshu.com/p/a4ddcf91d367

忘记 Jenkins 管理员密码的解决办法

https://blog.csdn.net/jlminghui/article/details/54952148

五、     Dotnet 程序编译发布

1) 环境准备

使用 vs 安装包,安装组件: roslynmsbuildwebdeploy 、对应版本的 .net frameworknuget

2) Msbuild 插件 + webdeploy

Git + msbuild 插件 + webdeploy

https://www.cnblogs.com/kickinthehead/p/5388201.html

3) 使用 msbuild 命令行

MSBuild 命令行编译项目且不包含 pdb 文件

https://blog.csdn.net/zjm8499/article/details/47951839

vs2017 案例(自行下载vs2017的msbuild,每个版本的msbuild支持的参数有差异)

"***/2017/Professional/MSBuild/15.0/Bin/msbuild.exe" /toolsversion:15.0 /t:Rebuild /p:DeployOnBuild=true /p:Configuration=Release /p:DebugType=none /p:ExcludeGeneratedDebugSymbol=true /p:PublishProfile=D:/DevOps/jenkins_ex/Common/Config/jenkins_profile .pubxml /p:publishUrl=D:/DevOps/jenkins_ex/Build/Prod/***/Attach/File /p:VisualStudioVersion=15.0 /p:TargetFrameworkVersion=v4.6.1 D:/DevOps/jenkins_ex/Source/Prod/***/Attach.csproj

jenkins_profile.pubxml 内容如下

<PropertyGroup>

<WebPublishMethod> FileSystem </WebPublishMethod>

<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>

<LastUsedPlatform>Any CPU</LastUsedPlatform>

<SiteUrlToLaunchAfterPublish />

<LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>

<ExcludeApp_Data>False</ExcludeApp_Data>

<DeleteExistingFiles>True</DeleteExistingFiles>

</PropertyGroup>

Rebuild

重新生成并生成到 OutputPath

OutputPath

不结合 Web Deploy 工具,编译输出的 dll 路径

WebProjectOutputDir

不结合 Web Deploy 工具, web 文件( jscsscshtml 等)的输出目录

toolsversion

根据 .csproj 里面的值进行设置。 15.0 对应 vs2017msbuild

DeployOnBuild

true 表示启用编译并发布

Configuration

发布模式 DebugRelease

DebugType

none ,表示当前项目不生成 pdb 文件

ExcludeGeneratedDebugSymbol

true ,表示当前项目和引用项目都不生成 pdb 文件

PublishProfile

结合 Web Deploy 工具进行发布。

publishUrl

指定发布文件生成的目录

VisualStudioVersion

Vs 版本   15.0 对应 vs2017

TargetFrameworkVersion

Vs 中右键 .csproj ,查看项目属性里的 .NET 版本

六、     备份、回滚

1) jenkins 配置、 job 等备份、还原

使用 thinbackup 插件进行备份、还原

http://blog.51cto.com/innocence/2316315?source=dra

手动备份、还原

备份 JENKINS_HOME 下的所有文件和文件夹,恢复的时候先停止 jenkins 服务。

JENKINS_HOME   jenkins > 系统管理 > 系统配置 > 主目录的值)

2) 站点备份、还原

Jenkins 实现生产环境部署文件的回滚操作( Windows

https://www.cnblogs.com/EasonJim/p/5945266.html

Jenkins 实现集群回滚到指定时间版本( extended choice parameter 插件)

    To do ……

七、     文件传输

1)    Rsync 同步工具

Rsync 是一个通过检查文件的时间戳和大小,来跨计算机系统高效地“差异”传输和同步文件的工具

第一次同步时 rsync 会复制全部内容(首次复制时没有压缩包快),但在下一次只传输“修改过”的文件。

Rsync 服务端配置

https://www.cnblogs.com/zhenhui/p/5715840.html

基础 cli 命令

https://baike.baidu.com/item/rsync/8086338?fr=aladdin

-u, --update 仅仅进行更新,即跳过所有 DST 中更加新的文件

rsync 自动创建目录的坑点(只支持创建一层目录)

https://www.cnblogs.com/kenkofox/p/8206749.html

权限问题

(1)   rsync 客户端下载文件,文件权限会加入 rsync 客户端运行的账户

(2)   上传文件到 rsync 服务端,文件权限会加入 rsync 服务运行的账户

2)   Publish over SSH 插件

Jenkins 使用 shell 脚本部署到远程服务器步骤

https://blog.csdn.net/russ44/article/details/51694074

解决 SSH: Transferred 0 file(s)

https://www.jianshu.com/p/ef6a4022b7b5

3)   Publish Over FTP 插件

使用方法

https://www.cnblogs.com/zz0412/p/jenkins_jj_04.html

Jenkins FTP 上传插件 Publish Over FTP Plugin 设置支持中文路径

https://www.cnblogs.com/EasonJim/p/6136099.html

4)   Copy Artifact 插件

把某个 job 的构建物拷贝到当前 job 的工作区

https://www.cnblogs.com/jp927/p/4576715.html

5)    Copy Data To Workspace 插件

文件从 master 复制到 slave

https://blog.csdn.net/orichisonic/article/details/54706712

八、     分布式构建

1) master-slave

Jenkins 设置 Master/Slave

https://www.cnblogs.com/topplay/p/3875598.html

(提示:规划好从 slave 节点远程工作目录,比如目录名为: jenkins_slave

Slave 配置节点中没有 Launch agent via Java Web Start

https://blog.csdn.net/e295166319/article/details/54946966

(勾选 Java Web Start Agent Protocol/4 (TLS 加密 ) 。安装和旧协议步骤一样)

运行 slave-agent.jnlp 需安装 java jre1.81 或以 上版 本, 下载传送门 。

2) job 串行、并行

Jenkins 上下游 jobs 设置(并行、串行) -- multijob 插件

https://blog.csdn.net/ouyanggengcheng/article/details/76131289

(使用 multijob 插件 masterslave 节点 的“执行者数量”设置多些,否则子 job 过多,就没法并发而互相卡死)

3) pipeline

Jenkins Pipeline 纯脚本,效率高。但是,入门门槛高,配置可读性差,维护难。使用 multijob 插件,可视化 UI 配置更加简单易用。 Multijob 中包含的独立 job ,不能是 pipe 类型

Jenkins Pipeline 的总体介绍

https://blog.csdn.net/diantun00/article/details/81075007

Jenkins pipeline pipeline 使用之语法详解

https://www.cnblogs.com/YatHo/p/7856556.html

Jenkins pipeline 并行执行任务流

https://www.cnblogs.com/sparkdev/p/9742739.html

Jenkins Pipeline 插件十大最佳实践

http://blog.didispace.com/jenkins-pipeline-top-10-action/

4) 触发 JENKINS 远程构建

方式一:插件 Parameterized Remote Trigger

1.   username+job token 方案

https://www.cnblogs.com/wolfshining/p/7685725.html

2.   Credentials Authentication 方案

http://www.tothenew.com/blog/jenkins-parameterized-remote-trigger-plugin/

(设置了 系统凭证 触发不了远程 job 。那么改为 全局凭证

(优化:单独设置一个执行远程 job 的账户,权限可控性高,日志里能查执行者)

方式二: HTTP URL 触发 JENKINS 远程构建

匿名方案

https://www.jianshu.com/p/aa0dc1157599

User API Token 方案

https://www.cnblogs.com/tyrionyang/p/8183819.html

九、     自动化测试

Jenkins 之插件 Publish HTML reports 的使用

https://blog.csdn.net/xu19950210rou/article/details/74729296

Jenkins – Unit Testing (单元测试)

https://blog.csdn.net/henni_719/article/details/52523118

基于 Jenkins 设计自动化测试工作流

https://www.jianshu.com/p/b9f75d9dc1b7

Postman+Newman+jenkins 实现 API 自动化测试

https://www.cnblogs.com/liyanze-z/p/8270036.html

Jenkins + Jmeter 构建接口、性能测试

https://blog.csdn.net/tomoya_chen/article/details/72677336

Jenkins 自动化测试( Selenium

https://www.yiibai.com/jenkins/jenkins_automated_testing.html

十、     优化设置

1) 设置友好的构建记录名字

使用 user build vars 插件获取 jenkins 用户相关变量

https://www.cnblogs.com/honeybee/p/6525322.html

注意需要勾选 "Set jenkins user build variables."

自定义 build namebuild-name-setter + user build vars

http://www.cnblogs.com/luolizhi/p/5702301.html

#${BUILD_NUMBER}-${ENV,var="BUILD_USER"}

直接使用 ${BUILD_USER} 也可以取到名字,但是会提示 Unrecognized macro 'BUILD_USER' ,可以忽略

2) 设置详细的构建描述内容

使用 description setter 插件设置构建描述( eg :重要参数显示、 APP 二维码等)

使用 Jenkins 搭建 APP 持续集成,并展现二维码

https://blog.csdn.net/u011904605/article/details/54619549

3) 日志大小的问题

Jenkins 日志文件过大解决方案

https://cloud.tencent.com/info/a514fa30f534e52d4b2d94da3a8d839d.html

jenkins 修改 log 路径(仅 linux

http://www.cnblogs.com/weifeng1463/p/9382417.html

Avoid large log Jenkins file (and stop build if needed)

https://stackoverflow.com/questions/30805253/avoid-large-log-jenkins-file-and-stop-build-if-needed

(安装 Logfilesizechecker 插件和 build timeout 插件并在系统设置里面设置阈值)

jenkins 日志爆满 DNS 查询错误

https://blog.csdn.net/qq_33588470/article/details/54647496

4) job 并发构建

必要时, job 并发构建

http://www.mamicode.com/info-detail-2158627.html

十一、     其他插件

提示:不使用的插件可以自行卸载掉,因为插件多了经常会提示你更新

1) 多环境多配置插件 Matrix Project Plugin

(该插件已默认安装,旧名: multi-configuration

Jenkins Multi-configuration Project 使用体验

https://www.jianshu.com/p/32f6c2e08161

2) job 参数化扩展

extended choice parameter (单选,多选,读取文件中的选项)

http://www.cnblogs.com/zhaojingyu/p/9862371.html

3) jenkins 插件 build timeout build timestamp

https://www.cnblogs.com/itech/p/5694728.html

4) Email 通知功能

jenkins 配置自动发送邮件(插件: Email Extension

https://www.cnblogs.com/gcgc/p/5631385.html

使用email-ext替换Jenkins的默认邮件通知

https://www.cnblogs.com/zz0412/p/jenkins_jj_01.html

Jenkins 上配置邮件通知模板案例

https://www.jianshu.com/p/9368b6627a6d

提示:将模板文件放到 $JENKINS_HOME/email-templates 目录下,如果没有这个目录,自己创建该目录。

一、     解决方案与案例

1) Dotnet 应用

jenkins 部署 .net 平台自动化构建的方法步骤

http://www.cnblogs.com/shenh/p/8946404.html

jenkins+donet core 持续集成环境搭建

https://www.cnblogs.com/TomGui/archive/2017/04/06/6673084.html

Centos7+Docker+Jenkins+ASP.NET Core 2.0 自动化发布与部署的实现

https://www.cnblogs.com/LongJiangXie/p/7517909.html

2) IOS/ Android APP 应用

使用 Jenkins 搭建 iOS/Android 持续集成打包平台

https://blog.csdn.net/u011904605/article/details/54619549

3) nodejs 项目( webpack 打包)

Jenkins 打包 NodeJS 项目

https://my.oschina.net/mobinchao/blog/871703

===================================================

over。资料很多,足够你从入门到放弃。

欢迎向我推荐更好的资料和讨论关于 jenkins 的问题。

原文  http://www.cnblogs.com/heyuquan/p/jenkins-use-guide.html
正文到此结束
Loading...