Our current software deployment lifecycle looks like this (using git-flow);
We test locally or on a development environment.
We submit a pull-request to merge the feature into the develop branch
Our testers test the feature.
** If rejected ** we create a new bugfix, which we test locally and submit a new pull-request to merge with the develop branch.
At the end of the sprint we create a release from the develop branch.
Deploy the release to the acceptation environment.
** When accepted by all the stakeholders ** We finish the release, thus merging the release branch into the master branch.
The master branch is then deployed to the production environment.
This used to work fine, but now we’re forced to create a new release at the end of each sprint, which means that the develop branch might contain rejected features awaiting a bugfix at the time of release.
To make it more complicated, we have two repositories, one for front-end and one for back-end and they have to be in sync. i.e. our front-end cannot contain features dependent on, an api endpoint that has been rejected by a tester and won't be finished before the release.
I'm at a loss and could really use some advice.
[Sorry for the long comment, but I thought this question needed some context.]