自动化工具-jenkins

jenkins自动化工具使用教程

 

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

  1. 企业做大,项目变多,多端支持(web,h5,小程序等)
  2. 微服务提倡高内聚低耦合,项目因拆分变多
  3. DevOps自动化运维流行
  4. 集群化,高可用部署方案
  5. 避免人工操作出现的错误
  6. 集成管理系统,实现提交发布、发布审批、发布等UI可视化操作

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

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

一、    安装

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

(exit,restart,reload)

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参数/F之tokens详解

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安装包,安装组件:roslyn、msbuild、webdeploy、对应版本的.net framework、nuget等

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支持的参数有差异)

01
"***2017ProfessionalMSBuild15.0Binmsbuild.exe" /toolsversion:15.0 /t:Rebuild  /p:DeployOnBuild=true /p:Configuration=Release /p:DebugType=none /p:ExcludeGeneratedDebugSymbol=true /p:PublishProfile=D:DevOpsjenkins_exCommonConfigjenkins_profile.pubxml /p:publishUrl=D:DevOpsjenkins_exBuildProd***AttachFile /p:VisualStudioVersion=15.0 /p:TargetFrameworkVersion=v4.6.1 D:DevOpsjenkins_exSourceProd***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文件(js,css,cshtml等)的输出目录

toolsversion

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

DeployOnBuild

 

true表示启用编译并发布

Configuration

发布模式Debug 和 Release

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:一键回滚站点集群

https://www.cnblogs.com/heyuquan/p/jenkins-onekey-rollback.html

七、    文件传输

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)  CopyArtifact插件

把某个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 插件:master 和 slave 节点 的“执行者数量”设置多些,否则子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

  1. 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 name (build-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)IOSAndroid APP应用

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

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

3)nodejs项目(webpack打包)

Jenkins打包NodeJS项目

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

 

原文地址:https://www.cnblogs.com/Leo_wl/p/10280685.html