2012-04-20 52 views
5

我試圖自動化使用phing從私人github回購代碼的部署,但有麻煩試圖找到像SVN導出一樣工作的東西。Phing和github

我已閱讀了一些關於git archive和git checkout-index的帖子,但一直在努力讓這些工作與github。我得到的印象是,他們熱衷於我們使用zip下載,因爲他們可以緩存這等等。

我不介意從github下載zip如果在Phing有一個簡單的任務來做到這一點,一個簡單的http任務沒有工作,因爲它通過https,我想首先需要某種身份驗證。

我設法在Phing中使用gitclone任務,但「.git」隱藏文件夾也被克隆,這導致了大量頭痛......主要是因爲在後續的構建中,我無法刪除構建文件夾,因爲它建議某些git文件,即* .idx或* .pack正在使用中。

有沒有人有任何運氣與phing和私人github回購?

感謝

+0

是私人回購?如果不是不應該公開可用的zip鏈接,因此不需要授權? – CharlesB 2012-04-20 12:59:36

+3

如果你設置一個來自github的克隆的repo,並讓它在本地進行phing clone(或git archive,git checkout-index),也許它可能會更容易一些? – ralphtheninja 2012-04-20 13:00:19

+0

這是一個私人回購,下載鏈接在未登錄時會返回404。 – Carlton 2012-04-20 13:01:43

回答

4

@AYK我的壞,最近一直在探索的部署選項,並認爲將與Capistrano的滾...

反正這是我的構建腳本我結束了使用暫時與人們的意見...

  • 假設在我的應用程序的生命 「C:\ APP」
  • 假設這個build.xml文件住在 「C:\ APP」
  • 假設我的應用程序還包含一個git倉庫「C:\ app.git」
  • 刪除任何版本&從先前版本中可能存在的部署目錄「C:\ app \ build」和「C:\ app \ deploy」
  • 製作目錄「C:\ app \ build」和「C:\ app \ deploy」,將保留git結帳和最終代碼部署
  • 按照建議從git中檢出代碼並將其放入到「C:\程序\打造」
  • 有一些目錄,如文檔,我不想出去,所以我複製文件,我想將其部署到「C:\程序\部署」

  • 我和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>