Skip to content

Instantly share code, notes, and snippets.

@cynipe
Created March 22, 2012 07:49
Show Gist options
  • Save cynipe/2156912 to your computer and use it in GitHub Desktop.
Save cynipe/2156912 to your computer and use it in GitHub Desktop.
git-flow + maven-release-plugin用の手順

git-flow + maven-release-plugin用の手順

前提

プロジェクトのルートPOMに以下の設定が書かれている必要がある。

SCM情報の設定

<scm>
  <connection>scm:git:[email protected]/your-project.git</connection>
  <developerConnection>scm:git:[email protected]/your-project.git</developerConnection>
</scm>

maven-release-pluginの設定

Mavenのリリース処理をリモートにpushしないように以下の設定を追加。

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-release-plugin</artifactId>
  <version><!-- pluginのバージョン --></version>
  <configuration>
    <goals>deploy</goals>
    <!-- リモートにプッシュしないように -->
    <pushChanges>false</pushChanges>
    <localCheckout>true</localCheckout>
  </configuration>
</plugin>

リリース手順

# リリース作業を開始
$(develop):: git flow release start v1.0.0

# 調整作業を行う...

# リリースを行う(タグの名前はv1.0.0のように指定する)
$(release/v1.0.0):: mvn release:prepare release:perform

# release:prepareで1.0.1-SNAPSHOTにされてしまっているので、一旦戻す
$(release/v1.0.0):: git reset --hard HEAD^

# maven-release-pluginがタグ付けを行っているので、git flowではタグを付けないように完了させる(-nオプション)
$(release/v1.0.0):: git flow release finish -n v1.0.0

# 直前にreset --hardした次期開発バージョン用のPOM変更コミットのsha-1を探す
$(develop):: git reflog | grep "prepare for next development"

# 見つかったコミットを戻す
$(develop):: git cherry-pick <見つかったsha-1をここに指定>

# develop, master, tagをリモートにpush
$(develop):: git push && git push --tags
@roundrop
Copy link

随分前に書かれたものに対してのコメントで恐縮ですが、
まず git flow release finish-n でタグ付けなしでやってから maven-release-plugin でリリースするのはどうでしょうか。そうすると戻したりごにょごにょしなくてよくなります。
git flow release finish はリリース完了じゃなくてリリース準備完了という意味だと思いますし。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment