Home
%3CLINGO-SUB%20id%3D%22lingo-sub-368253%22%20slang%3D%22en-US%22%3EHow%20to%20Link%20Azure%20Boards%20with%20GitHub%20Commits%20and%20Pull%20Requests%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-368253%22%20slang%3D%22en-US%22%3E%3CP%3E%3CSTRONG%3ETL%2FDR%3A%3C%2FSTRONG%3E%20When%20using%20Azure%20Boards%20to%20track%20work%20items%2C%20these%20work%20items%20can%20be%20linked%20to%20GitHub%20commits%20and%20pull%20requests.%20When%20doing%20so%2C%20updates%20to%20the%20pull%20requests%20are%20also%20noted%20in%20the%20work%20item.%20Once%20the%20pull%20request%20has%20been%20merged%2C%20the%20Azure%20Boards%20work%20item%20automatically%20resolved.%20For%20detailed%20information%2C%20see%20the%20%3CA%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fazure%2Fdevops%2Fboards%2Fgithub%2F%3FWT.mc_id%3DITOpsTalk-blog-nepeters%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noopener%20noreferrer%20noopener%20noreferrer%22%3EGitHub%20and%20Azure%20Boards%20documentation%3C%2FA%3E.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EQuick%20and%20fun%20blog%20post%20with%20lots%20of%20pictures%20for%20today.%20The%20scenario%20is%20that%20my%20organization%2C%20let's%20call%20them%20Tailwind%20Traders%2C%20stores%20Azure%20Resource%20Manager%20Templates%20in%20GitHub%20and%20have%20a%20nightly%20Azure%20Pipelines%20build%20to%20lint%20and%20ensure%20proper%20configuration%20of%20these%20templates.%20Recently%20these%20builds%20started%20failing.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20style%3D%22width%3A%20999px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F88531iCFC051A841D7814E%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20alt%3D%222.jpg%22%20title%3D%222.jpg%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3ESo%2C%20we%20are%20going%20to%20need%20to%20troubleshoot%20but%20first%20I%20will%20create%20an%20Azure%20Boards%20bug%20so%20that%20we%20can%20track%20the%20work.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20style%3D%22width%3A%20999px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F88532iF8FEFE2853400C6F%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20alt%3D%223.jpg%22%20title%3D%223.jpg%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CH2%20id%3D%22toc-hId-1730714719%22%20id%3D%22toc-hId-1731427934%22%3E%26nbsp%3B%3C%2FH2%3E%0A%3CH2%20id%3D%22connectazuredevopstogithub%22%20id%3D%22toc-hId--821442242%22%20id%3D%22toc-hId--820729027%22%3EConnect%20Azure%20Boards%20to%20GitHub%3C%2FH2%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EBefore%20troubleshooting%20and%20potentially%20fixing%20the%20template%20issue.%20Let's%20link%20the%20Azure%20DevOps%20project%20to%20our%20GitHub%20repository.%20To%20do%20so%2C%20navigate%20to%20the%20project%20settings%20and%20select%20GitHub%20Connections%20and%20follow%20the%20on-screen%20prompts.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EFor%20more%20information%20on%20this%20operation%2C%20see%20%3CA%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fazure%2Fdevops%2Fboards%2Fgithub%2Fconnect-to-github%3FWT.mc_id%3DITOpsTalk-blog-nepeters%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noopener%20noreferrer%20noopener%20noreferrer%22%3EConnect%20Azure%20Boards%20to%20GitHub%3C%2FA%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20style%3D%22width%3A%20999px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F88533i7EB5F5D7AE4652EB%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20alt%3D%221.jpg%22%20title%3D%221.jpg%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CH2%20id%3D%22fixtemplateandcreatepullrequest%22%20id%3D%22toc-hId-921368093%22%20id%3D%22toc-hId-922081308%22%3EFix%20template%20and%20create%20a%20pull%20request%3C%2FH2%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3ENow%20that%20we%20have%20%3CSTRONG%3Ea.%3C%2FSTRONG%3E%20identified%20the%20issue%20and%20%3CSTRONG%3Eb.%3C%2FSTRONG%3E%20linked%20the%20Azure%20DevOps%20project%20with%20GitHub%2C%20we%20can%20begin%20to%20work%20the%20issue.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EI%20am%20going%20to%20first%20move%20the%20work%20item%20from%20the%20new%20column%20to%20the%20Active%20column%20to%20signal%20to%20my%20team%20that%20I%20am%20working%20the%20issue.%20This%20also%20sets%20the%20state%20of%20the%20work%20item%20to%20Active.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20style%3D%22width%3A%20999px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F88534i72B3327487763DAC%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20alt%3D%224.jpg%22%20title%3D%224.jpg%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3ELooking%20at%20the%20Azure%20Resource%20Manager%20template%2C%20I%20see%20that%20a%20simple%20comma%20is%20missing%20which%20has%20invalidated%20the%20template.%20I've%20added%20the%20comma%20and%20created%20a%20pull%20request%20for%20the%20fix.%20Take%20note%20here%20of%20the%20commit%20message.%20I've%20added%20to%20the%20message%20%3CSTRONG%3EFixes%3A%20AB%2334%3C%2FSTRONG%3E.%20This%20string%20of%20text%20here%20will%20link%20this%20commit%20and%20PR%20to%20the%20Azure%20Boards%20work%20item.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EFor%20more%20information%20on%20this%20operation%2C%20see%20%3CA%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fazure%2Fdevops%2Fboards%2Fgithub%2Flink-to-from-github%3FWT.mc_id%3DITOpsTalk-blog-nepeters%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noopener%20noreferrer%20noopener%20noreferrer%22%3ELink%20GitHub%20commits%20and%20pull%20requests%20to%20work%20items%3C%2FA%3E.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20style%3D%22width%3A%20999px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F88537i2A872AD19DD1F20F%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20alt%3D%225.jpg%22%20title%3D%225.jpg%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EBecause%20we%20have%20continuous%20integration%20and%20pull%20request%20validation%20enabled%20in%20our%20Azure%20DevOps%20project%2C%20I%20can%20see%20directly%20in%20the%20pull%20request%20that%20a%20build%20has%20been%20triggered%20to%20validate%20proper%20configuration%20of%20that%20Azure%20Resource%20Manager%20template.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20style%3D%22width%3A%20999px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F88546iF1794F137664D09B%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20alt%3D%226.jpg%22%20title%3D%226.jpg%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EI%20can%20also%20see%20the%20build%20in%20Azure%20DevOps%20itself.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20style%3D%22width%3A%20999px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F88540iDFE38075C312FC52%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20alt%3D%227.jpg%22%20title%3D%227.jpg%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EWhat%20is%20really%20cool%20is%20that%20because%20I%20have%20created%20the%20link%20between%20my%20Azure%20DevOps%20project%20and%20GitHub%20and%20have%20used%20the%20correct%20strings%20in%20my%20commit%20message%2C%20all%20GitHub%20activity%20is%20now%20logged%20to%20the%20Azure%20Boards%20work%20item.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CH2%20id%3D%22toc-hId--1630788868%22%20id%3D%22toc-hId--1630075653%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20style%3D%22width%3A%20999px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F88545iC22DC3A090937EEE%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20alt%3D%228.jpg%22%20title%3D%228.jpg%22%20%2F%3E%3C%2FSPAN%3E%3C%2FH2%3E%0A%3CH2%20id%3D%22toc-hId-112021467%22%20id%3D%22toc-hId-112734682%22%3E%26nbsp%3B%3C%2FH2%3E%0A%3CH2%20id%3D%22mergepullrequestandclosebug%22%20id%3D%22toc-hId-1854831802%22%20id%3D%22toc-hId-1855545017%22%3EMerge%20pull%20request%20and%20close%20bug%3C%2FH2%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EOnce%20the%20build%20has%20completed%20successfully%2C%20someone%20from%20my%20team%20will%20validate%20my%20work%20and%20merge%20the%20pull%20request.%20Because%20of%20the%20link%20between%20Azure%20Boards%20and%20GitHub%20account%20not%20only%20will%20the%20merge%20operation%20be%20logged%20to%20the%20Azure%20Boards%20work%20item%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20style%3D%22width%3A%20999px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F88543iFB7A2CA0DC39C8B1%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20alt%3D%229.jpg%22%20title%3D%229.jpg%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3Ethe%20work%20item%20is%20also%20automatically%20is%20resolved.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20style%3D%22width%3A%20999px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F88544iEF0CBD7BA5F33976%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20alt%3D%221.gif%22%20title%3D%221.gif%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EThat%20was%20super%20fun%20to%20work%20through.%20Feel%20free%20to%20reach%20out%20in%20comments%20or%20on%20Twitter%20%3CA%20href%3D%22https%3A%2F%2Ftwitter.com%2Fnepeters%22%20target%3D%22_self%22%20rel%3D%22nofollow%20noopener%20noreferrer%20noopener%20noreferrer%22%3E%40nepeters%3C%2FA%3E.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-TEASER%20id%3D%22lingo-teaser-368253%22%20slang%3D%22en-US%22%3E%3CP%3E%3CSTRONG%20style%3D%22box-sizing%3A%20border-box%3B%20color%3A%20%23333333%3B%20font-family%3A%20%26amp%3Bquot%3B%20segoeui%26amp%3Bquot%3B%2C%26amp%3Bquot%3Blato%26amp%3Bquot%3B%2C%26amp%3Bquot%3Bhelvetica%20neue%26amp%3Bquot%3B%2Chelvetica%2Carial%2Csans-serif%3B%20font-size%3A%2016px%3B%20font-style%3A%20normal%3B%20font-variant%3A%20normal%3B%20font-weight%3A%20bold%3B%20letter-spacing%3A%20normal%3B%20orphans%3A%202%3B%20text-align%3A%20left%3B%20text-decoration%3A%20none%3B%20text-indent%3A%200px%3B%20text-transform%3A%20none%3B%20-webkit-text-stroke-width%3A%200px%3B%20white-space%3A%20normal%3B%20word-spacing%3A%200px%3B%22%3ETL%2FDR%3A%3C%2FSTRONG%3E%3CSPAN%20style%3D%22display%3A%20inline%20!important%3B%20float%3A%20none%3B%20background-color%3A%20%23ffffff%3B%20color%3A%20%23333333%3B%20cursor%3A%20text%3B%20font-family%3A%20inherit%3B%20font-size%3A%2016px%3B%20font-style%3A%20normal%3B%20font-variant%3A%20normal%3B%20font-weight%3A%20300%3B%20letter-spacing%3A%20normal%3B%20line-height%3A%201.7142%3B%20orphans%3A%202%3B%20text-align%3A%20left%3B%20text-decoration%3A%20none%3B%20text-indent%3A%200px%3B%20text-transform%3A%20none%3B%20-webkit-text-stroke-width%3A%200px%3B%20white-space%3A%20normal%3B%20word-spacing%3A%200px%3B%22%3E%20When%20using%20Azure%20DevOps%20boards%20to%20track%20work%20items%2C%20these%20work%20items%20can%20be%20linked%20to%20GitHub%20commits%20and%20pull%20requests.%20When%20doing%20so%2C%20updates%20to%20the%20pull%20requests%20are%20also%20noted%20in%20the%20work%20item.%20Once%20the%20pull%20request%20has%20been%20merged%2C%20the%20Azure%20DevOps%20work%20item%20automatically%20resolved.%20For%20detailed%20information%2C%20see%20the%20%3C%2FSPAN%3E%3CA%20style%3D%22background-color%3A%20transparent%3B%20box-sizing%3A%20border-box%3B%20color%3A%20%23146cac%3B%20font-family%3A%20%26amp%3Bquot%3B%20segoeui%26amp%3Bquot%3B%2C%26amp%3Bquot%3Blato%26amp%3Bquot%3B%2C%26amp%3Bquot%3Bhelvetica%20neue%26amp%3Bquot%3B%2Chelvetica%2Carial%2Csans-serif%3B%20font-size%3A%2016px%3B%20font-style%3A%20normal%3B%20font-variant%3A%20normal%3B%20font-weight%3A%20300%3B%20letter-spacing%3A%20normal%3B%20orphans%3A%202%3B%20text-align%3A%20left%3B%20text-decoration%3A%20underline%3B%20text-indent%3A%200px%3B%20text-transform%3A%20none%3B%20-webkit-text-stroke-width%3A%200px%3B%20white-space%3A%20normal%3B%20word-spacing%3A%200px%3B%22%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fazure%2Fdevops%2Fboards%2Fgithub%2F%3FWT.mc_id%3DITOpsTalk-blog-nepeters%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noopener%20noreferrer%20noopener%20noreferrer%22%3EGitHub%20and%20Azure%20DevOps%20Boards%20documentation%3C%2FA%3E%3CSPAN%20style%3D%22display%3A%20inline%20!important%3B%20float%3A%20none%3B%20background-color%3A%20%23ffffff%3B%20color%3A%20%23333333%3B%20cursor%3A%20text%3B%20font-family%3A%20inherit%3B%20font-size%3A%2016px%3B%20font-style%3A%20normal%3B%20font-variant%3A%20normal%3B%20font-weight%3A%20300%3B%20letter-spacing%3A%20normal%3B%20line-height%3A%201.7142%3B%20orphans%3A%202%3B%20text-align%3A%20left%3B%20text-decoration%3A%20none%3B%20text-indent%3A%200px%3B%20text-transform%3A%20none%3B%20-webkit-text-stroke-width%3A%200px%3B%20white-space%3A%20normal%3B%20word-spacing%3A%200px%3B%22%3E.%3C%2FSPAN%3E%3C%2FP%3E%3C%2FLINGO-TEASER%3E%3CLINGO-LABS%20id%3D%22lingo-labs-368253%22%20slang%3D%22en-US%22%3E%3CLINGO-LABEL%3EAzure%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3ENeil%20Peterson%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E
Microsoft

TL/DR: When using Azure Boards to track work items, these work items can be linked to GitHub commits and pull requests. When doing so, updates to the pull requests are also noted in the work item. Once the pull request has been merged, the Azure Boards work item automatically resolved. For detailed information, see the GitHub and Azure Boards documentation.

 

Quick and fun blog post with lots of pictures for today. The scenario is that my organization, let's call them Tailwind Traders, stores Azure Resource Manager Templates in GitHub and have a nightly Azure Pipelines build to lint and ensure proper configuration of these templates. Recently these builds started failing.

 

2.jpg

 

So, we are going to need to troubleshoot but first I will create an Azure Boards bug so that we can track the work.

 

3.jpg

 

Connect Azure Boards to GitHub

 

Before troubleshooting and potentially fixing the template issue. Let's link the Azure DevOps project to our GitHub repository. To do so, navigate to the project settings and select GitHub Connections and follow the on-screen prompts.

 

For more information on this operation, see Connect Azure Boards to GitHub

 

1.jpg

 

Fix template and create a pull request

 

Now that we have a. identified the issue and b. linked the Azure DevOps project with GitHub, we can begin to work the issue.

 

I am going to first move the work item from the new column to the Active column to signal to my team that I am working the issue. This also sets the state of the work item to Active.

 

4.jpg

 

Looking at the Azure Resource Manager template, I see that a simple comma is missing which has invalidated the template. I've added the comma and created a pull request for the fix. Take note here of the commit message. I've added to the message Fixes: AB#34. This string of text here will link this commit and PR to the Azure Boards work item.

 

For more information on this operation, see Link GitHub commits and pull requests to work items.

 

5.jpg

 

Because we have continuous integration and pull request validation enabled in our Azure DevOps project, I can see directly in the pull request that a build has been triggered to validate proper configuration of that Azure Resource Manager template.

 

6.jpg

 

I can also see the build in Azure DevOps itself.

 

7.jpg

 

What is really cool is that because I have created the link between my Azure DevOps project and GitHub and have used the correct strings in my commit message, all GitHub activity is now logged to the Azure Boards work item.

 

8.jpg

 

Merge pull request and close bug

 

Once the build has completed successfully, someone from my team will validate my work and merge the pull request. Because of the link between Azure Boards and GitHub account not only will the merge operation be logged to the Azure Boards work item:

 

9.jpg

 

the work item is also automatically is resolved.

 

1.gif

 

That was super fun to work through. Feel free to reach out in comments or on Twitter @nepeters.