因此,經過多年使用CruiseControl.NET進行持續集成任務,Iv'e終於決定咬緊牙關,屈服於JavaCI的世界,即詹金斯。讓詹金斯CI控制主管D
如果我已經構建了我的構建系統,並且它的主要工作是接受最後一步,我的部署步驟,似乎我無法完成我想要的任務。
我試圖建立
一個DOTNET核心網絡應用程序,包括使用微軟的MVC技術的一個C#後端和前端使用奧裏利亞Web應用框架編寫的打字稿。
構建和部署該應用程序手動是
- DOTNET恢復
- NPM安裝的步驟
- DOTNET建立
- DOTNET發佈
- 服務監督員停止(必須以root身份運行)
- rm -R/web/app/*(必須作爲www-data或root運行)
- CP -R/buildoutput /網絡/應用(必須運行作爲WWW的數據或根)
- 服務管理者開始(必須作爲root運行)
構建系統是在64位運行Ubuntu 16.04實例,並且jenkins被設置爲每5分鐘輪詢一次持有源代碼的Git Repositiory以檢查更改。
什麼Iv'e走到這一步,
每一件事上升到「服務監督員停止」項,完美的作品。無論我嘗試什麼,我都找不到一個理智的方式來執行根步驟。
這是我在詹金斯工作至今:
的「DeployFromJenkins.sh」 shell腳本,沒有什麼神奇的,它只是有以下表現在:(實際的服務器路徑具有被刪)
#!/bin/bash
/usr/sbin/service supervisor stop
rm -r /WEBAPPFOLDER/*
cp -R "/JENKINSBUILD/." /WEBAPPFOLDER/
/usr/sbin/service supervisor start
這個版本失敗,因爲該詹金斯運行作爲詹金斯,從而試圖運行部署腳本詹金斯,這意味着沒有停止/啓動服務的事實。
Iv'e試過其他方式也一樣,小的web應用程序以root身份運行的例子,但我無法弄清楚如何使詹金斯發送/接收URL請求,用信號文件,但我無法弄清楚如何讓jenkins讀取/寫入信號量文件。
作爲新的使用詹金斯,我會拿一個流行在寫一個插件,但我沒有時間了,我還不知道詹金斯不夠好正確地使用它,不去管學習它的API 。
所以,現在我的問題...
什麼是最好的什麼來實現我需要實現的,我知道我的Linux和Windows系統的方式很好,所以不要擔心提出瘋狂的想法。
我認爲我實際需要做的是解決部署步驟,其餘部分工作得非常好,在這種情況下,人們可以對部署步驟做出更好的建議,是否有更好的插件可能不會知道關於?
PS:我也不是一個真正的主管專家,我明白它可以做得比我目前使用它更多,只是爲了啓動/停止和監視作業。
在此先感謝.....
您是否在'DeployFromJenkins.sh'腳本中嘗試過使用'su -c'或'sudo'? – omajid
有趣的是,我從來沒有想到,今天早上偶然發現一個帖子,讓我跑步。所以當我看到這個評論時,我正要來這裏回答我自己的問題:-) – shawty