-
-
Notifications
You must be signed in to change notification settings - Fork 181
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature request: add parameter noReleaseMerge to release and release-finish goals #74
Comments
What do you call a release then? How do you release master? Are you aware of the support-branches? |
We are not in production yet. Anyway I find noReleaseMerge parameter quite useful. |
How do you proceed, when you have version A on master, version B in UAT tests and version C, which is new development? And you need to be able to release B and C and deploy them on the separate test environments? |
We use scrum. At the end of sprint we produce PSI and release a new version (no SNAPSHOT). It is production-ready code. But this release should not be merged into master. |
I don't quite see a reason, why there should be just one release branch. Even bitbucket supports multiple release branches and even merges automatically from older ones to newer ones. |
I'm not sure I undertand, but isn't the whole purpose of using prefixes on branch names that you can have multiple branches when necessary? You have 1.0 in If it takes a long time to finish with the 1.1 version and you want to push 1.2 to testing, you could start the release process also on 1.2 on a branch of its own, ie. What am I missing here? :-) |
Yes, I could create second release branch, but I will not be able to perform release using gitflow plugin as it will fail with 'Release branch already exist)' error. |
I can't see how the plugin would fail with such an error if you're defining a distinct version for each release.
This functionality is already available. |
Thanks Thomas for thorough explanation. |
I'm not sure I understand the problem with master. When you finally release 1.1, you should merge it to master. Then after you finish with the 1.2 release, you merge it to master. You can have multiple versions in the release process simultaneously, but only one, i.e. the latest goes into master. If you need to maintain old versions simultaneously, maybe you should then checkout the support branches as @aleksandr-m suggested? |
Let me rephrase it. |
That sounds a bit problematic. The very least you'll run into merge conflicts when you have many branches changing the project version in How about you have a look at this plugin which you could use to implement staging? Then you don't need to bump the version when making changes on the release branch. You can just redeploy the same version into a staging repository until you're done. When finally merging the release to master, the plugin will move the artifacts from staging into the production repository. We're actually using this method ourselves and it works pretty well. Send me a PM in case you need further instructions. I'm happy to help. |
I did some further testing and you're right the plugin checks for the existence of any release branch, and when you have one active you cannot create another. What do you think @aleksandr-m shouldn't it be possible to run multiple release branches simultaneously? It might be little problematic in practice, but is there need to prevent it altogether? |
@liqidator Why can't you merge to master? What is the purpose of the master branch in your workflow? There is tags in master if you need to deploy some previous version to production. |
Master contains production-ready, tested code. Either hotfixes or new development which passed UAT testing - but only development of the closest version. Does it make sense? Or am I doing something wrong? |
In my company we reach a phase when after each 2 weeks we make a release-RCx, the idea is just to have a release candidate to send to the lab for tests while in the development branch we continue to add the last remaining features. In this release RC branch we may introduce some commits to fix some prio 1 problems found and after 2 weeks we merge it back to development, delete it and make another one, like for example RC2. |
@hfatela Why not to use |
@aleksandr-m I know this is an old thread, but I agree 100% with hfatela above. I have been using jgitflow maven plugin for a couple of years, and we create multiple RC builds between final releases. We use the noReleaseMerge option only for release candidate builds, and for RC builds the release branch cannot be merged to master, as master reflects the latest release and what is deployed to Prod. As to your question above, the artifacts resulting from a build on a feature branch are never pushed to our maven repo. That would make so sense since if you have a dozen feature branches and each was being built multiple times per day, then the functionality of the latest SNAPSHOT build would change over and over. I don't see how that could work. And, since an RC build is a release, then it can be deployed to QA env for testing. We do not allow SNAPSHOT artifacts to the be deployed to QA. So using jgitflow and noReleaseMerge for RC builds is a perfect solution that has served us well. I have recently found that jgitflow does not work for building releases of any flavor when we must use the ssh git url from Bitbucket and only the key is used for authentication and access control, and we must use the 7999 ssh port. I have found that your gitflow maven plugin works better than jgitflow, and since it uses the git commands instead of using jgit, it works perfectly since that uses .ssh/config which provides the usage of the 7999 port and the identity. I also feel that your gitflow maven plugin provides more useful features than jgitflow. However, since the gitflow maven plugin does not support the concept of "noReleaseMerge", I cannot use if for the reasons above. Would you consider adding it? |
@tim-rea So with I'll take another look at it. |
Thats it. Thanks |
Hi @aleksandr-m , Was this feature implemented? If so, which release will it be included in? Thanks, |
@tim-rea Yes, it was. Next. |
@tim-rea 1.15.0 is out! |
We work on two versions in paraller. On develop we have 1.1, in release branch there is 1.0.
What I need is to be able to release both versions whenever needed.
However, when I do release from develop, I don't want to merge to master, because there should be 1.0 only as it is production version.
I am trying to go around this.
When I used jgitflow maven plugin, there was an option noReleaseMerge, I would need something similar.
https://bitbucket.org/atlassian/jgit-flow/wiki/goals/release-finish
I think it is very useful. Or is there any other way to prevent merging to develop/master?
The text was updated successfully, but these errors were encountered: