Jenkins + svn + curl 實現 asp.net 應用的自動發佈

網上更多的是 Jenkins+git 的組合形式

而 svn 相關的 post-commit 很多是通過執行 python 腳本或者java程序的。

至於用 Jenkins 部署 asp.net 應用 的,更是少之又少

這裏分享下自己的實現方式,基本都是參考前人的各項經驗

 

1.首先 要有 Jenkins ,還沒有的需要先下載了

Jenkins 安裝好 Subversion (svn) 插件

新建 一個 任務:

 

選擇 subversion 並配置相關信息:

 

構建觸發器選擇遠程觸發,根據情況設置一個 token,下面有提示,注意看提示

上面框框裏填的 token 值就是 在 url 參數中token 的值

 

構建配置

(因爲是asp.net應用,環境配置我們直接手動配置iis了)

這裏的構建比較簡單,直接將同步的文件複製到 應用託管的目錄下

%WORKSPACE% 是Jenkins 提供的變量,點擊“可用環境變量列表” 可以看看有哪些可以用

 

最後點擊保存

 

Jenkins 部分就到這了。

 

 

2. svn 部分(這裏svn是window環境下)

首先 在svn server 管理工具上選擇要同步發佈的倉庫,進入 屬性 ,選擇 hook ,編輯 post-commit

svn hook  相關內容 參考 https://www.cnblogs.com/jianxuanbing/p/6835765.html

需要說明下,各個 commit 觸發的內容 是 可執行文件,在 window 平臺表現爲 cmd 後綴,所以上面直接些 docs 命令

我們需要的效果是:在提交後,根據提交內容判斷是否包含 “publish” ,包含則執行發佈

源碼中的 %1  %2  是傳入的參數,分別對應 命令執行時傳遞參數的順序,

源碼:

for /f "tokens=1,2 delims=:" %%a in ('svnlook log -r %2 %1') do (
    if not defined MESSAGE set MESSAGE=%%a
)

echo %MESSAGE%|findstr "publish" >nul
if %errorlevel% equ 0 (
  d:
  cd D:\Program Files\curl-7.69.1-win64-mingw\bin
  curl -G http://localhost:8080/job/test/build?token=token
)

注意源碼中:

   curl 的使用參考 : https://www.cnblogs.com/xing901022/p/4652624.html

   如何匹配內容參考:https://blog.csdn.net/xiaoding133/article/details/39253213

   curl的地址爲 前面 Jenkins 配置的遠程構建 觸發地址

 

 

 

在配置好了之後,我們嘗試提交數據,並備註 publish

但可能會失敗,原因或者解決方案參考:https://www.jianshu.com/p/aa0dc1157599

還可能會失敗,可能執行沒有權限,參考:https://blog.csdn.net/leeyongit/article/details/28874133

如果是 Linux 平臺,要注意 post-commit 要賦予 執行權限,參考:https://blog.csdn.net/dahuzix/article/details/49053947

over

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章