Jenkins指南,用于构建,部署,配置和回滚,保留5个发行版

Jenkins指南,用于构建,部署,配置和回滚,保留5个发行版,第1张

Jenkins指南,用于构建,部署,配置和回滚,保留5个发行版

警告tl; tr

好的-您想要全部。很多问题-长话短说。


Jenkis“只是”一个持续集成服务器。

持续集成,基本上意味着您不必在开发人员计算机上运行编译和单元测试步骤,而是将其转移到中央服务器上,对吗?由于编译和链接现在位于中央服务器上,因此开发人员有更多时间来开发,而不必等待编译完成。这就是CI开始的方式。

现在,在查看PHP项目时,不需要任何编译或链接过程。在PHP项目上进行持续集成的工作归结为仅进行单元测试以及可能生成一些报告。你可以清楚地看到,在寻找帮手项目,如詹金斯的PHP,这provdies对詹金斯PHP项目的模板设置时-
http://jenkins-php.org/example.html

起点是“在提交源代码后,詹金斯会做一些事情”。您已经为Git存储库进行了配置。它受到监视,并且每当有新的提交到达时,就会触发一个新的“构建过程”。

这是什么“构建过程”?

可以在Jenkis
GUI中部分配置构建过程。部分意味着,重点在于“触发器”和“通知”的配置以及“报告生成”。报告生成意味着,当某些构建工具完成其工作并对其日志文件进行处理并转换为更好的格式时。

例如,当phpunit完成工作时,可以使用代码覆盖日志,将其转换为漂亮的HTML页面并将其移至/ www文件夹以供公众查看。)

但是 ,此构建过程的大部分实际工作在构建配置文件中进行了描述。在这里,诸如“ Phing”,“ ant”(phing的老兄)和“
nant”(win)之类的构建工具开始发挥作用。

构建工具为脚本任务提供了基础。这就是您自动化的地方!您将必须自己编写自动化步骤的脚本。Jenkins只是位于其上的GUI,提供一些按钮来显示build.log和报告,然后重新启动构建。

换句话说,您不能简单地将Jenkins和PHP项目放在一起,希望您可以在GUI上一起单击构建和部署过程。我们还不在那里!这些工具越来越好,但是还有很长的路要走。


让我们讨论一下詹基斯。让我们专注于构建步骤。

仅在CLI上时,将如何构建和部署项目?做吧!您可能需要写下所有涉及简单文本文件的命令和步骤。现在,将这些步骤变成自动化步骤。在项目的根文件夹中创建一个“
build.xml”。

<?xml version="1.0" encoding="UTF-8"?><project name="name-of-project">   ... build steps ..</project>

现在我们需要一些构建步骤。构建工具将它们称为“目标”。构建目标将任务分组。您可以自己执行每个目标,也可以链接它们。

<?xml version="1.0" encoding="UTF-8"?><project name="name-of-project" default="build">   <target name="build">       <!-- tasks -->   </target>   <target name="deploy">       <!-- tasks -->   </target></project>

规则:将目标保持较小-在一个目标中最多5-7个cli命令。

现在让我们介绍具有依赖关系的目标链。假设您的任务“ build”应该在之前运行“
phpunit”。在CLI上,您只需运行

phpunit
,然后运行构建命令。在构建配置内部,您必须将调用包装到
exec
任务中。因此,您将创建一个“
phunit”目标,并将其作为依赖项添加到目标“ build”中。依赖关系在目标指定依赖关系之前执行。

<?xml version="1.0" encoding="UTF-8"?><project name="name-of-project" default="build">   <target name="phpunit" description="Run unit tests with PHPUnit">      <exec executable="phpunit" failonerror="true"/>   </target>   <target name="build" depends="phpunit">       <!-- tasks -->   </target>   <target name="deploy">       <!-- tasks -->   </target></project>

像Phing这样的构建工具提供了许多核心任务,例如chown,mkdir,delete,copy,move,exec(…)和其他任务(对于git,svn,notify)。请参阅Phing的文档http://www.phing.info/docs/master/hlhtml/index.html或Ant
http://ant.apache.org/manual/

使用Phing的好处是可以在构建配置文件中用PHP编写AdhocTasks并运行它们。使用ant也可以,只需构建一个执行PHP和脚本的exec任务即可。

好的-让我们快进:您在此构建配置中重新创建了完整的构建和部署过程。您现在可以独立使用目标命令。现在,我们切换回Jenkins
CI或任何其他CI服务器并对其进行配置,以运行具有目标任务的构建工具。通常,您将有一个默认目标,称为

main
build
,它将所有目标(步骤)链接在一起。

现在,当新的提交到达时,Jenkins通过执行构建脚本开始构建过程。


有了这些有关Jenkins如何与构建工具交互的信息,您的一些问题是不言而喻的。您只需创建步骤即可完成所需的工作…

让我们开始问答环节:

Q1:Jenkins工作区文件夹

工作区是项目所在的地方。新提交到达那里。在“高级”下,为项目选择一个工作目录,而无需更改Jenkins主目录。选中“使用自定义工作区”框,并设置Jenkins将代码提取到其中并进行构建的目录。还可以在此处配置构建文件夹以及保留的构建数量。

Q2:Composer Composer保留一个本地缓存-
它位于中

$COMPOSER_HOME/cache
。当使用相同的依赖项时,将使用本地缓存。这样可以避免重新下载它们。如果引入了新的依赖项或更改了版本,则将在
composerinstall
和上获取并重新使用
composer update

Composer的安装/更新总是从网络或缓存中进行的。供应商文件夹没有保持活动状态。依赖项将被删除并重新安装。如果要花很长时间,那就要花很长时间。故事的结局。

如果需要很长时间,请一次使用Composer,然后添加新的构建目标“ zip-copy-vendor-folder”和“ copy-unzip-
vendor-
folder”。我想,您可以想象这些事情会发生什么。现在,您必须为压缩的供应商文件引入if检查。如果存在供应商的zip文件,则跳过作曲家的安装目标,然后继续执行“
copy-unzip ..” ..好的,就可以了。这是一个调整..仅当您的依赖项相当稳定并且相距不远时才执行此 *** 作。

通常,您将需要一个执行目标,即“带有撰写者的依赖关系”

composer install
。缓存将由Composer自动使用。

问题3:获取最新版本并移至新目的地

最新的版本位于build文件夹中;或者,如果您定义了移动文件的步骤,则该文件已经在所需的文件夹中。

Q4:如何获取媒体文件

只需添加用于将媒体文件夹复制到项目中的构建目标即可。

问题5:为资产处理添加构建目标

您已经知道位置了:这是“构建后”。这意味着这是部署步骤,对吗?添加一个新目标以通过FTP将您的文件夹上传到CDN。

问题6:我什么时候应该清除缓存(内存缓存,redis)

我建议采用一种简单的策略:“部署-刷新缓存-重新武装缓存”策略。

PHP应用程序的热交换很复杂。当系统开始运行两个版本时,您必须具有一个支持更改基础组件的PHP类。旧版本逐渐淡出缓存,新版本逐渐淡出。请单独问这个问题!这并不像人们想象的那么容易。它很复杂,也是Rasmus
Lerdorf最受欢迎的主题之一。

Q7.1:如何回滚到以前的版本?

通过在先前版本的文件夹中运行部署目标/任务。

Q7.2:以及如何设置以保留最近的5个成功版本。

Jenkins在构建文件夹中设置了“保留多少个构建”。设置为5。

Q8:如何获取构建失败和部署电子邮件警报失败的电子邮件?

自动。电子邮件通知是默认的。如果我错了,请查看通知程序“电子邮件”。

Q9:在通过电子邮件成功部署后, *** 作如何获取最近提交的邮件列表。

添加一个构建目标“通过电子邮件发送到git-log-log-to-operations”。


我觉得,就像我今天写了一本书…



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5615107.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存