首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Phing和github

Phing和github
EN

Stack Overflow用户
提问于 2012-04-20 20:51:44
回答 1查看 1.4K关注 0票数 5

我正在尝试使用phing自动部署私有github代码库中的代码,但在尝试找到类似SVN导出的东西时遇到了麻烦。

我读过一些关于git archive和git checkout-index的帖子,但一直在努力让它们与github一起工作。我得到的印象是,他们热衷于让我们使用zip下载,因为他们可以缓存这些内容。

如果Phing中有一个简单的任务可以做到这一点,我不会介意从github下载zip,一个简单的http任务是不能工作的,因为它是通过https的,我想首先需要某种类型的身份验证。

我设法在Phing中使用了gitclone任务,但".git“隐藏文件夹也被克隆了,这导致了大量的构建,因为在后续的构建中,我无法删除构建文件夹,因为它表明某些git文件,即*.idx或*.pack正在使用中。

有没有人在phing和一个私人的github repo上有什么收获?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-03 22:32:39

@AYK我的错,最近一直在探索部署选项,并认为将与Capistrano滚动…

无论如何,这是我的构建脚本,我最终根据人们的建议临时使用了……

  • 让我们假设我的应用程序位于“C:\ build.xml”和“
  • ”中我们假设此应用程序文件位于“C:\ app”和“C:\ app”
  • 假设我的应用程序还包含git代码库和任何构建和部署目录"C:\app\ build“和"C:\app\ deploy ",这些目录可能存在于先前的build
  • Make目录"C:\app\build”和"C:\app\deploy“,我会保存git签出和最终代码,以便按照建议从git签出代码并将其放入"C:\app\build"
  • There中是某些目录,比如我不想输出的文档,所以我将我想要部署到"C:\app\deploy"
  • The的文件复制到deploy
  • Excuting中。我需要Phing,我没有,我也不想花时间来编译它的源代码。
  • ,所以总的来说,我用ssh2实现了我最初想要的东西,但在和Capistrano共度了一个晚上之后,我变成了

== build.xml ==

代码语言:javascript
复制
<?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>
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10246607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档