Jenkins 构建项目流程
本文整理了 jenkins新建任務是幾個環節的配置,不是很全,只是作為筆記參考,?如果你也整理了類似的 可以發出來 我們一起參考學習?
參考的網址:
https://blog.51cto.com/u_13767724/2398549
https://zhuanlan.zhihu.com/p/157592663
https://www.tqwba.com/x_d/jishu/247564.html
??任務類型?
自由風格的軟件項目
這里的所有配置都由自己定義,默認也不會添加特定環境的選項。
maven項目
jenkins利用你的pom文件進行初始化配置,可以減少手動的配置工作。
External Job
Jenkins可用于監視進程的非交互式執行,例如cron作業,procmail,inetd啟動的進程。通常這些任務是完全不受監控的(這使得您在發生錯誤時很難注意到),或者無論成功或失敗都會不斷發送電子郵件(導致相同的情況,因為您無論如何都會快速開始忽略它們。)使用Jenkins可以讓您以很少的開銷監視大量此類任務。
構建一個多配置項目
適用于多環境、平臺指定構建等。
最后一個 姑且叫做:copy from
在已有的任務中復制一個任務配置,可以減少重復的配置工作。
??General?
General是構建任務的一些基本配置。名稱,描述之類的
項目名稱: 是剛才創建構建任務步驟設置的,當然在這里也可以更改。
描述: 對構建任務的描述。
丟棄舊的構建:服務器資源是有限的,有時候保存了太多的歷史構建,會導致Jenkins速度變慢,并且服務器硬盤資源也會被占滿。當然下方的"保持構建天數" 和 保持構建的最大個數是可以自定義的,需要根據實際情況確定一個合理的值。
-
-
保持構建天數:當歷史構建超過多少天后會自動刪除
-
保留構建的最大個數:當構建的個數超過多少個的時候會把之前的構建刪除掉
-
這兩種策略是可以同時存在的,構建歷史達到上面的任何一個閾值都會執行刪除規則
-
參數化構建過程:指的是外置傳參的一種形式
-
-
名稱 選項 描述 ?添加參數 有各種參數 布爾值,字符串等等,這里可以傳參 當項目build的時候 就相當于是做了 名稱=選項,如果最下面是shell腳本等獲取參數的語言就可以從這里拿參數:${參數name} 或者 $參數name。
-
關閉構建:這個就相當于禁用這個build,因為一些其他依賴原因不能發布但是你又不能刪所以就可以在這里點擊關閉構建,但是一般不在這里關閉構件.
??Source Code Management
Git: 支持主流的github 和gitlab代碼倉庫。
Repositories:
-
-
Repository URL:倉庫地址,gitlab需要密碼可以這樣填寫: http://賬號:密碼@鏈接地址
-
Credentials:憑證。可以使用HTTP方式的用戶名密碼,也可以是RSA文件。但要通過后面的"ADD"按鈕添加憑證。
-
Branches to build:構建的分支。*/master表示master分支,也可以設置為其他分支。
源碼瀏覽器:你所使用的代碼倉庫管理工具,如github, gitlab.
-
-
URL:填入上方的倉庫地址即可。
-
Version: 8.7 這個是我們gitlab服務器的版本。(一般不配置)
-
??Build Triggers
如果要通過訪問特殊的預定義URL(方便腳本)來觸發新構建,請啟用此選項。此功能的一個典型示例是從源控件系統的鉤子腳本觸發新構建,當某人剛剛將更改提交到存儲庫時,或者從解析源控件電子郵件通知的腳本中觸發。需要以字符串的形式提供授權令牌,以便只有知道它的人才能遠程觸發此項目的構建。
Build when a change is pushed to GitLab. GitLab webhook URL:配置GitLab以向Jenkins實例(如GitLab CI)發送POST請求。
-
-
Enabled GitLab triggers(啟用GitLab觸發器)
-
Push Events ? :推送事件默認是勾選的
-
Opened Merge Request Events:打開合并請求事件
-
Accepted Merge Request Events:接受合并請求事件
-
Closed Merge Request Events:關閉合并請求事件
-
Rebuild open Merge Requests:重建打開的合并請求 ( Never,On push to source branch在推送源分支 )
-
On push to source or target branch:在推送到源或目標分支
-
Approved Merge Requests (EE-only) :批準的合并請求(僅限EE)
-
Comments ? ? ?#注釋
-
Comment (regex) for triggering a build ? :用于觸發構建的注釋(正則表達式)填充后,與該正則表達式匹配的合并請求中的注釋將觸發構建。
-
GitHub hook trigger for GITScm polling(用于GITScm輪詢的GitHub鉤子觸發器):如果Jenkins將從Git SCM部分中定義的repo接收PUSH GitHub掛鉤,它將觸發Git SCM輪詢邏輯。因此,輪詢邏輯實際上屬于Git SCM。
其他工程構建后觸發:設置觸發器,以便在其他一些項目完成構建時,為該項目安排新的構建。例如,這對于在構建完成后運行大量測試很方便。此配置補充了上游項目的“構建后操作”中的“構建其他項目”部分,但在要配置下游項目時更可取。關注的項目:?在輸入框輸入依賴于哪個項目就行
只有構建穩定時觸發、即使構建不穩定時也會觸發、即使構建失敗時也會觸發
定時構建:提供類似cron的功能以定期執行此項目。此功能主要用于將Jenkins用作cron替換,并且它不是連續構建軟件項目的理想選擇。當人們第一次開始持續集成時,他們常常習慣于定期安排的構建,例如每晚/每周使用此功能。但是,持續集成的目的是在更改后立即開始構建,以便為更改提供快速反饋。為此,您需要將SCM更改通知連接到Jenkins。因此,在使用此功能之前,請停下來問自己這是否真的是您想要的。
日程表: 該字段遵循cron的語法(略有不同)。具體來說,每行包含由TAB或空格分隔的5個字段: MINUTE?HOUR?DOM?MONTH?DOW MINUTE??Minutes?within?the?hour?(0–59) HOUR??The?hour?of?the?day?(0–23) DOM??The?day?of?the?month?(1–31) MONTH??The?month?(1–12) DOW??The?day?of?the?week?(0–7)?where?0?and?7?are?Sunday. 以#開頭的空行和行將被忽略為注釋。 此外,還支持@yearly,@?annually,@?monthly,@?weekly,@?daily,@?midnight和@hourly作為方便的別名。這些使用哈希系統進行自動平衡。例如,@?hourly與H?* * * *相同,可能意味著在一小時內的任何時間。 @midnight實際上意味著在凌晨12:00到凌晨2:59之間的某個時間。 例子: H/15?* * * * #每十五分鐘一次(也許在:07:,22,:37,:52) H(0-29)/10?* * * * #每小時上半場每十分鐘一次(三次,也許在:04,:14,:24) 45?9-16?/?2?* *?1-5???#每小時一次,每小時45分鐘,從上午9:45開始,每個工作日的下午3:45結束。 H?H(9-16)/?2?* *?1-5??#每個工作日上午9點到下午5點每兩個小時一次(可能是上午10點38分,下午12點38分,下午2點38分,下午4點38分) H?H?1,15?1-11?* #每月1日和15日每天一次,12月除外??Build Envirconment
Delete workspace before build starts [構建開始前刪除工作區]:每次構建之前會把這個job所在的工作區目錄里面的東西清空掉再進行構建 (需要插件:Workspace Cleanup)
Use secret text(s) or file(s):允許獲取各種類型的憑據,并從shell構建步驟等中使用它們。每個綁定都將定義一個環境變量。(需要插件:Credentials Binding)
Abort the build if it’s stuck [如果它被卡住,則中止構建](需要插件:Build-timeout)
Time-out strategy (選擇以下策略之一:):Absolute #根據固定的超時中止構建。Deadline #根據HH:MM:SS或HH:MM(24小時時間格式)中指定的截止時間中止構建Elastic #定義在殺死構建之前等待的時間,作為最后n次成功構建的持續時間的平均值的百分比。Likely stuck #當作業比以前的運行時間長許多次時,中止構建。No Activity #自上次日志輸出以來指定的秒數超時。 Time-out variable(超時變量):設置構建超時環境變量 Time-out actions:超時發生時執行的操作。如果沒有指定,將使用“中止構建”。Add timestamps to the Console Outpu:將時間戳添加到控制臺輸出(需要插件:timestamps)
Color ANSI Console Output [顏色ANSI控制臺輸出]:ANSI color map:存在多個選項,默認情況下,選擇xterm即可。(需要插件:AnsiColor)
Set Build Name [設置構建名稱]:Build Name:通常,構建以其序列號命名,但您可以通過設置新構建的名稱來更改它。該字段可以包含以下宏 (需要插件:Build Name and Description Setter)
${FAILED_TESTS}?#如果任何測試失敗,則顯示失敗的單元測試信息。showStack #在失敗的測試輸出中顯示堆棧跟蹤。默認為true。showMessage #在測試輸出失敗時顯示錯誤消息。默認為true。maxTests #最多顯示這么多測試。默認情況下不設置限制。onlyRegressions #僅顯示與先前構建不同的失敗測試。默認為false。 ${TEST_COUNTS,var="TYPE"}?#根據傳入的類型(var)顯示測試數(總計,通過,失敗,跳過)。默認為總計。 ${GIT_BRANCH}?#擴展為已構建的分支的名稱。Parameters all #如果指定,則列出指向給定提交的所有分支。默認情況下,令牌會擴展為其中一個。 fullName #如果指定,則此標記將擴展為完整的分支名稱,例如“origin / master”。否則,它只會擴展為短名稱,例如“master”。 ${GIT_REVISION}?#擴展為指向已構建的提交的Git SHA1提交ID。Parameters length=N (optional, default to 40) #指定提交ID長度。完整的SHA1提交ID長度為40個字符,但通常會將其剪切為8或12,因為它通常提供足夠的唯一性并且更加清晰。 ${ADMIN_EMAIL}?#顯示Jenkins管理員的電子郵件地址 ${BUILD_CAUSE}?${CAUSE}??#顯示構建的原因。 ${BUILD_LOG_EXCERPT}?#顯示構建日志的摘錄。start #正則表達式匹配摘錄起始行(排除匹配行)。end #正則表達式匹配摘錄結束行(排除匹配行)。 ${BUILD_LOG}?#顯示構建日志結尾。maxLines #最多顯示這么多行的日志。默認為250。escapeHtml #如果為true,則HTML將被轉義。默認為false。 ${BUILD_LOG_MULTILINE_REGEX}?#顯示與正則表達式匹配的構建日志段。regex #java.util.regex.Pattern包含與此正則表達式匹配的構建日志的段。另請參見null。沒有默認值。必需參數maxMatches #要包含的最大匹配數。如果為0,則將包括所有匹配。默認為0。showTruncatedLines #如果為true,則包括[...截斷的### lines ...]行。默認為true。substText #如果為非null,請將此文本插入電子郵件而不是整個段。默認為null。escapeHtml #如果為true,則轉義HTML。默認為false。matchedSegmentHtmlStyle #如果為非null,則輸出HTML。匹配的行將變為<b style =“your-style-value”> html轉義匹配行</ b>。默認為null。 ${BUILD_LOG_REGEX}?#顯示構建日志中與正則表達式匹配的行。regex #包含與此正則表達式匹配的行。另請參見java.util.regex.Pattern.Defaults to“(?i)\\ b(error | exception | fatal | fail(ed | ure)| un(defined | resolved))\\ b”linesBefore #匹配行之前要包含的行數。與另一個匹配或linesAfter重疊的行僅包含一次。默認為0。linesAfter #匹配行后要包含的行數。與另一個匹配或linesBefore重疊的行只包含一次。默認為0。maxMatches #要包含的最大匹配數。如果為0,則將包括所有匹配。默認為0。showTruncatedLines #如果為true,則包括[...截斷的### lines ...]行。默認為true。substText #如果為非null,請將此文本插入電子郵件而不是整行。默認為null。escapeHtml #如果為true,則轉義HTML。違約是假的。matchedLineHtmlStyle #如果為非null,則輸出HTML。匹配的行將變為<b style =“your-style-value”> html轉義匹配行</ b>。默認為null。addNewline #如果為true,則在subsText之后添加換行符。默認為true。defaultValue #如果沒有替換任何內容,將使用此值。 ${BUILD_NUMBER}?#擴展為當前內部版本號,這是一個標識構建的順序自動遞增唯一編號,例如“125” ${BUILD_STATUS}?#顯示當前構建的狀態。(failing, success等......) ${BUILD_URL}?#顯示當前構建的URL ${CHANGES_SINCE_LAST_BUILD}?${CHANGES}???#顯示自上次構建以來的更改。并非所有修訂系統都支持%d和%r。如果指定showPaths參數被忽略。默認為“[%a]%m \\ n”showDependencies #如果為true,則顯示此構建所依賴的項目的更改。默認為falseshowPaths #如果為true,則顯示由提交修改的路徑。默認為falseformat #對于列出的每個提交,包含%X的字符串,其中%x是以下之一:%a(作者)、%d(日期)、%m(信息)、%p(路徑)、%r(版本)pathFormat #包含%p的字符串,指示如何打印路徑。Defaults to "\\t%p\\n"regex #正則表達式。replace #替換與給定正則表達式匹配的更改消息的所有子字符串。default #未檢測到更改時使用的消息。默認為“無更改\ n” ${CHANGES_SINCE_LAST_SUCCESS}?#顯示自上次成功構建以來的更改。默認為#%n\n%c\nreverse #如果為true,則將最新版本顯示在頂部而不是底部。默認為false。format #對于列出的每個構建,包含%X的字符串,其中%X是其中之一%c #變化%n #編號changesFormat #對于構建中的每個更改。 ${CHANGES_SINCE_LAST_UNSTABLE}?#擴展到自上次不穩定或成功構建以來的更改。參數跟上面一樣 ${ENV,var="VARIABLENAME"}?#從構建環境擴展到環境變量(此處指定為VARIABLENAME)。請注意,這不包括構建腳本本身設置的任何變量,只包括由Jenkins和其他插件設置的變量。 ${JENKINS_URL}?#顯示Jenkins服務器的URL。(您可以在系統配置頁面上更改此設置。) ${JOB_DESCRIPTION}?#顯示作業的說明。 ${LOG_REGEX}?#使用正則表達式查找單個日志條目,并使用其中的捕獲組生成新輸出。這部分基于description-setter插件(https://github.com/jenkinsci/description-setter-plugin)。 ${PROJECT_NAME}?#顯示項目的全名。(參見AbstractProject.getFullDisplayName) ${PROJECT_DISPLAY_NAME}?#顯示項目的顯示名稱。(參見AbstractProject.getDisplayName) ${PROJECT_URL}?#顯示項目頁面的URL。 ${PROPFILE,file="FILENAME",property="PROPERTYNAME"}?#擴展為屬性文件中的屬性值。文件名相對于構建工作區根目錄。 ${FILE,path="PATH"}?#擴展為文件的內容。文件路徑相對于構建工作空間根目錄。 ${XML,file="FILE",xpath="XPATH"}?#擴展到針對給定XML文件運行的XPath表達式的結果。如果XPath求值為多個值,則返回以分號分隔的字符串。文件路徑相對于構建工作空間根目錄。Set jenkins user build variables [設置jenkins用戶構建變量]: 此插件用于設置用戶構建變量 (需要插件:user build vars)
??Pre Steps
點擊Add post-build step添加對應操作
-
-
Execute Windows Batch command:執行Windows批處理命令
-
xecute shell:執行shell腳本 注意 jenkins無法后臺執行命令問題
-
Invoke Ant:調用Ant腳本
-
Invoke Gradle script:調用Gradle腳本
-
Invoke top-level Maven targets:調用Maven項目等
-
??Build
Root POM:用于設置指定的pom文件
Goal and options:用于設置待執行的maven命令,如果在之前的Jenkins初始配置中配置好了全局環境變量,這里maven version的下拉框中就可以直接選擇maven版本了,然后在goals中輸入maven的命令clean package -Dmaven.test.skip=true(因為此項配置就是在mvn 命令下執行,Jenkins會帶上mvn再執行,所以此處不需要填寫mvn)
??Post Strps
Run only if build succeeds:僅當構建成功時執行
Run only if build succeeds or is unstable:僅當構建成功或者不穩定時執行
Run regardless of bulid result:不管構建結果如何,都執行
選擇下方的增加構建步驟。
-
-
?Eexcute shell:執行shell命令,該工具是針對linux環境的,windows環境也有對應的工 具"Execute Windows batch command"。在構建之前,可能我們需要執行一些命令,比如壓縮包的解壓之類的。為了演示,我就簡單的執行 "echo $RANDOM" 這樣的linux shell下生產隨機數命令。
-
Invoke Ant:Ant是一款java項目構建工具,當然也能用來構建php。
-
Ant Version:選擇Ant版本。這個ant版本是安裝在jenkins服務器上的版本,并且需要在jenkins"系統工具"中設置好。
-
Targets:要執行的操作,一行一個操作任務。以上圖為例,build是構建,tar是打包。
-
Build File: 是Ant構建的配置文件,如果不指定,則是在項目路徑下的workspace目錄中的build.xml。build.xml文件具體怎么配置,后面再細講。
-
properties: 設定一些變量,這些變量可以在build.xml 中被引用。
-
Send files or execute commands over SSH:發送文件到遠程主機或執行命令(腳本)
-
Name: SSH Server的名稱。SSH Server可以在jenkins-系統設置中配置。
-
source files: 需要發送給遠程主機的源文件。
-
Remove prefix: 移除前面的路徑。如果不設置這個參數,則遠程主機會自動創建構建源 source files 包含的那個路徑。
-
Remote directory: 遠程主機目錄。
-
Exec command:在遠程主機上執行的命令,或者執行的腳本。
-
??Post-build Actions
構建后動作,比如郵件通知、短信通知、釘釘通知等,需要安裝插件支持,這樣可以在構建任務完成后第一時間以各種形式通知管理人員。
Publish Clover PHP Coverage Report:發布代碼覆蓋率xml格式的文件報告。路徑會在"build.xml"文件中定義
Publish HTML reports:發布代碼覆蓋率的HTML報告。
Report Crap: 發布crap報告。
E-mail Notification: 郵件通知,構建完成后發郵件到指定的郵箱。
🎊:這個文章到這里就結束啦 如果對你有幫助的話 可以點贊評論支持一下
??
如果覺得我的文對你有幫助的話 可以關注下我的公眾號 一般寫文第一時間發布到公眾號中
公眾號名稱 咕咕崽
二維碼:?
總結
以上是生活随笔為你收集整理的Jenkins 构建项目流程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端学习(1036):bootstrap
- 下一篇: [云原生专题-11]:容器 - 如何构建