我想从我的构建机器到服务器进行远程部署.远程处理可以通过脚本中的ssh命令完成,但我宁愿使用phing和deploy.xml文件进行自动化.
我还有什么办法可以在phing构建文件中执行ssh(以及scp)任务?
我已经阅读了很多关于在这里部署应用程序的内容,但还没有找到适合我们需求的答案.
我们有一个使用zend框架构建的大型Web应用程序,我们希望将其部署到远程服务器.我们希望能够轻松安全地将新版本的应用程序部署到我们的生产服务器.
需要做的是以下内容:
我们使用SVN作为代码版本控制工具,我们将CentOS作为生产中的服务器操作系统运行.
我读过:
您对轻松一键部署的建议是什么?
是否有Phing与Eclipse PDT的集成,如果没有,是否有任何计划这样做?
我发现了一个eclipse插件"PTI - PHP工具集成",它将PHP Depend,PHPUnit等PHP工具与标准的eclipse包集成在一起.它可以在某个阶段很好地整合phing.我还没有尝试过这个插件,有没有人有任何关于它的信息或好事?
PTI插件:| http://www.phpsrc.org/
我目前正在使用Phing和Jenkins来自动化我的CodeIgniter应用程序的构建和部署.我遇到的一个问题是重启apache服务.我试过Phing但是没有足够的权限.重启的最佳方法是什么?
编辑:
将jenkins添加到sudoer文件并执行服务httpd restart后,Jenkins抛出:处理泄露的文件描述符.下面是Jenkins的Phing输出片段.它说一个解决方法是安装daemonize.不确定那是什么意思...
...Build_test > compress:
[echo] YUI Compression started
[echo] Replacing normal JS with compressed files.
[echo] Replacing normal CSS with compressed files.
[echo] chmoding assets
[echo] YUI Compression ended
Build_test > pdepend:
Build_test > httpd_restart:
[echo] Stopping httpd: [ OK ]
[echo] Starting httpd: [ OK ]
BUILD FINISHED
Total time: 13.1424 seconds
Process leaked file descriptors. See http://wiki.jenkins-ci.org/display/JENKINS/Spawning+processes+from+build for more information
[JDepend] JDepend plugin is ready
[JDepend] Found 68 classes in 1 packages
Finished: SUCCESS
Run Code Online (Sandbox Code Playgroud) 我在Windows 7上安装了Phing 2.4.7.1并使用了cygwin bash shell
我创建了一个Phing任务来将文件复制到本地目录并压缩文件,但我尝试排除某些目录但没有成功.复制整个目录
任务如下:
<copy todir="${builddir}" includeemptydirs="true" >
<fileset dir="." defaultexcludes="true">
<exclude name="cache/*" />
<exclude name="build.*" />
<exclude name="log/*" />
<exclude name=".git" />
<exclude name="/data/*" />
<exclude name="/nbproject" />
<exclude name="*~" />
</fileset>
</copy>
Run Code Online (Sandbox Code Playgroud) 我正在使用Phing,现在我正在使用此代码将我的文件上传到FTP:
<target name="ftp.upload">
<echo>Uploading files to FTP</echo>
<ftpdeploy
host="${ftp.destination.host}"
port="${ftp.destination.port}"
username="${ftp.destination.username}"
password="${ftp.destination.password}"
dir="${ftp.destination.dir}"
mode="${ftp.destination.mode}">
<fileset refid="TheFiles" />
</ftpdeploy>
<echo>FTP Upload Finished!</echo>
</target>
Run Code Online (Sandbox Code Playgroud)
加载需要很长时间,而且我有很多图像 - 因此每次我进行小的文本更改时,我都不希望它重新上传所有内容.有没有办法检测哪些文件已被更改,只上传那些文件?
谢谢!
我刚刚开始使用Phing构建脚本(使用PHP构建).据我所知,Phing基于Apache Ant(使用Java构建).
两者都使用XML构建文件并具有相似的语法,所以我问有经验的人,如果我在Github或其他地方找到Ant构建文件,它是否可以在Phing脚本中使用而不改变它的语法?就像可以使用Ant或Phing的XML文件一样?或者有差异吗?
我试图使用phing从私有github仓库自动部署代码,但无法尝试找到像SVN导出一样的东西.
我已经阅读了一些关于git archive和git checkout-index的帖子,但一直在努力让这些与github一起工作.我得到的印象是他们热衷于我们使用zip下载,因为他们可以缓存此等.
我不介意从github下载zip如果在Phing中有一个简单的任务来执行此操作,一个简单的http任务不能正常工作,因为它通过https,我想首先需要某种身份验证.
我设法在Phing中使用gitclone任务但是也克隆了".git"隐藏文件夹,导致了大量的麻烦...主要是因为在后续版本中我无法删除构建文件夹,因为它建议某些git文件,即*. idx或*.pack正在使用中.
有没有人对phing和私人github回购有运气?
谢谢
我正在尝试使用以下ExecTask在我的构建文件中实现一个像样的随机字符串生成器 :
<exec command="cat /dev/urandom | tr -cd '[:alnum:]' | fold -w30 | head -n1" returnProperty="random" />
Run Code Online (Sandbox Code Playgroud)
虽然这在命令行上运行时工作正常,但是当我尝试从Phing调用它时,它会导致我的构建脚本挂起.我尝试了各种逃脱模式无济于事.我究竟做错了什么?
詹金斯版 - 2.22
Phing版 - 0.13.3
PHPUnit版本 - 5.7.19
phpunit.xml
<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
backupStaticAttributes="false"
bootstrap="bootstrap/autoload.php"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
stopOnFailure="false">
<testsuites>
<testsuite name="Application Test Suite">
<directory suffix="Test.php">./tests</directory>
</testsuite>
</testsuites>
<filter>
<whitelist processUncoveredFilesFromWhitelist="true">
<directory suffix=".php">./app/Managers</directory>
</whitelist>
</filter>
<php>
<env name="APP_ENV" value="testing"/>
<env name="CACHE_DRIVER" value="array"/>
<env name="SESSION_DRIVER" value="array"/>
<env name="QUEUE_DRIVER" value="sync"/>
</php>
</phpunit>
Run Code Online (Sandbox Code Playgroud)
build.xml文件
...
<coverage-setup database="./report/coverage/database">
<fileset id="coverageFileSet" dir="./app/Managers">
<include name="**/*Manager*.php" />
</fileset>
</coverage-setup>
<phpunit pharlocation="./vendor/phpunit/phpunit/phpunit" configuration="./phpunit.xml" printsummary="true" haltonerror="true" haltonfailure="true" codecoverage="true">
<formatter type="clover" outfile="report/coverage/clover.xml"/>
</phpunit>
<coverage-report outfile="report/coverage/coverage.xml">
<report …Run Code Online (Sandbox Code Playgroud) phing ×10
deployment ×2
php ×2
ant ×1
apache ×1
build-script ×1
capistrano ×1
codeigniter ×1
command-line ×1
eclipse-pdt ×1
ftp ×1
git ×1
github ×1
hudson ×1
jenkins ×1
phpunit ×1
random ×1
rsync ×1
task ×1