Hi All,

Moved to a new maven plugin named wso2-release-helper-plugin [1].

Thanks,

[1]
https://github.com/wso2/maven-tools/tree/master/wso2-release-helper-plugin

On Mon, Aug 10, 2015 at 10:07 AM, Jasintha Dasanayake <[email protected]>
wrote:

>
>
> On Fri, Aug 7, 2015 at 2:35 PM, Kavith Lokuhewage <[email protected]> wrote:
>
>> Hi All,
>>
>> Since now we are going to support multiple goals of release plugin and
>> it's anymore not only about pre-prepare, shall we rename the plugin as
>> "wso2-maven-release-plugin" instead of calling it
>> "wso2-release-pre-prepare-plugin"?
>>
>
> above suggested name make sense that this plugin can be used along to
> release a repository, but that's not true right ,so  still maven release
> plugin also needs to do a release , so renaming into
> "wso2-maven-release-plugin" is misleading.
>
> IMO Actually, this plugin is helping to complete maven-release-plugin
> goals , so this is a helper plugin something similar to the maven build
> helper plugin. we can rename this as a wso2-maven-release-helper plugin
>
>
>>
>> Also shall we assign a plugin goal prefix to this plugin? So that it is
>> possible to invoke goals using the prefix instead of full plugin name
>> (similar to Apache maven release plugin).
>>
>
> +1
>
> Thanks and Regards
> /Jasintha
>
>>
>>   eg: wso2-release:rollback
>>
>> WDYT?
>>
>> Thanks.
>>
>> On Fri, Aug 7, 2015 at 12:01 PM, Kavith Lokuhewage <[email protected]>
>> wrote:
>>
>>> Hi all,
>>>
>>> WSO2 maven release prepare plugin [1]  was introduced to help Apache
>>> maven release plugin to prepare releases of WSO2 specific maven projects
>>> (ESB and Registry). These projects contain *artifact.xml* files which
>>> consists of meta-data (including versions) of the project artifacts and
>>> they need to be updated for both release version (tag) and the next
>>> development version(trunk) during the release preparation. WSO2 maven
>>> release prepare plugin addresses this requirement.
>>>
>>> *Current implementation*
>>>
>>> With Apache maven release plugin, it's possible to configure additional
>>> maven plugins as completion goals of preparation goal[2].
>>>
>>> Currently, pre-prepare goal of wso2 maven release prepare plugin should
>>> be executed as a completion goal of Apache maven release plugin. Current
>>> implementation only supports svn. Current implementation
>>> is summarized below.
>>>
>>>    - Check out already committed svn tag to a temporary location
>>>    - Iterate though all maven projects and identify ESB and Registry
>>>    projects
>>>    - Read release.properties[3] file and identify release version for
>>>       that particular project.
>>>       - Update *artifact.xml *file with release version.
>>>    - Commit the changes to tag.
>>>    - Check out trunk to a temporary location.
>>>    - Iterate though ESB and Registry projects.
>>>    - Read release.properties[3] file and identify next development
>>>       version for that particular project.
>>>       - Update *artifact.xml* file with
>>>    - commit the changes to trunk.
>>>
>>> *Current drawbacks and limitations *
>>>
>>>    - Only supports svn.
>>>    - Implementing support for other scm providers require a lot of
>>>    effort.
>>>       - Even-though a common scm-api[4] was used for svn related tasks,
>>>       implementation is too tied to svn way of doing things (Eg. Tagging in 
>>> svn
>>>       vs git).
>>>    - Checking out a remote repository temporary may affect performance
>>>    with large repositories and introduces an unnecessary complexity.
>>>    - doesn't support rollback mode [5]
>>>    - doesn't support dryRun mode [2]
>>>
>>> *Proposed implementation*
>>>
>>> Main goals are to support other scm providers (avoid any scm provider
>>> specific implementations) and avoid cloning remote repositories.
>>> Rollback and dryRun modes can also be supported with this design.
>>>
>>> As mentioned under[2], in the release:prepare goal, Apache maven release
>>> plugin provides two entry points for other plugins as below.
>>>
>>>
>>>    - preparationGoals - Goals to run as part of the preparation step,
>>>    after transformation from snapshot versions to release version, but 
>>> before
>>>    committing.
>>>    - completionGoals - Goals to run on completion of the preparation
>>>    step, after transformation back to the next development version but 
>>> before
>>>    committing.
>>>
>>> These two entry points can be used to access already modified projects
>>> in the two phases - release preparation and next snapshot preparation - but
>>> before committing them to remote repo. New two different goals will be
>>> introduced for WSO2 maven release prepare plugin as below. These two
>>> can be executed as a preparation goal and a completion goal of Apache maven
>>> release plugin.
>>>
>>>    - prepare-release : find ESB and Registry projects in local repo and
>>>    update *artifact.xml* files with release version for each particular
>>>    project (captured from release.properties[3] file)
>>>    - prepare-snapshot : find ESB and Registry projects in local repo and
>>>    update *artifact.xml* files with next dev version for each
>>>    particular project (captured from release.properties[3] file)
>>>
>>> This way, it's possible to have *artifact.xml* files
>>> also modified before Apache maven release plugin commits the changes.
>>> Yet, Apache maven release plugin does not commit all the changed files
>>> in the repository but only commit changed pom.xml files. As of now, there
>>> is no way to include changed *artifact.xml* files in Apache maven
>>> release plugin commits (there's a configuration to exclude files
>>> though).
>>>
>>> To address above issue, we need to commit changed *artifact.xml*  file
>>> before Apache maven release plugin commits. It is possible to use
>>> scm:checkin goal of maven scm plugin[6] to commit changed files to remote
>>> repository. It is possible to use mojo-executor [7] to execute this within
>>> mojos in WSO2 maven release prepare plugin. This way it is possible to
>>> avoid any scm  related logic inside WSO2 maven release prepare plugin
>>> and it will have OOB support for all scm providers which are currently
>>> supported by maven scm plugin[6].
>>>
>>> *rollback **support*
>>>
>>> A new goal called rollback will also be introduced for WSO2 release
>>> prepare plugin. However, Apache release plugin does not provide any
>>> entry point for other plugins in release:rollback goal. Hence, this
>>> rollback goal of WSO2 maven release prepare plugin will have to be
>>> manually invoked in order to rollback changed *artifact.xml* files.
>>>
>>> Implementation of rollback goal can be done similar to prepare-release
>>> and prepare-snapshot goals (using release.properties files and maven
>>> scm plugin).  However, this introduces the constraint that
>>> wso2-release:rollback goal should be executed before executing rollback
>>> goal Apache release plugin (since release.properties file will be
>>> deleted after rollback of Apache release plugin ).
>>>
>>> Alternatively, it is possible to introduce a backup file for each
>>> modified *artifact.xml* (similar to what Apache release plugin does).
>>> Then again an another issue rises - How to cleanup these backup files after
>>> a successful release:prepare and a release:perform (release:perform
>>> also does not provide an entry point for other plugins)?
>>>
>>> Please share your thoughts on this.
>>>
>>> Thanks,
>>>
>>> [1]
>>> https://docs.wso2.com/display/DVS371/Using+Maven+with+Developer+Studio#UsingMavenwithDeveloperStudio-MavenReleaseplug-in
>>>
>>> [2]
>>> http://maven.apache.org/maven-release/maven-release-plugin/prepare-mojo.html
>>>
>>> [3] Maven release plugin creates a file called release.properties in
>>> the root of the repository after finalizing release versions and next
>>> development versions for each maven project in the repository. This file
>>> also consists of the tag name for the release and scm connection details.
>>> This file is created during release : prepare goal of apache maven release
>>> plugin and will be cleaned after executing release : perform.
>>>
>>> [4] http://maven.apache.org/scm/maven-scm-api/
>>>
>>> [5]
>>> http://maven.apache.org/maven-release/maven-release-plugin/rollback-mojo.html
>>>
>>> [6] http://maven.apache.org/scm/
>>>
>>> [ 7 ] http://timmoore.github.io/mojo-executor/
>>> --
>>> *Kavith Lokuhewage*
>>> Software Engineer
>>> WSO2 Inc. - http://wso2.com
>>> lean . enterprise . middleware
>>> Mobile - +9477-9-145-123 | +9471-455-6-401
>>> Linkedin <http://www.linkedin.com/pub/kavith-lokuhewage/49/473/419>
>>> Twitter <https://twitter.com/KavithThiranga>
>>>
>>
>>
>>
>> --
>> *Kavith Lokuhewage*
>> Software Engineer
>> WSO2 Inc. - http://wso2.com
>> lean . enterprise . middleware
>> Mobile - +9477-9-145-123 | +9471-455-6-401
>> Linkedin <http://www.linkedin.com/pub/kavith-lokuhewage/49/473/419>
>> Twitter <https://twitter.com/KavithThiranga>
>>
>
>
>
> --
>
> *Jasintha Dasanayake*
>
> *Senior Software EngineerWSO2 Inc. | http://wso2.com
> <http://wso2.com/>lean . enterprise . middleware*
>
>
> *mobile :- 0711368118*
>



-- 
*Kavith Lokuhewage*
Software Engineer
WSO2 Inc. - http://wso2.com
lean . enterprise . middleware
Mobile - +9477-9-145-123 | +9471-455-6-401
Linkedin <http://www.linkedin.com/pub/kavith-lokuhewage/49/473/419>  Twitter
<https://twitter.com/KavithThiranga>
_______________________________________________
Architecture mailing list
[email protected]
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture

Reply via email to