我试图使用phing从私有github仓库自动部署代码,但无法尝试找到像SVN导出一样的东西.
我已经阅读了一些关于git archive和git checkout-index的帖子,但一直在努力让这些与github一起工作.我得到的印象是他们热衷于我们使用zip下载,因为他们可以缓存此等.
我不介意从github下载zip如果在Phing中有一个简单的任务来执行此操作,一个简单的http任务不能正常工作,因为它通过https,我想首先需要某种身份验证.
我设法在Phing中使用gitclone任务但是也克隆了".git"隐藏文件夹,导致了大量的麻烦...主要是因为在后续版本中我无法删除构建文件夹,因为它建议某些git文件,即*. idx或*.pack正在使用中.
有没有人对phing和私人github回购有运气?
谢谢
@AYK 我的错,最近一直在探索部署选项,并认为将与 Capistrano 一起滚动......
不管怎样,这是我的构建脚本,我最终根据人们的建议暂时使用了......
有某些目录(例如 docs)我不想出去,因此我将要部署的文件复制到“C:\app\deploy”
我在 Phing 中遇到的问题是 scp 部分,需要 PHP 中的 ssh2 dll,但我没有,也不想花时间尝试编译它的源代码。
总而言之,我通过 Phing 实现了我最初想要的目标,但在与 Capistrano 度过一个晚上后,我转变了
== 构建.xml ==
<?xml version="1.0" encoding="UTF-8"?>
<project description="" name="MyProject" default="build" basedir=".">
<property file="build.properties" />
<tstamp>
<format property="build.time" pattern="%Y%m%d_%H%I" />
</tstamp>
<!-- ============================================ -->
<!-- Target: prepare -->
<!-- ============================================ -->
<target name="prepare">
<echo msg="Deleting old build and deploy dirs" />
<delete dir="./build/" includeemptydirs="true" failonerror="true" />
<delete dir="./deploy/" includeemptydirs="true" failonerror="true" />
</target>
<!-- ============================================ -->
<!-- Target: create -->
<!-- ============================================ -->
<target name="create" depends="prepare">
<echo msg="Creating fresh build and deploy directories" />
<mkdir dir="./build/" />
<mkdir dir="./deploy/" />
</target>
<!-- ============================================ -->
<!-- Target: gitclone -->
<!-- ============================================ -->
<target name="gitcheckout" depends="create">
<echo msg="Checking out latest code" />
<exec command="git checkout-index --prefix ./build/ -a"></exec>
</target>
<!-- ============================================ -->
<!-- Target: preparedeploy -->
<!-- ============================================ -->
<target name="preparedeploy" depends="gitcheckout">
<echo msg="Preparing deploy" />
<copy todir="./deploy/" >
<fileset dir=".">
<include name="cgi-bin/**" />
<include name="htdocs/**" />
</fileset>
</copy>
<mkdir dir="./deploy/logs" />
</target>
<!-- ============================================ -->
<!-- Target: cleanup -->
<!-- ============================================ -->
<target name="cleanup" depends="preparedeploy">
<echo msg="Deleting build dir" />
<delete dir="./build/" includeemptydirs="true" failonerror="true" />
</target>
<!-- ============================================ -->
<!-- Target: build -->
<!-- ============================================ -->
<target name="build" depends="cleanup, preparedeploy, gitcheckout, create, prepare">
<echo msg="Starting build ${build.time}" />
</target>
</project>
Run Code Online (Sandbox Code Playgroud)