目录
>将Jenkins用于PHP项目有什么好处? PHP项目。它可以自动化构建,测试和部署PHP应用程序的过程,从而可以节省大量时间和精力。它还有助于确保您的代码始终处于可部署状态,从而可以提高软件的质量。此外,詹金斯(Jenkins)支持持续集成和连续交付,这可以帮助您更快,更频繁地向用户提供更新。
我如何使用jenkins来自动化我的PHP项目? Jenkins可以通过与各种测试工具集成来自动为您的PHP项目自动化测试。例如,您可以使用PHPUNIT插件来运行单元测试,也可以使用Selenium插件来运行功能测试。您只需要在Jenkins作业中配置这些插件,每次您构建项目时,它们都会自动运行测试。这可以帮助尽早捕获错误,并确保您的代码始终处于良好状态。
>

>如何使用Jenkins部署我的PHP应用程序?例如,您可以使用SSH插件将应用程序部署到远程服务器或Docker插件中,以将应用程序作为Docker容器部署。您只需要在詹金斯(Jenkins)作业中配置这些插件,每次构建项目时,它们都会自动部署您的应用程序。

>什么是连续交付,詹金斯如何支持它?交付是一种软件开发实践,在该实践中,代码更改自动构建,测试和准备以释放生产。它旨在使发行的风险较小,更频繁。 Jenkins通过自动化整个软件发布过程(从集成和测试到交付和部署)来支持连续交付。
首页 后端开发 php教程 在詹金斯准备和建立PHP项目

在詹金斯准备和建立PHP项目

Feb 19, 2025 am 10:48 AM

在詹金斯准备和建立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

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

在PHP API中说明JSON Web令牌(JWT)及其用例。 在PHP API中说明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

会话如何劫持工作,如何在PHP中减轻它? 会话如何劫持工作,如何在PHP中减轻它? Apr 06, 2025 am 12:02 AM

会话劫持可以通过以下步骤实现:1.获取会话ID,2.使用会话ID,3.保持会话活跃。在PHP中防范会话劫持的方法包括:1.使用session_regenerate_id()函数重新生成会话ID,2.通过数据库存储会话数据,3.确保所有会话数据通过HTTPS传输。

描述扎实的原则及其如何应用于PHP的开发。 描述扎实的原则及其如何应用于PHP的开发。 Apr 03, 2025 am 12:04 AM

SOLID原则在PHP开发中的应用包括:1.单一职责原则(SRP):每个类只负责一个功能。2.开闭原则(OCP):通过扩展而非修改实现变化。3.里氏替换原则(LSP):子类可替换基类而不影响程序正确性。4.接口隔离原则(ISP):使用细粒度接口避免依赖不使用的方法。5.依赖倒置原则(DIP):高低层次模块都依赖于抽象,通过依赖注入实现。

PHP 8.1中的枚举(枚举)是什么? PHP 8.1中的枚举(枚举)是什么? Apr 03, 2025 am 12:05 AM

PHP8.1中的枚举功能通过定义命名常量增强了代码的清晰度和类型安全性。1)枚举可以是整数、字符串或对象,提高了代码可读性和类型安全性。2)枚举基于类,支持面向对象特性,如遍历和反射。3)枚举可用于比较和赋值,确保类型安全。4)枚举支持添加方法,实现复杂逻辑。5)严格类型检查和错误处理可避免常见错误。6)枚举减少魔法值,提升可维护性,但需注意性能优化。

在PHPStorm中如何进行CLI模式的调试? 在PHPStorm中如何进行CLI模式的调试? Apr 01, 2025 pm 02:57 PM

在PHPStorm中如何进行CLI模式的调试?在使用PHPStorm进行开发时,有时我们需要在命令行界面(CLI)模式下调试PHP�...

如何在系统重启后自动设置unixsocket的权限? 如何在系统重启后自动设置unixsocket的权限? Mar 31, 2025 pm 11:54 PM

如何在系统重启后自动设置unixsocket的权限每次系统重启后,我们都需要执行以下命令来修改unixsocket的权限:sudo...

如何用PHP的cURL库发送包含JSON数据的POST请求? 如何用PHP的cURL库发送包含JSON数据的POST请求? Apr 01, 2025 pm 03:12 PM

使用PHP的cURL库发送JSON数据在PHP开发中,经常需要与外部API进行交互,其中一种常见的方式是使用cURL库发送POST�...

See all articles