Skip to main content
added 218 characters in body
Source Link
eviloop
  • 159
  • 5

I cannot find the reference material right now, but itIt is good practice to building your code only once and not per environment or branch.

Your GIT branches should not be directly connected to your environment stages.

The pipeline should be as follows:

develop > merge to baseline > build > upload to repo > deploy on dev > test > promote deploy to Staging > test > approve > promote deploy to 1 Prod > test > deploy to n Prod.

Always using the same artifactArtifact between promotions. All three environments should be mirrors, with environment depend configurations being injected and minimised.

Promotion"promotion" is done by the deployment tool and not via GIT branch merging.

I would personallyalso apply the QA to the full product and not to feature branches.

Testing branches in a vacuum will lead to integration or merging errors not being found and a false sense of security about the quality of the code. It can also create confusion with the Product Owner "I thought it was done and tested ? Why do we get errors now ?"

If you are not applying continuous integration, branching makes sense to split your hotfix from your already developed newer code. As such, simply feed the hotfix into the start pipeline and deploy it over the newest version.

Problems may arise if there are environment or data changes that are not backward compatible changes between the newest version and the hotfix.

In this case, one normally also includes all the environment and data configurations as a part of the "version" thus rebuilding the full environment every deployment.

This can be easily achieved if the servers are virtual or if they are provisioned via a configuration management tool.

Pratical example: vagrant file for each version. When you rollback from version 1.4.5 to version 0.5.6 you also rollback the vagrant configuration and thus the environment configuration.

While not my initial reference, here is an MSDN Team foundation Server best pratices and patterns: https://msdn.microsoft.com/en-us/library/dn449951.aspx I also advice the reading of the Addison-Wesley signature series books, Continuous Integration and Continuous Delivery

I cannot find the reference material right now, but it is good practice to building your code only once and not per environment or branch.

Your GIT branches should not be directly connected to your environment stages.

The pipeline should be as follows:

develop > merge > build > upload to repo > deploy on dev > test > promote deploy to Staging > test > approve > promote deploy to 1 Prod > test > deploy to n Prod.

Always using the same artifact between promotions. All three environments should be mirrors, with environment depend configurations being injected and minimised.

Promotion is done by the deployment tool and not via GIT branch merging.

I would personally apply the QA to the full product and not to feature branches.

Testing branches in a vacuum will lead to integration or merging errors not being found and a false sense of security about the quality of the code. It can also create confusion with the Product Owner "I thought it was done and tested ? Why do we get errors now ?"

If you are not applying continuous integration, branching makes sense to split your hotfix from your already developed newer code. As such, simply feed the hotfix into the start pipeline and deploy it over the newest version.

Problems may arise if there are environment or data changes that are not backward compatible changes between the newest version and the hotfix.

In this case, one normally also includes all the environment and data configurations as a part of the "version" thus rebuilding the full environment every deployment.

This can be easily achieved if the servers are virtual or if they are provisioned via a configuration management tool.

Pratical example: vagrant file for each version. When you rollback from version 1.4.5 to version 0.5.6 you also rollback the vagrant configuration and thus the environment configuration

It is good practice to building your code only once and not per environment or branch.

Your GIT branches should not be directly connected to your environment stages.

The pipeline should be as follows:

develop > merge to baseline > build > upload to repo > deploy on dev > test > deploy to Staging > test > approve > deploy to 1 Prod > test > to n Prod.

Always using the same Artifact between promotions. All environments should be mirrors, with environment depend configurations being injected and minimised.

"promotion" is done by the deployment tool and not via GIT branch merging.

I also apply the QA to the full product and not to feature branches.

Testing branches in a vacuum will lead to integration or merging errors not being found and a false sense of security about the quality of the code. It can also create confusion with the Product Owner "I thought it was done and tested ? Why do we get errors now ?"

If you are not applying continuous integration, branching makes sense to split your hotfix from your already developed newer code. As such, simply feed the hotfix into the start pipeline and deploy it over the newest version.

Problems may arise if there are environment or data changes that are not backward compatible between the newest version and the hotfix.

In this case, one normally also includes all the environment and data configurations as a part of the "version" thus rebuilding the full environment every deployment.

This can be easily achieved if the servers are virtual or if they are provisioned via a configuration management tool.

Pratical example: vagrant file for each version. When you rollback from version 1.4.5 to version 0.5.6 you also rollback the vagrant configuration and thus the environment configuration.

While not my initial reference, here is an MSDN Team foundation Server best pratices and patterns: https://msdn.microsoft.com/en-us/library/dn449951.aspx I also advice the reading of the Addison-Wesley signature series books, Continuous Integration and Continuous Delivery

added 1 character in body
Source Link
eviloop
  • 159
  • 5

I cannot find the reference material right now, but it is good practice to building your code only once and not per environment or branch.

Your GIT branches should not be directly connected to your environment stages.

The pipeline should be as follows:

develop > merge > build > upload to repo > deploy on dev > test > promote deploy to Staging > test > approve > promote deploy to 1 Prod > test > deploy to n Prod.

Always using the same artifact between promotions. All three environments should be mirrors, with environment depend configurations being injected and minimised.

Promotion is done by the deployment tool and not via GIT branch merging.

I would personally apply the QA to the full product and not to feature branches.

Testing branches in a vacuum will lead to integration or merging errors not being found and a false sense of security about the quality of the code. It can also create confusion with the Product Owner "I thought it was done and tested ? Why do we get errors now ?"

If you are not applying continuous integration, branching makes sense to split your hotfix from your already developed newer code. As such, simply feed the hotfix into the start pipeline and deploy it over the newest version.

Problems may arise if there are environment or data changes that are not backward compatible changes between the newest version and the hotfix.

In this case, one normally also includes all the environment and data configurations as a part of the "version" thus rebuilding the full environment every deployment.

This can be easily achieved if the servers are virtual or if they are provisioned via a configuration management tool.

Pratical example: vagrant file for each version. When you rollback from version 1.4.5 to version 0.5.6 you also rollback the vagrant configuration and thus the environment configuration

I cannot find the reference material right now, but it is good practice to building your code only once and not per environment or branch.

Your GIT branches should not be directly connected to your environment stages.

The pipeline should be as follows:

develop > merge > build > upload to repo > deploy on dev > test > promote deploy to Staging > test > approve > promote deploy to 1 Prod > test > deploy to n Prod.

Always using the same artifact between promotions. All three environments should be mirrors, with environment depend configurations being injected and minimised.

Promotion is done by the deployment tool and not via GIT branch merging.

I would personally apply the QA to the full product and not to feature branches.

Testing branches in a vacuum will lead to integration or merging errors not being found and a false sense of security about the quality of the code. It can also create confusion with the Product Owner "I thought it was done and tested ? Why do we get errors now ?"

I cannot find the reference material right now, but it is good practice to building your code only once and not per environment or branch.

Your GIT branches should not be directly connected to your environment stages.

The pipeline should be as follows:

develop > merge > build > upload to repo > deploy on dev > test > promote deploy to Staging > test > approve > promote deploy to 1 Prod > test > deploy to n Prod.

Always using the same artifact between promotions. All three environments should be mirrors, with environment depend configurations being injected and minimised.

Promotion is done by the deployment tool and not via GIT branch merging.

I would personally apply the QA to the full product and not to feature branches.

Testing branches in a vacuum will lead to integration or merging errors not being found and a false sense of security about the quality of the code. It can also create confusion with the Product Owner "I thought it was done and tested ? Why do we get errors now ?"

If you are not applying continuous integration, branching makes sense to split your hotfix from your already developed newer code. As such, simply feed the hotfix into the start pipeline and deploy it over the newest version.

Problems may arise if there are environment or data changes that are not backward compatible changes between the newest version and the hotfix.

In this case, one normally also includes all the environment and data configurations as a part of the "version" thus rebuilding the full environment every deployment.

This can be easily achieved if the servers are virtual or if they are provisioned via a configuration management tool.

Pratical example: vagrant file for each version. When you rollback from version 1.4.5 to version 0.5.6 you also rollback the vagrant configuration and thus the environment configuration

added 1 character in body
Source Link
eviloop
  • 159
  • 5

I cannot find the reference material right now, but it is good practice to building your code only once and not per environment or branch.

Your GIT branches should not be directly connected to your environment stages.

The pipeline should be as follows:

develop > merge > build > upload to repo > deploy on dev > test > promote deploy to Staging > test > approve > promote deploy to 1 Prod > test > deploy to n Prod.

Always using the same artifact between promotions. All three environments should be mirrors, with environment depend configurations being injected and minimised.

Promotion is done by the deployment tool and not via GIT branch merging.

I would personally apply the QA to the full product and not to feature branches.

Testing branches in a vacuum will lead to integration or merging errors not being found and a false sense of security about the quality of the code. It can also create confusion with the Product Owner "I thought it was done and testtested ?? Why do we get errors now ?"

I cannot find the reference material right now, but it is good practice to building your code only once and not per environment or branch.

Your GIT branches should not be directly connected to your environment stages.

The pipeline should be as follows:

develop > merge > build > upload to repo > deploy on dev > test > promote deploy to Staging > test > approve > promote deploy to 1 Prod > test > deploy to n Prod.

Always using the same artifact between promotions. All three environments should be mirrors, with environment depend configurations being injected and minimised.

Promotion is done by the deployment tool and not via GIT branch merging.

I would personally apply the QA to the full product and not to feature branches.

Testing branches in a vacuum will lead to integration or merging errors not being found and a false sense of security about the quality of the code. It can also create confusion with the Product Owner "I thought it was done and test ?? Why do we get errors now ?"

I cannot find the reference material right now, but it is good practice to building your code only once and not per environment or branch.

Your GIT branches should not be directly connected to your environment stages.

The pipeline should be as follows:

develop > merge > build > upload to repo > deploy on dev > test > promote deploy to Staging > test > approve > promote deploy to 1 Prod > test > deploy to n Prod.

Always using the same artifact between promotions. All three environments should be mirrors, with environment depend configurations being injected and minimised.

Promotion is done by the deployment tool and not via GIT branch merging.

I would personally apply the QA to the full product and not to feature branches.

Testing branches in a vacuum will lead to integration or merging errors not being found and a false sense of security about the quality of the code. It can also create confusion with the Product Owner "I thought it was done and tested ? Why do we get errors now ?"

added 195 characters in body
Source Link
eviloop
  • 159
  • 5
Loading
added 41 characters in body
Source Link
eviloop
  • 159
  • 5
Loading
Source Link
eviloop
  • 159
  • 5
Loading