首页 >后端开发 >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