{
  "$type": "site.standard.document",
  "path": "/development-workflow/",
  "publishedAt": "2016-09-18T12:25:26.000Z",
  "site": "at://did:plc:6gssgguzeecdttuw4gpdshg2/site.standard.publication/self",
  "tags": [
    "coding",
    "automation",
    "gradle"
  ],
  "textContent": "This week GitHub released some great new features. The new review feature finally makes code review a first class member of GitHub's feature set. This is one of the final bits we wanted for our build process at work.\n\nI've blogged about bits and pieces of our workflow, but this week I'm going to outline the entire process end to end.\n\nAll our developers use a 'branch and pull request' model. Every change or new feature is developed on its own branch in our git repository. No developer can commit their changes to the main branch. They can only submit a pull request to be merged into the main branch.\n\nAny pull request can only be merged if:\n\nThe build was successful on our CI server.\n\nThe build passes PMD, EsLint, CheckStyle and FindBugs checks.\n\nThe code has been reviewed and accepted by one other developer on the team.\n\nThis ensures two sets of eyes have looked at an approved every change. PMD and FindBugs provide static analysis for bugs and code quality issues. While EsLint and CheckStyle ensure our code meets a common set of formatting. We also check the code coverage numbers for every build.\n\nWhen set up in GitHub. Our branch looks like this.\n\n[Image: Screen-Shot-2016-09-18-at-7.44.51-AM.png]\n\nNow any pull request (PR) can only be merged if all the above is met. Here is an example PR where all checks passed but code review found one issue that blocks a PR from being mergeable.\n\n[Image: Screen-Shot-2016-09-18-at-7.56.24-AM.png]\n\nIf you are wondering about how these checks or process is implemented see some of my past posts:\n\nJava: Code coverage with Gradle and JaCoCo\n\nMigrating to Travis-CI from Bamboo\n\nUpdating GitHub Status from Bamboo\n\nAutomated Acceptance Testing with Selenium\n\nContinuous Deployment with Spring-boot and Travis\n\nRead the original post with all embeds and interactive content at https://rants.broonix.ca/development-workflow/",
  "title": "Development Workflow"
}