5

Phing を使用してプライベート github リポジトリからコードの展開を自動化しようとしていますが、SVN エクスポートのように機能するものを見つけるのに苦労しています。

git archive と git checkout-index に関するいくつかの投稿を読みましたが、これらを github で動作させるのに苦労しました。彼らはこれをキャッシュできるなどの理由で、私たちがzipダウンロードを使用することに熱心であるという印象を受けます.

これを行うための簡単なタスクが Phing にある場合、github から zip をダウンロードしてもかまいません。単純な http タスクは https を介しているため機能せず、最初に何らかの認証が必要だと思います。

Phing で gitclone タスクを使用することができましたが、「.git」隠しフォルダーも複製され、大きな頭痛の種になっています...主に、後続のビルドでは、特定の git ファイル、つまり *. idx または *.pack が使用されています。

ping とプライベート github リポジトリで運が良かった人はいますか?

ありがとう

4

1 に答える 1

4

@AYK 私の悪い、最近展開オプションを検討しており、カピストラーノで展開すると思います...

とにかく、これは人々のアドバイスで一時的に使用することになった私のビルドスクリプトでした...

  • 私のアプリが「C:\app」にあるとしましょう
  • このbuild.xmlファイルが「C:\app」にあるとしましょう
  • 私のアプリにもgitリポジトリ「C:\ app.git」が含まれているとしましょう
  • 以前のビルドから存在する可能性のあるビルドおよび展開ディレクトリ「C:\app\build」および「C:\app\deploy」を削除します
  • ディレクトリ「C:\app\build」および「C:\app\deploy」を作成し、git チェックアウトとデプロイする最終コードを保持します
  • 提案どおりに 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>
于 2012-05-03T14:32:38.740 に答える