
我們jenkins發布我們的編譯固件去制品庫,其中上傳方式有很多中,這里提供FTP的兩種方式:
來源:https://www.cnblogs.com/zz0412/p/jenkins_jj_04.html
來源:https://www.liujiajia.me/2020/3/26/jenkins-upload-to-ftp-server-with-pipeline
一、 GUI插件配置
說明:這個插件可以將構建的產物(例如:Jar)發布到FTP中去。
官方說明:Publish Over FTP Plugin
安裝步驟:
系統管理→管理插件→可選插件→Artifact Uploaders→Publish Over FTP Plugin
系統設置
FTP Server Name:給你自己看的名字,愛叫什么叫什么
Hostname:主機IP或者域名
Username:ftp登陸用戶名
Password:ftp密碼
Remote Directory:遠程根目錄(建議設置為:/)

圖1 系統設置基本界面
點擊Test Configuration上面的高級,如下圖:
Port:端口(不知道問管理員去)
Timeout (ms):超時時間(毫秒)
Use active data mode:?(未選中)默認選項使用PASV(被動模式),選中使用PORT (主動模式)
Don't make nested dirs:不創建下級目錄(具體的自己看幫助)

圖2 系統設置高級界面
上圖右下角還有一個高級選項。有興趣的自己可以折騰下。提示:你需要先保存后,刷新頁面,在配置。不然有個選項無法選擇的。
?項目配置
啟用步驟:
構建后操作→Add post-build action→Send build artifacts over FTP
FTP Server Name:選個一個你在系統設置里配置的配置的名字
Transfer Set Source files:需要上傳的文件(注意:相對于工作區的路徑,可以是單個文件也可以是目錄)
Remove prefix:移除目錄(只能指定Transfer Set Source files中的目錄)
Remote directory:遠程目錄(根據你的需求填寫吧,因為我這兒是測試,所以偷懶直接用/)

?圖3 項目設置基本界面
點擊Remote directory后面的高級,如下圖
Exclude files:排除的文件(在你傳輸目錄的時候很有用,使用通配符,例如:**/*.log,**/*.tmp,.git/)
Pattern separator:分隔符(配置Exclude files和Source files的分隔符。如果你這兒更改了,上面的內容也需要更改)
No default excludes:禁止默認的排除規則(具體的自己看幫助)
Make empty dirs:此選項會更改插件的默認行為。默認行為是匹配該文件是否存在,如果存在則創建目錄存放。選中此選項會直接創建一個目錄存放文件,即使是空目錄。(個人理解)
Flatten files:只在ftp上建立文件,不創建目錄(除了遠程目錄)
Remote directory is a date format:遠程目錄建立帶日期的文件夾(需要在Remote directory中配置日期格式),具體格式參考下表:
| Remote directory | Directories created |
|---|
'qa-approved/'yyyyMMddHHmmss | qa-approved/20101107154555 |
'builds/'yyyy/MM/dd/'build-${BUILD_NUMBER}' | builds/2010/11/07/build-456?(if the build was number 456) |
yyyy_MM/'build'-EEE-d-HHmmss | 2010_11/build-Sun-7-154555 |
yyyy-MM-dd_HH-mm-ss | 2010-11-07_15-45-55 |
Clean remote:上傳前會刪除遠程目錄中的所有的文件(血的教訓啊,測試的時候用的是運營小組的ftp,然后一不小心就把他們的數據刪除了,害的我去做數據恢復。)
ASCII mode:文件傳輸的方式,一般默認不選。

??圖4 項目設置高級界面
?好了,常用的選項就這些,其他的自己折騰吧。這個插件適合動手能力強的人。
二、?Pipeline?腳本發布
1. 安裝?Publish Over FTP?插件
首先要在?Manage Jenkins → Manage Plugins?中安裝?Publish Over FTP?插件。
2. 配置?FTP Server
之后需要在?Manage Jenkins → Configure System?頁面的?Publish Over FTP?區域添加?FTP Server,其中的?Name?在后面的?Pipeline?腳本中會用到。
3.?Pipeline?腳本
最后在腳本中通過?ftpPublisher?方法執行上傳操作。
關于腳本的寫法可以在 流水線語法 頁面選擇?ftpPublisher: Send build artifacts over FTP?示例自動生成腳本。
需要注意的有以下幾點:
masterNodeName?和?paramPublish?參數是必須的,自動生成的腳本中不知道為什么不含這兩個參數;
publishers → configName?值為第二步中設置的?FTP Server Name;
remoteDirectory?指定上傳的遠端目錄
sourceFiles?指定需要上傳的文件
removePrefix?設置為需要過濾掉的文件前綴
stage('Upload') { steps { ftpPublisher alwaysPublishFromMaster: false, continueOnError: false, failOnError: false, masterNodeName: '', paramPublish: null, publishers: [[ configName: 'SOA-D', transfers: [[ asciiMode: false, cleanRemote: false, excludes: '', flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: 'server', remoteDirectorySDF: false, removePrefix: 'OctopusSoa/OctopusApi/target', sourceFiles: 'OctopusSoa/OctopusApi/target/*.jar' ]], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false ]] }}
???????????????? END ????????????????
推薦閱讀
【1】jetson nano開發使用的基礎詳細分享
【2】Linux開發coredump文件分析實戰分享
【3】CPU中的程序是怎么運行起來的?必讀
【4】cartographer環境建立以及建圖測試
【5】設計模式之簡單工廠模式、工廠模式、抽象工廠模式的對比
【羽林君】本公眾號全部原創干貨已整理成一個目錄,回復[?資源?]即可獲得。