0

多くの新しいテーブルを使用するアプリケーションの新機能を開発しているとき、テーブル定義は開発の数日後まで安定していません。同じコードベースのバグ修正をデプロイするときに、これらの不安定な移行ファイルを本番ボックスに適用せずにソース管理にチェックインしたいと思います。

フライウェイの移行ファイルを開発者のマシンに適用するが、本番ボックスには適用しない方法はありますか?

私は機能ブランチが好きではないので、機能ブランチを避けたいのですが、それらは私が維持するにはあまりにも多くの労力を要します。

4

1 に答える 1

5

Spring 3.1を使用しているので、Springプロファイルを使用して問題を解決し、コードがどの環境にあるかを検出することができました。ソリューションの仕組みは次のとおりです。

  • db.migrations本番環境の移行が行われる場所です
  • dev.db.migrations開発の移行が行われる場所です。テーブルが1時間ごとに変更される新機能の初期開発中に、移行ファイルがdev.db.migrationsソース管理に追加されてチェックインされ、開発者のマシンで作成されます。開発者は通常、テストデータベースを吹き飛ばし、サンプルデータを使用して再作成します。したがって、dev.db.migrations開発者はファイルをソース管理にチェックインするため、その中のファイルを絶えず変更しても、変更のバージョン番号を取得する機会があります。

以下は、私が使用したスプリングプロファイルフライウェイ構成のXMLです。

<!-- =========================Configure Flyway ========================= -->
<bean id="flyway" class="com.googlecode.flyway.core.Flyway" init-method="migrate">
    <property name="dataSource" ref="dataSource"/>
    <property name="locations" ref="flyway-migration-locations" />
</bean>

<!-- ========================= Development Profile Configuration ========================= -->
<beans profile="development">
    <bean id="flyway-migration-locations" class="java.util.ArrayList">
        <constructor-arg>
            <list>
                <value>db.migration</value>
                <value>dev.db.migration</value>
            </list>
        </constructor-arg>
    </bean>
</beans>

<!-- ========================= Production Profile Configuration ========================= -->
<beans profile="production">
    <bean id="flyway-migration-locations" class="java.util.ArrayList">
        <constructor-arg>
            <list>
                <value>db.migration</value>
            </list>
        </constructor-arg>
    </bean>
</beans>
于 2012-08-31T07:00:44.703 に答える