I want to store, build and release my code after development. How does this and more all come together in Azure DevOps?
Solution
First it is important to agree on a way of working, regardless of the tools that can help. Especially when you are part of a team. Consider, for example, the use of version control (if so, which branching strategy), test and deployment moments, code reviews and registration of activities.
For this solution, we distinguish the following activities for supporting and implementing a way of working:
- Configure Git
- Define a branching strategy
- Define user stories
- Create and approve code reviews
- Automatically build the code
- Automatically release the code
- Support testing
- Capture release to production
How can we translate this into the use of the services in Azure DevOps?
Well, lets have a look at the picture below.
Azure DevOps - Using Pipelines, Repos, Boards and Test Plans |
In this blog post we will go deeper into each aspect and which service can be used.
This service enables you to manage, monitor, build, commit, verify and push your project code including all the other information about your project.
1) Configure Git
Configure Git for version control and code collaboration. This includes everything from creating a repository, determining the collaboration branch and configuring branch policies such as minimum number of reviewers or code comment(s) needs to be processed.
2) Branching strategy
Define a branching strategy including "collaboration" and "feature" branches. This is a more detailed step, also how to handle "hotfixes" for instance, then only determine the collaboration branch. More information about the strategy around Git branching can be found here.
4) Create and approve code reviews
Create and approve code reviews using Pull Requests. This always ensures a four eyes principle. More information about Pull Requests can be found here.
8) Capture release to production
Create a Tag inside a Git repository after a successful release to production. This helps you to check the current or past production version at any time. It can happen for example that one of your stakeholders has other work to do and even after testing, he/she has questions about some functionality that was released the previous sprint and a new release has already taken place.
Boards
This service will manage your software projects and makes use of known frameworks like "Scrum" and "Kanban" that are supported by default.
3) Define user stories
Define user stories to describe the activities and link those user stories to the code. You link user stories to features and epics to group work.
Pipelines
This service will bring together Continuous Integration (CI) and Continuous Delivery (CD) of your code and application using pipelines.
5) Automatically build the code
One of the most important things is working code. In a technical way, we say that your code should "compile" or "build" successfully. In addition to this, you can also write unit tests and add those to your build pipeline. With this, you do not have to worry about running it manually or to forget a test, before your code will be merged into the collaboration branch.
In a separate blog post we will show you how to setup a basic build.
6) Automatically release the code
After a successfully build, you want to release your code to a next environment. With Releases you can setup a pipeline to automate this process.
In a separate blog post we will show you how to setup a basic release.
7) Support testing
Besides unit testing, that can be part of both build and release pipelines, you can also add functional testing. For example the Business Acceptance Test (BAT) when you are releasing to the acceptance environment. You can run the test cases, that you have stored in Azure Test Plans, manually or it can be automated as part of the release. More information about Test Plans can be found here.
Conclusion
In this post you saw a high overview of how you can use Azure DevOps as part of your development process and how it can helps to deliver your software (in an automated way) including testing. With all those different services and options it is a lot and it will take some time and initial investment, but it pays off in the long run. That is why it is important, apart from Azure DevOps, to pay attention for which way of working suits your team the best.
In next blog posts we will go deeper into certain services in Azure DevOps, such as the pipelines that contains a build and release.