首頁 >後端開發 >php教程 >在詹金斯準備和建立PHP項目

在詹金斯準備和建立PHP項目

Christopher Nolan
Christopher Nolan原創
2025-02-19 10:48:11606瀏覽

在詹金斯準備和建立PHP項目

在上一篇文章中,我們經過了詹金斯的安裝,並準備了一切以開始。我們將通過實際準備我們的項目來繼續本文。如果您從以前準備就緒詹金斯設置,則無需通過上一部分 - 您可以很好地跟隨此部分。

>

鑰匙要點

    要在詹金斯(Jenkins)準備一個PHP項目,建議使用PHPUNIT和PHP-CODESNIFFER等工具。這可以通過在jenkins服務器上全球安裝軟件包或在composer.json文件中定義依賴項來實現。
  • > Jenkins Server上使用 ANT來自動化軟件構建過程。目標是在配置文件中定義的,ANT根據這些目標執行操作。 build.xml文件被添加到項目中,以使ANT在Jenkins Server上執行任務。 >
  • > build.xml文件可能需要修改以適合特定項目。這包括定義可以找到諸如Phpunit之類的工具並清理多個命令以正確匹配該項目的位置。
  • > 可能需要創建
  • 新目標,以確保所有質量檢查工具都會按預期運行。這包括處理正確設置項目的要求,例如由作曲家和鮑爾(Composer and Bower)監管的依賴項。
  • 準備項目後,有必要在詹金斯(Jenkins)中創建一個項目並進行配置。這些步驟包括在Jenkins中安裝GitHub插件,創建一個新項目以及配置源管理。然後可以通過單擊項目側菜單中的“立即構建”來開始構建。 >
  • 準備作曲家
  • >我們將首先準備我們的項目。我們可以使用塞巴斯蒂安·伯格曼(Sebastian Bergmann)提供的項目,但這是一個基本的項目,在詹金斯(Jenkins)中不會出現問題。在本文中,我們將使用另一個存儲庫,在這些存儲庫中我們將不得不克服一些障礙。我們將使用jumph的叉子作為我們的基礎。
>首先,我們必須確保我們擁有PHPUNIT和PHP-CODESNIFFER等工具。我們可以通過兩種不同的方式來做到這一點。我們要么通過全球梨或作曲家在Jenkins服務器上安裝軟件包,要么定義Composer.json文件中的依賴項。我決定使用後一種方法,因此我們可以輕鬆地控制自己本地機器和詹金斯上的這些工具的版本。因此,我們首先將以下行添加到Composer.json文件並運行Composer Update。

>

如果您想更多地了解每個軟件包的作用,請查看Bruno關於PHP QA工具的文章。

準備螞蟻

>在我們的Jenkins服務器上,我們將使用ANT。因此,如果尚未在服務器上安裝ANT,請確保通過運行以下命令來確保它是。
"require-dev": {
    "squizlabs/php_codesniffer": "~1.5.*",
    "phpmd/phpmd": "~2.1.*",
    "sebastian/phpcpd": "~2.0.*",
    "pdepend/pdepend": "~2.0.*",
    "phploc/phploc": "~2.0.*",
    "phpunit/phpunit": "~4.3.*",
    "theseer/phpdox": "~0.7.*",
},
ANT可幫助您自動化軟件構建過程。您在配置文件中定義了稱為目標的任務。螞蟻將讀取此文件並執行適當的操作。您可以定義依賴項,以指示螞蟻在哪個順序執行這些任務。配置文件是所謂的build.xml文件。我們將將其添加到我們的項目中,因此ANT可以在Jenkins Server上執行這些任務。我們將使用Sebastian Bergmann提供的模板,可以在此處找到。我們將其添加到我們項目的根源中。

>

>運行螞蟻,您可以在命令行上啟動螞蟻構建。這意味著螞蟻將運行構建目標。如果沒有給出任何參數,ANT將按照配置中指示的默認值來運行目標,在這種情況下,這也是構建的。

>讓我們仔細看看構建目標。 >

>目標是空的,但是,它取決於許多其他目標。它將首先運行準備目標,然後繼續使用皮棉目標直到運行每個目標。 讓我們看一下phploc-CI目標。

>
sudo apt-get install ant

這個目標很容易理解。您會注意到這取決於準備目標。由於這已經由構建目標運行,因此不會再運行。然後,我們獲得可執行文件,即Phploc,將由ANT執行。您較早地使用作曲家安裝了此功能。最後,我們將看到phploc的特定參數。 ANT將基於此目標配置運行以下命令行輸入。

>
<span><span><span><target</span> name<span>="build"</span> depends<span>="prepare,lint,phploc-ci,pdepend,phpmd-ci,phpcs-ci,phpcpd-ci,phpunit,phpdox"</span> description<span>=""</span>/></span></span>

$ {toolsdir}和$ {基礎}是2個變量。根據它們的配置方式,它們可能會影響整個命令行輸出
<span><span><span><target</span> name<span>="phploc-ci"</span> depends<span>="prepare"</span> description<span>="Measure project size using PHPLOC and log result in CSV and XML format. Intended for usage within a continuous integration environment."</span>></span>
</span>    <span><span><span><exec</span> executable<span>="${toolsdir}phploc"</span>></span>
</span>        <span><span><span><arg</span> value<span>="--count-tests"</span>/></span>
</span>        <span><span><span><arg</span> value<span>="--log-csv"</span>/></span>
</span>        <span><span><span><arg</span> path<span>="${basedir}/build/logs/phploc.csv"</span>/></span>
</span>        <span><span><span><arg</span> value<span>="--log-xml"</span>/></span>
</span>        <span><span><span><arg</span> path<span>="${basedir}/build/logs/phploc.xml"</span>/></span>
</span>        <span><span><span><arg</span> path<span>="${basedir}/src"</span>/></span>
</span>        <span><span><span><arg</span> path<span>="${basedir}/tests"</span>/></span>
</span>    <span><span><span></exec</span>></span>
</span><span><span><span></target</span>></span></span>

> 如上所述,如果您只想觸發此目標,則應在命令行上運行ANT PHPLOC-CI。 請注意,此phploc命令將輸出phploc.csv文件和phploc.xml文件。例如,詹金斯(Jenkins)安裝的插件將讀取這些文件並將其轉換為圖形。在下一篇文章中,我們將更深入地研究這個主題。

>如果您瀏覽整個build.xml文件,您會注意到它取決於某些工具的其他3個單獨的配置文件;構建/phpmd.xml,構建/phpdox.xml並構建/phpunit.xml。這些配置文件由實際工具請求。要了解更多信息,請查看他們各自的文檔。

請注意,phpunit.xml受到Symfony2的原始phpunit.xml.dist文件的啟發,因為我們正在處理Symfony2項目。

更改build.xml文件 >那麼,我們完成了嗎?不幸的是,還沒有。 build.xml文件非常通用,並且不完全適合我們的項目。首先,我們需要定義可以找到諸如Phpunit之類的工具。我們的作曲家將它們自動安裝在我們項目根源的bin目錄中。我們需要將ToolsDir屬性更改為正確的值。

>
"require-dev": {
    "squizlabs/php_codesniffer": "~1.5.*",
    "phpmd/phpmd": "~2.1.*",
    "sebastian/phpcpd": "~2.0.*",
    "pdepend/pdepend": "~2.0.*",
    "phploc/phploc": "~2.0.*",
    "phpunit/phpunit": "~4.3.*",
    "theseer/phpdox": "~0.7.*",
},

>我們還可以清理幾個命令。當前的build.xml文件定義了我們一方面具有SRC目錄,另一方面是測試目錄。由於Symfony2在SRC目錄中包含測試,因此我們可以刪除像此示例一樣的測試目錄的所有路徑。

sudo apt-get install ant
>

儘管不是必需的,但我更喜歡保持所有內容盡可能清潔,以便它正確匹配我們的項目。 最後,在build.xml文件中所示的phpdox的當前配置在我的情況下與最新版本不起作用。我更改了下面的目標,因此它正確地讀取了我們的配置文件。 >

創建新目標

已經設置了所有內容,以確保我們所有的QA工具都按預期運行。但是,我們的項目更加複雜。如果您分析了存儲庫,您會注意到依賴關係由作曲家和Bower調節。由於這是一個Symfony項目,我們還需要一個默認參數。 yml文件。我們需要處理這些要求,以便能夠在Jenkins上正確設置該項目。

>讓我們從parameters.yml文件開始。我們可以使用參數的默認內容。我們首先創建一個名為Copy-Parameters的新目標,該目標執行CP命令。
<span><span><span><target</span> name<span>="build"</span> depends<span>="prepare,lint,phploc-ci,pdepend,phpmd-ci,phpcs-ci,phpcpd-ci,phpunit,phpdox"</span> description<span>=""</span>/></span></span>
下一步是作曲家和鮑爾。我決定通過執行以下命令在Jenkins服務器上安裝它們。

>

>

[ed:請注意,如果您在託管在Windows上的VM中運行所有這些,Bowerphp將比Bower更好。

現在,讓我們為作曲家創建一個目標。

<span><span><span><target</span> name<span>="phploc-ci"</span> depends<span>="prepare"</span> description<span>="Measure project size using PHPLOC and log result in CSV and XML format. Intended for usage within a continuous integration environment."</span>></span>
</span>    <span><span><span><exec</span> executable<span>="${toolsdir}phploc"</span>></span>
</span>        <span><span><span><arg</span> value<span>="--count-tests"</span>/></span>
</span>        <span><span><span><arg</span> value<span>="--log-csv"</span>/></span>
</span>        <span><span><span><arg</span> path<span>="${basedir}/build/logs/phploc.csv"</span>/></span>
</span>        <span><span><span><arg</span> value<span>="--log-xml"</span>/></span>
</span>        <span><span><span><arg</span> path<span>="${basedir}/build/logs/phploc.xml"</span>/></span>
</span>        <span><span><span><arg</span> path<span>="${basedir}/src"</span>/></span>
</span>        <span><span><span><arg</span> path<span>="${basedir}/tests"</span>/></span>
</span>    <span><span><span></exec</span>></span>
</span><span><span><span></target</span>></span></span>

>將SYMFONY_ENV設置為測試很重要,因此Symfony知道必須清除其測試高速緩存目錄。 >

讓我們繼續bower。
phploc --count-tests --log-csv /build/logs/phploc.csv --log-xml /build/logs/phploc.xml /src /tests

我們需要做的最後一件事是確保執行這些目標。因此,我們更改構建目標,並按照要執行它們的順序添加3個新創建的目標。 > git

我們需要做的最後一件事是準備.gitignore文件。如果您想在本地計算機上運行ANT目標,則您的構建目錄將填充您不想將其投入存儲庫的日誌文件。因此,我們將以下行添加到.gitignore文件中。

>
<span><span><span><property</span> name<span>="toolsdir"</span> value<span>="bin/"</span> /></span></span>

也許您對我們所做的所有更改感到有些困惑。為了方便起見,這是與我們上面描述的所有更改有關的合併的直接鏈接。

在Jenkins

中創建項目

我們的項目已經準備好了。讓我們回到詹金斯並進行配置。這將是本文中最簡單的部分。
<span><span><span><arg</span> path<span>="${basedir}/tests"</span>/></span></span>
>

由於我們的項目位於Github上,因此建議您在Jenkins中安裝GitHub插件。如果您使用自己的Git服務器,則只需安裝常規的Git插件即可。如果您不確定如何安裝插件,請檢查上一篇文章。

>

>返回概述時,必須在左菜單中單擊新項目。作為項目名稱,我們填寫Jumph。接下來,我們選擇“選項”複製現有項目,然後填寫PHP-Template作為要復制的項目。

在詹金斯準備和建立PHP項目

>我們將立即被帶到該項目的配置頁面。首先,我們取消選中禁用構建,因此我們的構建將在保存上啟用。在GitHub項目輸入字段中,我們將URL填充到GitHub項目中。

我們要做的最後一件事是選擇源管理。就我們而言,這是git。接下來,您必須填寫存儲庫鏈接。如果您使用HTTPS鏈接,則無需提供任何其他憑據。我們可以決定應該建立哪些分支,但是由於我們只有一個主分支,因此我們將保持原樣。

配置完成了 - 非常簡單,因為我們使用了預定義的模板。如果向下滾動,您將準確看到為我們配置的模板。繼續在繼續之前保存您的配置。

啟動構建

>如果您遵循到目前為止的所有步驟,現在應該可以啟動構建。您可以通過在項目的左側菜單中單擊“構建”來啟動構建。您會在左下表中註意到出現一個構建。

在詹金斯準備和建立PHP項目如果您單擊構建本身,您將獲得一個新的側菜單,其中包含此特定構建的選項。單擊控制台輸出以確切查看發生了什麼。就我而言,由於缺少某些PHP擴展而導致第一個構建失敗。

>

在詹金斯準備和建立PHP項目>控制台輸出非常方便,以找出為什麼您的項目失敗。就我而言,我只需要運行sudo apt-get安裝php5-curl php5-xsl php5-sqlite php5-xdebug即可安裝一些所需的軟件包。我花了幾個構建才能弄清楚缺少什麼,但是隨著控制台輸出,很容易弄清楚出了什麼問題。最後,這就是我的構建歷史的樣子。

在詹金斯準備和建立PHP項目紅色意味著構建失敗,藍色意味著構建成功。失敗可能意味著我們以前看到的配置出了問題,但這也可能意味著單位測試失敗了。如果您再次打開build.xml文件,您會注意到某些目標獲得了一個名為failonError的屬性,該屬性設置為true。如果出於某種原因,該目標失敗了,ANT將自動停止並將其報告為損壞的構建。

>也許當建造成功時,您期望一個綠球,而不是藍色球。有一個插件可以顯示綠球,而不是藍色球。 結論

在本文中,我們為成功的構建而努力。我們必須準備我們的項目並在詹金斯(Jenkins)中創建一份工作。最終,我們不得不調試我們的第一個構建,因為我們忘記了安裝一些庫。

>

在下一部分中,我們將查看詹金斯回饋的所有結果。

>常見問題(常見問題解答)有關使用Jenkins

建立PHP項目的問題(常見問題解答)

>如何為我的PHP項目設置Jenkins?首先,您需要在服務器上安裝Jenkins。您可以從Jenkins官方網站下載並遵循安裝說明。安裝後,您需要配置Jenkins與PHP一起使用。這涉及安裝必要的插件,例如PHP插件,Git插件以及其他插件,具體取決於您的項目要求。安裝插件後,您可以創建一個新的Jenkins作業,並將其配置為構建PHP項目。您將需要指定項目源代碼,構建觸發器和構建步驟的位置。

>將Jenkins用於PHP項目有什麼好處? PHP項目。它可以自動化構建,測試和部署PHP應用程序的過程,從而可以節省大量時間和精力。它還有助於確保您的代碼始終處於可部署狀態,從而可以提高軟件的質量。此外,詹金斯(Jenkins)支持持續集成和連續交付,這可以幫助您更快,更頻繁地向用戶提供更新。

我如何使用jenkins來自動化我的PHP項目? Jenkins可以通過與各種測試工具集成來自動為您的PHP項目自動化測試。例如,您可以使用PHPUNIT插件來運行單元測試,也可以使用Selenium插件來運行功能測試。您只需要在Jenkins作業中配置這些插件,每次您構建項目時,它們都會自動運行測試。這可以幫助儘早捕獲錯誤,並確保您的代碼始終處於良好狀態。

我可以將jenkins與其他編程語言一起使用,除了PHP?

是的,詹金斯(Jenkins)支持廣泛的範圍。除了PHP之外,編程語言。這包括Java,Python,Ruby,C#和其他許多。您可以使用Jenkins通過安裝適當的插件並相應地配置Jenkins來構建,測試和部署用這些語言編寫的應用程序。

>

>如何使用Jenkins部署我的PHP應用程序?例如,您可以使用SSH插件將應用程序部署到遠程服務器或Docker插件中,以將應用程序作為Docker容器部署。您只需要在詹金斯(Jenkins)作業中配置這些插件,每次構建項目時,它們都會自動部署您的應用程序。

>

>什麼是連續集成,詹金斯如何支持它?集成是一種軟件開發實踐,開發人員通常每天多次將代碼集成到共享存儲庫中。這有助於儘早解決集成問題,並減少提供軟件更新所需的時間和精力。詹金斯(Jenkins)每次提交對存儲庫的更改時都可以自動化構建,測試和部署軟件的過程來支持持續集成。

>

>什麼是連續交付,詹金斯如何支持它?交付是一種軟件開發實踐,在該實踐中,代碼更改自動構建,測試和準備以釋放生產。它旨在使發行的風險較小,更頻繁。 Jenkins通過自動化整個軟件發布過程(從集成和測試到交付和部署)來支持連續交付。

我可以使用帶有Git的Jenkins?這使您每次推動更改GIT存儲庫都可以自動構建,測試和部署軟件。您可以通過安裝git插件並在git存儲庫中設置webhook來配置此功能,以觸發jenkins build nener nens the Change。詹金斯(Jenkins)提供了幾種工具來幫助您解決問題。這包括構建日誌,可以提供有關構建過程中發生的情況以及系統日誌的詳細信息,這些信息可以提供有關Jenkins Server整體操作的信息。您還可以使用Jenkins CLI或REST API與Jenkins Server進行交互並診斷問題。

>

>如何保護我的Jenkins Server?

>確保Jenkins Server確保您的Jenkins Server涉及多個步驟。首先,您應該確保詹金斯服務器正在運行最新版本,因為這將包括最新的安全補丁。您還應該配置Jenkins使用HTTP,它將加密您的Jenkins Server和您的用戶之間的通信。此外,您應該使用身份驗證和授權機制限制對Jenkins服務器的訪問,並將Jenkins用戶的權限限制為僅執行其任務所需的內容。

以上是在詹金斯準備和建立PHP項目的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn