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
"***\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文件(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)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

自动化工具-jenkins的更多相关文章

  1. C#最佳工具集合:IDE、分析、自动化工具等

    C#是企业中广泛使用的编程语言,特别是那些依赖微软的程序语言.如果您使用C#构建应用程序,则最有可能使用Visual Studio,并且已经寻找了一些扩展来对您的开发进行管理.但是,这个工具列表可能会 ...

  2. 在 Azure 中将基础结构自动化工具与虚拟机配合使用

    若要以一致的方式大规模创建和管理 Azure 虚拟机 (VM),通常需要某种形式的自动化. 可以通过许多工具和解决方案来自动完成整个 Azure 基础结构部署和管理生命周期. 本文介绍了一些可以在 A ...

  3. 十个强大的DevOps基础设施自动化工具,不容错过

    Devops基础设施自动化的工具 有许多工具用于基础设施自动化.使用哪个工具决定于体系结构和基础设施的需求.下面我们列出了一些伟大的工具,用于不同类别配置管理.编制.持续集成.监控等. 1.Chef ...

  4. 自动化打包 Jenkins 持续集成 Git Gradle MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  5. Web自动化工具对比

    首先说一下我对Web自动化测试与CS自动化测试的认识.从宏观对比都是通过脚本自动化完成功能的验证,区别不大.Web测试更为显著的浏览器兼容性.安全,以及与Web技术相关的表单测试.链接测试等,其实都是 ...

  6. DevOps - 自动化工具

    章节 DevOps – 为什么 DevOps – 与传统方式区别 DevOps – 优势 DevOps – 不适用 DevOps – 生命周期 DevOps – 与敏捷方法区别 DevOps – 实施 ...

  7. iOS自动化打包 Jenkins+Gitlab+Fastlane+蒲公英+钉钉

    前言 这两天花时间整理一下自动化打包的整套流程,现在iOS端的整套流程是没有问题了,这个过程中踩得坑也的确是特别多,所以这周末把整个流程整理一下,总结出来这篇文章,希望能对有需要的小伙伴有点点帮助. ...

  8. web自动化工具-开篇

    web自动化工具-开篇 最近几年,前端技术风一样的速度迭代更新,各种框架工具雨后春笋般涌现,作为一个平凡的开发者,也只能在洪流中沉沉浮浮,微不足道,以前前端叫做切图仔.美工,如今改了称号叫前端工程师, ...

  9. web自动化工具-liveStyle

    web自动化工具-liveStyle LiveStyle. The first bi-directional real-time edit tool for CSS, LESS and SCSS主要用 ...

随机推荐

  1. Java下载https文件上传到阿里云oss服务器

    Java下载https文件上传到阿里云oss服务器 今天做了一个从Https链接中下载音频并且上传到OSS服务器,记录一下希望大家也少走弯路. 一共两个类: 1 .实现自己的证书信任管理器类 /** ...

  2. [Java学习] Java包装类、拆箱和装箱详解

    虽然 Java 语言是典型的面向对象编程语言,但其中的八种基本数据类型并不支持面向对象编程,基本类型的数据不具备“对象”的特性——不携带属性.没有方法可调用. 沿用它们只是为了迎合人类根深蒂固的习惯, ...

  3. 【转】ArcGIS API for Silverlight/WPF 2.1学习笔记(三)

    六.Feature Layer Feature Layer是一种特殊的Graphics layer(继承自Graphics layer),除了像Graphics layer一样包含和显示Graphic ...

  4. 清空mailq 队列里面的邮件

    tmp_=`mailq | grep -E "root" | awk '{print $1}'` for i in $tmp_;do postsuper -d $i;done po ...

  5. php-------代码加密的几种方法

    代码加密,也是保护网站安全的一种方法,以下我们来介绍一下如何通过PHP的自定义函数来加密我们的PHP代码. 方法一: <?php function encode_file_contents($f ...

  6. Leetcode 90

    // 重复元素在去重的时候会出现顺序不同去不了重,这时候需要对add进行排序class Solution { public: vector<vector<int>> subse ...

  7. OC 归档和解档

    #import <Foundation/Foundation.h> #define PATH @"/Users/mac/Desktop/file.txt" int ma ...

  8. MessageFormat格式化数字

    使用MessageFormat格式化数字,有一个很隐蔽的技巧点: public static void main(String[] args) { MessageFormat mf = new Mes ...

  9. forget word out a~2

        1● an 不,非,无   2● amphi     两个,两种     3● ad 做,加强:  

  10. UVALive 2318 水题

    给出c 个竞争者.v 个投票人.每个投票人的投票顺序.问你谁会胜出.在第几轮.完全是个水题.比赛的时候debug接近两个点没过.因此差点放弃了整场比赛.猜测是错在找最大和第二大的序号哪里错的.因为我换 ...