r1455 - in trunk: mavenpom4redmine mavenpomdoc/src/site/apt/mavenpom4redmine
Author: tchemit Date: 2013-08-07 09:41:05 +0200 (Wed, 07 Aug 2013) New Revision: 1455 Url: http://nuiton.org/projects/mavenpom/repository/revisions/1455 Log: fixes #2801: Simplify release process Modified: trunk/mavenpom4redmine/pom.xml trunk/mavenpomdoc/src/site/apt/mavenpom4redmine/release.apt Modified: trunk/mavenpom4redmine/pom.xml =================================================================== --- trunk/mavenpom4redmine/pom.xml 2013-08-05 12:39:32 UTC (rev 1454) +++ trunk/mavenpom4redmine/pom.xml 2013-08-07 07:41:05 UTC (rev 1455) @@ -145,6 +145,14 @@ target/${project.artifactId}-${project.version}-full.zip </redmine.libReleaseFiles> + <!-- Post Release configuration (by default do not send - publish) --> + + <skipReleasePublishAttachments>true</skipReleasePublishAttachments> + <skipReleaseUpdateVersion>true</skipReleaseUpdateVersion> + <skipReleaseSendEmail>true</skipReleaseSendEmail> + <skipReleasePublishNews>true</skipReleasePublishNews> + <skipReleaseNextVersion>true</skipReleaseNextVersion> + </properties> <!-- ************************************************************* --> <!-- *** Maven Environment *************************************** --> @@ -239,9 +247,10 @@ <goals> <goal>collect-files</goal> </goals> - <phase>install</phase> + <phase>verify</phase> <configuration> - <descriptionFile>${redmine.collectedArtifacts} + <descriptionFile> + ${redmine.collectedArtifacts} </descriptionFile> <includeAttached>true</includeAttached> <includeSiteAttached>true</includeSiteAttached> @@ -252,10 +261,11 @@ <goals> <goal>collect-files</goal> </goals> - <phase>install</phase> + <phase>verify</phase> <configuration> <extraFiles>${redmine.releaseFiles}</extraFiles> - <descriptionFile>${redmine.collectedAttachments} + <descriptionFile> + ${redmine.collectedAttachments} </descriptionFile> <includeAttached>false</includeAttached> </configuration> @@ -293,6 +303,181 @@ </build> </profile> + <!-- launch this profile by the last module of a project to release --> + <!-- You must add the properties to false in your last module --> + <profile> + <id>redmine-post-release-profile</id> + <activation> + <property> + <name>performRelease</name> + <value>true</value> + </property> + </activation> + <properties> + <!-- fails if redmine goals are not ok --> + <redmine.safe>true</redmine.safe> + + <dryRun>true</dryRun> + <redmine.dryRun>${dryRun}</redmine.dryRun> + </properties> + + <build> + + <defaultGoal>validate</defaultGoal> + + <plugins> + + <!-- + - obtain redmine login + - send announcement email + --> + <plugin> + <groupId>org.nuiton</groupId> + <artifactId>helper-maven-plugin</artifactId> + <executions> + <execution> + <id>get-redmine-login</id> + <goals> + <goal>share-server-secret</goal> + </goals> + <phase>validate</phase> + <configuration> + <serverId>redmine-${platform}</serverId> + <usernameOut>redmine.username</usernameOut> + <privateKeyOut>redmine.apiKey</privateKeyOut> + </configuration> + </execution> + + <execution> + <id>send-release-email</id> + <goals> + <goal>send-email</goal> + </goals> + <phase>install</phase> + <!--inherited>false</inherited--> + <configuration> + + <!-- for a multi-module just run on root project --> + <runOnce>true</runOnce> + <skipSendEmail>${skipReleaseSendEmail}</skipSendEmail> + + <emailTitle> + [ANN] - ${project.name} ${project.version} released + </emailTitle> + <emailContentFile> + target/generated-sources/announcement/release-email-announcement.vm + </emailContentFile> + <mailSender> + <name>${platform} Release Notification</name> + <email>noreply@${platform}</email> + </mailSender> + <toAddresses> + <item>${listId}-commits@list.${platform}</item> + </toAddresses> + <!--smtpHost>smtp</smtpHost--> + <!-- fix bug #146 --> + <encoding>iso-8859-1</encoding> + + </configuration> + </execution> + + </executions> + </plugin> + + <!-- + - publish attachments + - generate news announcement + - generate email announcement + - update version + - publish news announcement + - create next version + --> + <plugin> + <groupId>org.nuiton.jredmine</groupId> + <artifactId>jredmine-maven-plugin</artifactId> + <executions> + <execution> + <id>publish-attachments</id> + <goals> + <goal>publish-attachments</goal> + </goals> + <phase>verify</phase> + <configuration> + <filesFromProperties> + ${redmine.collectedAttachments} + </filesFromProperties> + + <skipPublishAttachments> + ${skipReleasePublishAttachments} + </skipPublishAttachments> + </configuration> + </execution> + <execution> + <id>generate-announcements</id> + <goals> + <goal>generate-news-announcement</goal> + <goal>generate-email-announcement</goal> + </goals> + <phase>verify</phase> + <configuration> + <anonymous>${publicProject}</anonymous> + <urlDownload> + ${redmine.url}/projects/${projectId}/files + </urlDownload> + <artifactsFile>${redmine.collectedArtifacts}</artifactsFile> + </configuration> + </execution> + + <execution> + <id>jredmine-release</id> + <goals> + <goal>update-version</goal> + <goal>publish-news</goal> + </goals> + <phase>install</phase> + <configuration> + <!-- for a multi-module just run on root project --> + <runOnce>true</runOnce> + <skipUpdateVersion> + ${skipReleaseUpdateVersion} + </skipUpdateVersion> + <skipPublishNews>${skipReleasePublishNews}</skipPublishNews> + + <!-- udpate-version --> + <closeVersion>true</closeVersion> + + <!-- publish-news --> + <newsContentFile> + target/generated-sources/announcement/release-news-announcement.vm + </newsContentFile> + <newsSummary>${project.description}</newsSummary> + <newsTitle> + ${project.name} ${project.version} released + </newsTitle> + </configuration> + </execution> + + <execution> + <id>jredmine-next-version</id> + <goals> + <goal>next-version</goal> + </goals> + <phase>deploy</phase> + <!--inherited>false</inherited--> + <configuration> + <skipNextVersion>${skipReleaseNextVersion}</skipNextVersion> + </configuration> + </execution> + </executions> + + </plugin> + + </plugins> + + </build> + </profile> + + <!-- Since version 4.0, prefer use the new way to release (see http://maven-site.nuiton.org/mavenpom/mavenpom4redmine/release.html) --> <!-- launch this profile after a release:perform on target/checkout --> <profile> <id>redmine-pre-release-profile</id> @@ -383,6 +568,7 @@ </build> </profile> + <!-- Since version 4.0, prefer use the new way to release (see http://maven-site.nuiton.org/mavenpom/mavenpom4redmine/release.html) --> <!-- perform a redmine release after a successfull release --> <profile> <id>redmine-release-profile</id> @@ -502,6 +688,7 @@ </build> </profile> + <!-- Since version 4.0, prefer use the new way to release (see http://maven-site.nuiton.org/mavenpom/mavenpom4redmine/release.html) --> <!-- perform a redmine release after a successfull release --> <profile> <id>redmine-next-version-profile</id> Modified: trunk/mavenpomdoc/src/site/apt/mavenpom4redmine/release.apt =================================================================== --- trunk/mavenpomdoc/src/site/apt/mavenpom4redmine/release.apt 2013-08-05 12:39:32 UTC (rev 1454) +++ trunk/mavenpomdoc/src/site/apt/mavenpom4redmine/release.apt 2013-08-07 07:41:05 UTC (rev 1455) @@ -35,8 +35,47 @@ Cette page décrit la méthode pour effectuer une release d'un projet héritant de <<mavenpom4redmine>>. - L'opération se déroule en 4 étapes. + Depuis la version 4.0, on a simplifié la procédure de release et il est + désormais possible de n'utiliser que le plugin release sans avoir à + déclancher d'autres builds post-release. (voir http://nuiton.org/issues/2801). + Cependant, on veut quand même de pouvoir continuer à effectuer d'autres tâches + post-release, à savoir : + + * publication des fichiers (<redmine>) + + * mise à jour de la version (<redmine>) + + * génération et envoie de la news d'annonce (<redmine>) + + * génération et envoie du courriel d'annonce (<liste commits>) + + * création de la version suivante (<redmine>) + + A noter que dans ce nouveau mode de release, l'intervention humaine n'est + plus possible pendant le process de release, la news d'annonce sera + automatique publiée et un unique courriel sera envoyé désormais sur la liste + <<commits>> du projet; à votre charge ensuite d'envoyer le vrai courriel + d'annonce de nouvelle release sur les listes adéquates (<<devel>>, <<users>>, + <<announce>>). + + Pour cela il alors placer sur le <<dernier>> module du build la configuration + suivante : + +-------------------------------------------------------------------------------- + <!-- Post Release configuration --> + + <skipReleasePublishAttachments>false</skipReleasePublishAttachments> + <skipReleaseUpdateVersion>false</skipReleaseUpdateVersion> + <skipReleaseSendEmail>false</skipReleaseSendEmail> + <skipReleasePublishNews>false</skipReleasePublishNews> + <skipReleaseNextVersion>false</skipReleaseNextVersion> +-------------------------------------------------------------------------------- + + On laisse quand même la possibilité de faire encore les releases à l'ancienne + avec les quatre étapes... et dans ce cas là ne pas ajouter la section + précédente dans votre projet. + Etape 1 Effectuer une release normal @@ -48,6 +87,8 @@ Etape 2 + <<Plus nécessaire depuis la version 4.0>>. + Dans cette phase, on va : * Deployement des fichiers vers redmine @@ -63,7 +104,7 @@ -------------------------------------------------------------------------------- La commande suivante simule (sans rien déployer) - + -------------------------------------------------------------------------------- mvn -DperformRedminePreRelease -N [-Pcentral-safe] -------------------------------------------------------------------------------- @@ -83,6 +124,8 @@ Etape 3 + <<Plus nécessaire depuis la version 4.0>>. + On finalise la release après avoir modifié les annonces (si nécessaire) : * Mise à jour de la version sur redmine (on la clôture) @@ -94,7 +137,7 @@ [] La commande suivante simule (sans rien publier) : - + -------------------------------------------------------------------------------- mvn -DperformRedmineRelease -N -------------------------------------------------------------------------------- @@ -107,6 +150,8 @@ Etape 4 + <<Plus nécessaire depuis la version 4.0>>. + On revient sur le projet du trunk --------------------------------------------------------------------------------
participants (1)
-
tchemit@users.nuiton.org