2012-04-20 15 views
5

Sto cercando di automatizzare l'implementazione del codice da un repository privato di github usando phing ma avendo problemi a cercare di trovare qualcosa che funzioni come un'esportazione SVN.Phing e github

Ho letto alcuni post su git archive e git checkout-index ma ho faticato per farlo funzionare con github. Ho l'impressione che desiderino utilizzare il download zip in quanto possono memorizzare in cache ecc.

Non mi dispiacerebbe scaricare il file zip da github se ci fosse un compito semplice in Phing per farlo, un semplice L'attività http non ha funzionato dato che è su https e immagino che prima sia necessaria una sorta di autenticazione.

Sono riuscito a utilizzare l'attività gitclone in Phing ma anche la cartella nascosta ".git" è clonata, il che causa enormi mal di testa ... principalmente perché nelle build successive non riesco a eliminare la cartella build perché suggerisce alcuni file git , ovvero * .idx o * .pack sono in uso.

Qualcuno ha avuto fortuna con phing e un repo privato Github?

Grazie

+0

è vero un repo privato? in caso contrario, il collegamento zip dl non dovrebbe essere pubblicamente disponibile, quindi non è richiesta un'autorizzazione? – CharlesB

+3

Forse potrebbe essere più semplice se si installa un repository che è un clone di github e si lascia php clone (o git archive, git checkout-index) da quello locale? – ralphtheninja

+0

È un repository privato, il collegamento per il download restituisce un 404 quando non si effettua il login. – Carlton

risposta

4

@AYK Il mio male, sono stati recentemente esplorando opzioni di implementazione e pensare rotoleranno con Capistrano ...

Comunque questo è stato il mio script di build ho finito per usare temporaneamente con consigli della gente ...

  • Supponiamo mie vite app in "C: \ app"
  • Supponiamo che questo file build.xml vive in "C: \ app"
  • Supponiamo che la mia app contenga anche un repository git "C: \ app.git"
  • Elimina qualsiasi build & distribuire le directory "C: \ app \ build" e "C: \ app \ deploy" che potrebbero esistere da una build precedente
  • Crea directory "C: \ app \ build" e "C: \ app \ deploy", manterrà il checkout git e il codice finale da distribuire
  • Scambiando il checkout git come suggerito controlla il codice da git e lo mette in "C: \ app \ costruire"
  • ci sono alcune directory come documenti non voglio andare fuori così copiano i file che voglio distribuire a "C: \ app \ distribuire"

  • Il problema che ho avuto con Phing è la parte scp, avevo bisogno di ssh2 dll in PHP che non avevo e non volevo perdere tempo a cercare di compilare il codice sorgente per esso.

  • Quindi, tutto sommato ho raggiunto quello che originariamente volevo con Phing ma dopo aver trascorso una serata con Capistrano Sono convertito

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