是毛屁股和徘徊多余吗? -- drush 领域 和 deployment 领域 和 jenkins 领域 drupal 相关 的问题

Are Drush and Phing redundant?


23
vote

问题

中文

我已经在我们的dev服务器上安装了jenkinsci以开始自动化我们的开发和测试过程。我正在使用jenkins与git插件和一些醉汉命令通过shell脚本。

当研究如何在我的Drupal dev工作流程中使用Jenkins时,我遇到了一个关于使用 phing的帖子醉汉和jenkins 。所以我看了看着窥探,我看不到通过shell脚本使用醉汉命令无法完成的。

我正在努力决定我是否为学习如何使用守平而感到沮丧。我正在寻找一些清晰度,即通过shell脚本合并phing与博士命令,我将获得什么好处。

所以我的问题适用于那些使用博士和詹金斯使用潜水的人:吹嘘/疏浚的人怎么样?为什么你决定在进程中开始使用界面?

感谢

英文原文

I've installed JenkinsCI on our dev server to start automating our dev build and test process. I'm using Jenkins with the Git Plugin and some Drush commands via a shell script.

When researching how to use Jenkins in my Drupal dev workflow, I came across a post about using Phing with Drush and Jenkins. So I looked at Phing and I can't see what it does that cannot be done by using Drush commands via a shell scripts.

I'm trying to decide if it makes sense for me to invest the time in learning how to use Phing. I'm looking for some clarity as to what benefit I will gain by incorporating Phing vs. Drush commands via Shell script.

So my question is for those who use Phing with Drush and Jenkins: how is it that Drush/Drush-Make and Phing differ? Why did you decide to start using Phing in your process?

Thanks

        

回答列表

16
 
vote
vote
最佳答案
 

答案是它们肯定不是冗余的。

是真的,可以使用包括疏浚命令(至少构建部分)的Bash脚本来完成相同的最终结果。但是,如果我们想要做的是要将我们的进程集成到像Jenkinsci这样的CI框架中,那么使用像phing这样的东西(蚂蚁或capistrano可以替换)是进一步的方式。

使用phing,我们可以将构建过程分解为可以以智能方式报告詹金斯的不同段。

所以例如。例如,作为我的构建过程的一部分,我使用Drush来启用两个模块,节点和强行。然后构建应该失败。但是,如果我们所做的只是告诉Jenkinsci来运行以下shell命令,Jenkinsci将说build传递:

  drush --quiet --yes @staging en node shouldfail   

显然这是不对的。但是,如果我们使用蚂蚁或phing来定义相同的过程,我们也可以添加Jenkins了解的一些失败逻辑,因此应该失败。以下Phing构建脚本尝试与前一个命令一起做同样的事情,但是由于我们期望它来实现:

  <project name="staging" default="enable modules" description="Jenkins Staging Build">      <target name="enable modules">       <exec  command="drush --quiet --yes @staging en node shouldfail" error='error' checkreturn="true">       </exec>       <loadfile  property="en.error" file="error" />       <if>         <contains string="${en.error}" substring="warning" />         <then>           <property name="en.fail" value="Could not enable all modules" />         </then>       </if>       <fail if="en.fail" message="${en.fail}" />     </target>  </project>   

BTW ANT和PHING几乎相同。 PHP开发人员在使用术中的优点是它们可以更舒适地延长术。

对于Drupal开发并疏浚尽可能好,我没有看到延伸的界面中的太多值,并认为运行的exec任务就是创建智能构建模板。

嗯,为了回答我的问题,我最终投入了弄清楚的时间。它实际上非常直观,难以弄清楚。

 

The answer is that they are certainly not redundant.

It's true that one can accomplish the same end result using a bash script that includes drush commands (at least the building part). But, if what we are looking to do is to integrate our process into a CI framework like JenkinsCI, then using something like phing (ant or capistrano could be substituted here) is the way to go.

With phing we can break up the build process into distinct segments that can report back to Jenkins in an intelligent way.

So for example. Say that as part of my build process I use drush to enable two modules, node and shouldfail. Then the build should fail. But if all we do is tell JenkinsCI to run the following shell command, JenkinsCI will say that the build PASSED:

drush --quiet --yes @staging en node shouldfail 

Clearly that's not right. However if instead we use ant or phing to define the same process, we can also add some fail logic that Jenkins understands, and therefore fail as it should. The following phing build script tries to do the same thing as the former command, but fails as we expect it to:

<project name="staging" default="enable modules" description="Jenkins Staging Build">      <target name="enable modules">       <exec  command="drush --quiet --yes @staging en node shouldfail" error='error' checkreturn="true">       </exec>       <loadfile  property="en.error" file="error" />       <if>         <contains string="${en.error}" substring="warning" />         <then>           <property name="en.fail" value="Could not enable all modules" />         </then>       </if>       <fail if="en.fail" message="${en.fail}" />     </target>  </project> 

BTW ant and phing are almost identical. The advantage for PHP developers in using phing is that they can more comfortably extend phing.

As for Drupal development and drush being as good as it is, I don't see too much value in extending phing, and think that running exec tasks would suffice to create a smart build template.

Well, in order to answer my question I ended up investing the time to figure out phing. It's actually pretty intuitive and it doesn't take too long to figure out.

 
 
2
 
vote

有一个苏打任务可用于phing 现在:

而不是使用EXEC,您可以包括这样的疏浚康尼斯...

    <drush command="site-install" assume="yes"">         <option name="locale">uk</option>         <option name="site-name" value="${sitename}" />         <param>expert</param>   </drush>    
 

There is a Drush task available for Phing now:

Instead of using exec you can include Drush comands like this...

  <drush command="site-install" assume="yes"">         <option name="locale">uk</option>         <option name="site-name" value="${sitename}" />         <param>expert</param>   </drush>  
 
 
   
   
2
 
vote

phing脚本是shell脚本的替代品,以控制执行多个命令及其结果。 Drush是用于与Drupal网站交互或与Drupal相关的命令的CLI接口。他们互相补充。

 

Phing scripts are replacements for shell scripts, to control the execution of multiple commands and their results. Drush is a CLI interface for commands to interact with a Drupal site or related to Drupal. They complement each other.

 
 
1
 
vote

你的问题:phing和drush重叠吗?

TLDR;版本: sorta。但大多是没有。

未标记的版本: 疏浚和手术只在几个情况下重叠。主要是,倾销和归档网站将是较大的重叠之一。你可以在掌管中做,但你必须写出很多任务。您可以转储数据库,但使用一个命令轻松润滑。 phing确实这样做,但你只需要编写命令行脚本。在Phing Shizes是运行PHPUnit测试的能力,运行外部工具,如罐子,压缩CSS文件,创建和打包您的Drupal站点/应用程序的构建等。

什么是phing?

phing基本上是执行命令的导频。如果您熟悉Ant,则Phing实际上是来自Ant的关闭端口(它是基于Java的堂兄)。 phing是用php写的。

您可以使用PHING根据这些任务来自动执行任务和报告结果。另一方面,吹嘘,只是执行任务。它无法确定评估输出的结果。

phing / drush的示例用例:

我需要醉酒将数据库转储和phing to scp 从prod到测试的包。

phing可以将这些设置存储在外部 99887661 文件中,并将其源进入您的项目。它也能为每个环境存储不同的设置。例如。 phing可以讨论最新的完整,它被疏入到正确的文档根目录。

所有这项工作如何?

phing由XML驱动。它会消耗Build.xml文件,并占用属性(有时称为目标)并执行简单的命令。

更多内容:

我强烈建议您通过Phing项目领导者查看此幻灯片:

http://www.slideshare.net/ michieltcs / building-and-deploying-php-applications-with-phing

它会给你一个高水平和一些具体用法(加上代码)的线。它不是与drupal相关的方式,但它会让你更好地了解它的工作原理。

 

Your question: Does Phing and Drush overlap?

TLDR; version: Sorta. But mostly no.

The unabridged version: Drush and phing do overlap in only a few instances. Mainly, dumping and archiving a website would be one of the larger overlaps. You could do it in phing but you would have to write a lot of tasks. You could Dump a database but drush does it so easily with one command. Phing does do that but you just have to write a command line script. Where phing shines is the ability to run phpunit tests, run external tools like a jar that compresses your css files, create and package a build of your drupal site/application, etc.

What is phing?

Phing is essentially the pilot that executes commands. If you're familiar with Ant, Phing is actually a close port from Ant (It's java based cousin). Phing is written in PHP.

You can use Phing to automate tasks and report results based on those tasks. Drush, on the other hand, just performs tasks. It's unable to determine evaluate the results of the output.

Example use case for phing / drush:

I need drush to dump the database and phing to scp the package from prod to testing.

Phing can store these settings in an external build.properties file and source them into your project. It's able to also store different settings for each environment as well. E.g. Phing can symlink the latest completed that has been dumped by drush to the right document root.

How does all this work?

Phing is driven by an xml. It consumes a build.xml file and takes in attributes (sometimes called targets) and executes simple commands.

More on this:

I highly recommend you review this slideshare by the Phing project leaders:

http://www.slideshare.net/michieltcs/building-and-deploying-php-applications-with-phing

It'll give you a high level and some concrete usage (plus code) of phing. It's not in any way related to drupal but it'll give you a better idea of how it works.

 
 

相关问题

9  自动更新Drupal Core / Modules,了解大量网站(吹嘘)? [关闭]  ( Automatically update drupal core modules for a large number of sites with drush ) 
关闭。这个问题需要更多聚焦。它目前不接受答案。 想要改进这个问题?更新问题,因此它仅关注一个问题,仅通过编辑此帖。 closed 2年前。 ...

1  如何使用苏打脚本创建其他Drupal网站  ( How to create additional drupal sites with a drush script ) 
我正在使用 drush站点 - 安装为我的初始网站,一切都适用,但是当我尝试创建另一个站点时(使用表前缀,所以我可以使用相同的数据库),醉酒尝试删除并重新创建数据库,所以我松开了我的第一个网站的所有桌子。我知道如何攻击特定的子部分,但我不确定如何告诉DRUSH网站安装命令不要丢弃数据库表。 如果我想使用2个其他站点设...

7  如何选择要跳过Drush SQL-Sync @dev @staging的哪些表?  ( How to choose what tables to skip for drush sql sync dev staging ) 
在我以前的问题之后 如何设置Drush SQL-sync不在@dev和@staging之间克隆用户? 我手动预选了80多个表,不应该自动同步(内容,角色和权限,用户,临时,缓存)。我对这个解决方案并不完全满意。为什么?因为我的过滤器决策是基于经验,直觉和猜测,当我想使用最好的实践方法时。 如何正确选择要跳过 drus...

15  使用毛发导入PO-Files  ( Import po files using drush ) 
我有大约20个具有共同翻译的网站。每次更新PO-FILE时,我都不要进入每个站点的管理员。 是否可以使用疏浚导入PO-FILE? ...

4  在新的钩子实现上清除耳机缓存的类型  ( Type of drupal cache to be cleared on new hook implementation ) 
如果我实现了一个缓存类型(如菜单,css + js等)的新钩子,我应该清除更改以生效吗? ...

3  我如何下载分发?  ( How can i download a distribution ) 
是我认为我可以从 http://drupal.org/project/分布是标准的Drupal核心下载,其中包含AT /个人资料的其他内容? 任何人都知道是否有任何计划创建发行的DEV分支,可以自动更新分发运行的核心版本?目前,似乎分布在其开发人员选择的任何核心版本上运行。 以及如何使用毛发发行版?是否有相当于 dr...

2  虽然安装了[Ubuntu 11.04]  ( Drush not being found although installed ubuntu 11 04 ) 
在我的SOHO中使用Ubuntu(目前11.04)盒子,它主要用于使用纯Linux灯而不是任何XAMP,WAMP模型的Drupal V7项目。我有许多Drupal安装用于开发和自学等,因此Drupal版本安装和模块更改。我通过Ubuntu Synapativer Manager安装了Drush 4.4,它安装好看似可...

24  是否有可能用毛发下载沙箱项目?  ( Is it possible to download sandbox projects with drush ) 
正常,可以从Drupal.org下载模块,如下所示: drush dl views 但是,这不适用于沙箱项目。是否有一种简单的方法来下载它们或者我被困在 git clone ? ...

0  如何快速更新/重新安装使用Drush 4.x  ( How to quickly update reinstall using drush 4 x ) 
虽然尝试使用Drush 4.0更新Drupal 7.0核心和已安装的模块,但我似乎已经破坏了一个项目网站(使用纯灯的Ubuntu 11.04盒),因此我得到了可怕的"白色屏幕" 所以不能超过它或者进入网站的后端。我想简单地获得D7核心/和所有当前模块(有一个很好的40个模块或SO)更新并重新工作。这是一个学习的项目,...

4  如果我运行pml drush命令行,则收到错误  ( Get an error if i run the pml drush command line ) 
我刚刚开始使用醉酒,我想我在某处有一些错过配置。 我使用MAMP(在MAC上),S / Applications / MAMP / HTDOCS / Subastas是Drupal安装的文件夹。 错误告诉我该站点没有配置的数据库,但由于站点运行即可,这不是真的。 当我尝试运行 pml 命令时,我收到此错误消息: ...

0  为什么疏浚到管理/报告/更新的不同可用更新?  ( Why different available updates in drush to admin reports updates ) 
e.g。在GUI中,我被告知(在运行管理/报表/更新/更新之后)我可以更新10个模块。但 drush rf; drush up 告诉我只有三个更新。具体示例:GUI表示我可以更新到视图7.x-3.3,但 drush up views 表示"没有可用的代码更新" 。 我通常更喜欢使用drush 以进行更新,因为我不想...

4  可以使用DRUSH列出所有功能的覆盖?  ( Possible to use drush to list overrides for all features ) 
我认为疏浚功能 - diff将列出特定功能的覆盖,并且疏水功能列表将列出所有功能。是否有可能列出所有功能的所有覆盖,也许通过将疏浚结果的结果进行管道疏浚FD? 如果是的话,人们如何从狗屎到疏通fd摘到毛屁股?或者,有更好的方法来做到这一点吗? ...

1  使用drush命令创建数据库的权限?  ( Permissions to create a database with drush command ) 
如果我使用此行安装drupal站点,如果"MyDB" 数据库已存在,则只运行正常。 如果数据库不存在,我会收到错误。如果数据库不存在时,是否有其他DRUSH命令? $response->addCommand(new InvokeCommand($selector, 'uploadToS3'); 4 我不认为...

0  运行“醉汉状态”时缺少“疏浚配置”和“PHP配置”  ( Missing drush configuration and php configuration when running drush status ) 
如果在终端中运行方法'Drush状态',我会看到"疏浚配置" 和"PHP配置" 的值丢失。 它根本没有问题。但这是正确的吗? 看捕获: 我使用的自由版本。 ...

4  Drush和MySQL数据库(带MAMP)连接问题  ( Drush and mysql database with mamp connection problem ) 
我有一个问题运行涉及数据库连接的一些疏呼方法。 我运行了自由版的MAMP。 如果我运行类似于 si 或 pml 我没有问题 但如果我运行 醉归档 - 转储 方法我收到此错误消息: Database dump failed. 看捕获: ...

6  DRUSH MATE:为Contrip模块提供的Make-Files的Subdir  ( Drush make specify subdir for make files provided by contrib modules ) 
最近我开始使用 drush make 来拉动Drupal核心,所有必需的贡献模块,主题和库。 我使用的一个模块是 geshifilter -module。这个模块附带它是自己的制作文件,所以当我运行 drush make 来构建我的整个网站时, drush 看到了这个制作文件,也构建了它的所有Geshifilter...

19  通过多个安装管理自定义模块  ( Manage custom modules across multiple installations ) 
我们有一些自定义模块用于多个站点。这些不能作为贡献的模块释放,例如因为它们是客户特定的,使假设不适用于贡献的模块等。 我知道以下几种可能性: 复制&amp;粘贴他们。显然很难将模块保持在所有安装上最新。 具有单个多站点安装,但这并不总是可能的。 使用git子模块,但它们可能是令人讨厌的,很容易忘记更新它们...

3  从命令行运行的Drupal Bootstrap  ( Drupal bootstrap running from command line ) 
我在外部使用drupal 7函数,我遵循本教程< / a>用于外部使用Drupal功能;它完美地工作。 在test.php文件中,我已加载/包含drupal bootstrap。 当我从命令行运行脚本( 99887660 )时,它给了我以下错误: pdoException:sqlstate [42000] [1...

4  如何在远程服务器中使用疏浚?  ( How to use drush in remote server ) 
我想在远程服务器中使用DRUSH方法。 据我所知,我必须在远程服务器中安装疏浚。 但是我的服务器提供商告诉我,Drush与服务器已经运行的其他模块有很多冲突。您如何在远程服务器中使用疏浚?是我的服务器提供商应答可接受吗? ...

0  如何做渐进式cron?  ( How to do incremental cron ) 
我必须管理一个相当大的网站,它有cron问题(cron.php上的白色空间和'分割错误')。我无法修复ONG常规问题。有人建议在几步中做的Cron工作,WHCIH也可以辨别问题表。我想知道如何做渐进的cron并欣赏你的帮助。 ...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.