13

Maven プロジェクトを自動的にリリースするように Jenkins ジョブを構成しました。これは、以下を使用して行われます。mvn --batch-mode clean release:prepare release:perform バッチ モードでは、リリース バージョンと開発バージョンが自動的に決定されます。これはまさに私が欲しいものです。

問題は、バージョンの 3 番目の番号ではなく 2 番目の番号を増やしたいことです。したがって、バージョン 1.2.0 をリリースすると、次の開発バージョンは 1.3.0-SNAPSHOT になるはずです。1.2.1-SNAPSHOT ではありません。コマンドライン パラメーターを追加することはオプションではありません。これにより、ビルド ジョブを常に編集しなければならなくなるからです。

次の開発バージョンを決定するために使用されるアルゴリズムを変更する方法について何か提案はありますか?

4

7 に答える 7

0

Jenkinsでパラメーター化されたビルドを使用する場合は、ジョブを編集せずにコマンドラインパラメーターを使用できます。ジョブ構成ページの「このビルドはパラメーター化されています」オプションをチェックしてください。

これにより、Jenkinsが完全に単独でリリースを実行することはできません(これは良いことです。ロボットに仕事を任せたくないのです!)-Jenkins内から手動でビルドを開始すると、設定できるようになります。構成したパラメーター。

于 2013-03-19T13:27:07.040 に答える
0

同じ問題があり、複数のコマンドを実行したり、バージョンを手動で挿入したりせずに解決したかったのです。

y(またはマイナー)インクリメントの私の解決策は次のとおりです。

初期化フェーズで Groovy スクリプトを実行します。このスクリプトはrelease.propertiesを作成します。これをpom.xmlのproject/build/pluginsセクションに追加します。

        <plugin>
            <groupId>org.codehaus.gmavenplus</groupId>
            <artifactId>gmavenplus-plugin</artifactId>
            <version>1.5</version>
            <dependencies>
                <dependency>
                    <groupId>org.codehaus.groovy</groupId>
                    <artifactId>groovy-all</artifactId>
                    <version>2.4.6</version>
                </dependency>
            </dependencies>
            <executions>
                <!-- Force maven-release-plugin to increase MINOR, not PATCH, and create tag as vX.Y.Z -->
                <execution>
                    <id>release-parameters</id>
                    <phase>initialize</phase>
                    <goals>
                        <goal>execute</goal>
                    </goals>
                    <configuration>
                        <scripts>
                            <script>
                                <![CDATA[
                                    final String SNAPSHOT = '-SNAPSHOT'

                                    Properties releaseProps = new Properties()
                                    File releasePropsFile = new File('release.properties')
                                    String releaseVersion = '${project.version}'.replace('-SNAPSHOT', '')
                                    String[] vNumbers = releaseVersion.split('\\.')
                                    String snapshotVersion = vNumbers[0] + '.' + (Integer.parseInt(vNumbers[1]) + 1) + '.' + '0' + SNAPSHOT

                                    releaseProps.setProperty('scm.tag', 'v' + releaseVersion)
                                    releaseProps.setProperty('project.rel.${project.groupId}:${project.artifactId}', releaseVersion)
                                    releaseProps.setProperty('project.dev.${project.groupId}:${project.artifactId}', snapshotVersion)
                                    releaseProps.store(releasePropsFile.newWriter(), null)
                                ]]>
                            </script>
                        </scripts>
                    </configuration>
                </execution>
            </executions>
        </plugin>

このスクリプトは、SCMのvX.YZのタグ名も変更します。release:prepareフェーズでは、初期化フェーズは実行されません。この問題を解決するには、リリース前に「mvn install」を実行するか、リリース コマンドを次のように変更します。

mvn --batch-mode initialize clean release:prepare release:perform

release.properties について: https://maven.apache.org/maven-release/maven-release-plugin/examples/non-interactive-release.html

于 2016-03-24T20:09:54.587 に答える
-1

Khmarbaiseが示唆したように、私もあなたの問題の解決策はないと思います.

2番目または3番目の数字を変更する必要があるかどうかを自動的に通知できるルールはありますか? 確かに、そうは思いません。そうは言っても、Maven / Jenkins に選択を依頼することはできません。1 つはメジャー バージョンの数字で、もう 1 つはマイナー バージョンの数字です。

パラメータを介して変更するか、willome が提案するように、Jenkins M2 Release プラグインを介してユーザーに設定させる必要があります。手動アクションのみ可能です。

于 2013-03-19T13:19:50.397 に答える