自動化工具-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
"***\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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM