簡體   English   中英

我的詹金斯(Jenkins)是否從我的SCM建立結帳?

[英]Are my Jenkins builds checkouts from my SCM?

試圖了解CI的這個問題,所以我已經在生產服務器中下載了Jenkins ...

1.是否在生產服務器中安裝了Jenkins(或任何其他CI系統),或者我應該為Jenkins構建使用單獨的服務器? 如果Jenkins在另一台服務器中,那么如何將構建集成為正在運行的生產代碼? 還是這個CI事情與部署無關?

然后我在/var/lib/jenkins/.ssh中創建了一個SSH密鑰,作為部署密鑰添加到我的BitbucketGit )存儲庫中。

2.這是正確的方法嗎?

...然后在項目設置的Git插件中使用jenkins用戶憑據設置存儲庫URL git@bitbucket.org:... 到目前為止,到目前為止,我的構建將項目簽出到Jenkins工作區,然后我注意到它運行的每個構建都是一個簽出,對於每個簽出,作為Composer支持的項目,我的vendors/目錄不存在,所以我不這樣做。必須具有phpunit.xml用作引導程序來加載類並運行測試的autoload.php文件。 因此,除了phpunit作為構建外殼程序命令之一之外,我還添加了composer init

3.對嗎? 我應該在每個版本上運行composer init嗎?

可能的主要問題是:我的構建是從未開發的空間構建的嗎? 我是否應該檢出並運行composer install以及項目(每次構建)每次都必須運行的腳本?

謝謝!

  1. 是否在生產服務器中安裝了Jenkins(或任何其他CI系統),或者我應該為Jenkins構建使用單獨的服務器? 如果Jenkins在另一台服務器中,那么如何將構建集成為正在運行的生產代碼? 還是這個CI事情與部署無關?

然后我在/var/lib/jenkins/.ssh中創建了一個SSH密鑰,作為部署密鑰添加到我的Bitbucket>(Git)存儲庫中...

  1. 這是正確的方法嗎?

沒錯 我有一堆以此方式配置的服務器。 在不久的將來,我想研究是否可以使用SSH憑據插件將我的憑據存儲在此處,以便不必擔心該密鑰的文件系統權限。

  1. 這是正確的嗎? 我應該在每個版本上運行composer init嗎?

可能的主要問題是:我的構建是從未開發的空間構建的嗎? 我是否應該檢出並運行composer install以及項目(每次構建)每次都必須運行的腳本?

這取決於您的要求。 您可以構建多個版本,也可以構建參數化版本以支持不同的行為。 例如,我有Laravel構建,根據環境參數,他們可能會使用Selenium進行進一步測試,或者只是運行phpunit。

對於每個PHP應用程序,我通常在Jenkins中都有兩個項目。 它從git中檢出代碼,清除工作空間中其他構建的任何剩余部分,並調用Laravel的Envoy來構建項目。 它的基本作用是調用帶有一些額外參數的composer install ,並調用遷移和數據庫種子例程以准備應用程序以進行測試。

當我升級(使用Jenkins Promoted Builds插件)構建,並復制(使用Copy Artifacts插件 )構建時創建並已經測試的工作空間,並通過scp將其部署到QA服務器中的文件夾時,將觸發另一個作業。 然后,它會更新一些符號鏈接,最后可以進行測試了。

隨着時間的推移以及開發人員和其他團隊的更多要求,您將熟悉許多其他插件,例如Email-ext插件 ,以發送自定義通知並包括有關構建的更多信息。

最佳實踐將為Jenkins定義一個單獨的VM,只是為了使其與可能部署TO的其他環境區分開。

Jenkins可以使用腳本刪除其他服務,因此要刪除正在部署項目的運行Jenkins的同一個tomcat,將會很不方便。

我陷入陣營,而陣營則傾向於將多個詹金斯的工作聯系在一起。 建立一份工作。 另一個測試。 第三個部署。 這樣,您就可以准確地知道哪個工作有問題。 您還可以查看作業的運行時間,以更好地了解花費了這么長時間(部署了嗎?是否進行了單元測試?),並解決了POV較高的問題。

我在2015年博伊西密碼訓練營(Boise Code Camp)上做了一份詹金斯最佳實踐演講,網址為: http : //lanyrd.com/2015/boise-code-camp/sdkggb/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM