【问题标题】:Phing and githubPhing 和 github
【发布时间】:2012-04-20 12:51:43
【问题描述】:

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

我已经阅读了一些关于 git archive 和 git checkout-index 的帖子,但很难让这些与 github 一起使用。我的印象是他们热衷于我们使用 zip 下载,因为他们可以缓存这些等。

如果在 Phing 中有一个简单的任务来执行此操作,我不介意从 github 下载 zip,一个简单的 http 任务不起作用,因为它通过 https,我想首先需要某种身份验证。

我设法在 Phing 中使用了 gitclone 任务,但是“.git”隐藏文件夹也被克隆了,这引起了巨大的头痛......主要是因为在后续构建中我无法删除构建文件夹,因为它建议某些 git 文件,即 *.idx 或 *.pack 正在使用中。

有人对 phing 和私人 github 存储库有任何运气吗?

谢谢

【问题讨论】:

  • 它是私人回购吗?如果不是,zip dl 链接不应该是公开的,因此不需要身份验证?
  • 如果您设置一个从 github 克隆的 repo 并让 phing 从本地克隆(或 git 存档、git checkout-index)可能会更容易?
  • 这是一个私人仓库,下载链接在未登录时返回404。
  • 然后@magnus 评论是要走的路
  • @Carlton - 你为什么不发布你的答案并为了社区而接受它?

标签: git github phing


【解决方案1】:

@AYK 我的错,最近一直在探索部署选项,并认为会与 Capistrano 一起推出......

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

  • 假设我的应用位于“C:\app”中
  • 假设这个 build.xml 文件位于“C:\app”中
  • 假设我的应用还包含一个 git repo "C:\app.git"
  • 删除之前构建中可能存在的任何构建和部署目录“C:\app\build”和“C:\app\deploy”
  • 创建目录“C:\app\build”和“C:\app\deploy”,将保存 git checkout 和要部署的最终代码
  • 按照建议执行 git checkout,从 git 中签出代码并将其放入“C:\app\build”
  • 有些目录,例如 docs,我不想出去,所以我将要部署的文件复制到“C:\app\deploy”

  • 我对 Phing 的问题是 scp 部分,需要 PHP 中的 ssh2 dll,我没有也不想花时间尝试为它编译源代码。

  • 总之,我通过 Phing 实现了我最初想要的,但是在与 Capistrano 度过了一个晚上之后,我转变了

== build.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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-13
    • 2011-08-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    相关资源
    最近更新 更多