{"id":76156,"date":"2019-03-21T07:00:02","date_gmt":"2019-03-21T14:00:02","guid":{"rendered":"https:\/\/cloudblogs.microsoft.com\/opensource\/?p=76156"},"modified":"2025-06-27T10:06:07","modified_gmt":"2025-06-27T17:06:07","slug":"junit-5-adopts-azure-pipelines","status":"publish","type":"post","link":"https:\/\/opensource.microsoft.com\/blog\/2019\/03\/21\/junit-5-adopts-azure-pipelines\/","title":{"rendered":"JUnit 5 adopts Azure Pipelines"},"content":{"rendered":"<figure class=\"wp-block-image alignleft is-resized\"><img decoding=\"async\" src=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/JUnit5-logo-w-top-margin-300x106.webp\" alt=\"JUnit 5 logo \" class=\"wp-image-76186 webp-format\" style=\"width:280px\" srcset=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/JUnit5-logo-w-top-margin.webp 982w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/JUnit5-logo-w-top-margin-300x106.webp 300w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/JUnit5-logo-w-top-margin-768x271.webp 768w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/JUnit5-logo-w-top-margin-330x117.webp 330w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/JUnit5-logo-w-top-margin-800x283.webp 800w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/JUnit5-logo-w-top-margin-400x141.webp 400w\" data-orig-src=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/JUnit5-logo-w-top-margin.png\" data-orig-srcset=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/JUnit5-logo-w-top-margin.png 982w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/JUnit5-logo-w-top-margin-300x106.png 300w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/JUnit5-logo-w-top-margin-768x271.png 768w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/JUnit5-logo-w-top-margin-330x117.png 330w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/JUnit5-logo-w-top-margin-800x283.png 800w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/JUnit5-logo-w-top-margin-400x141.png 400w\"><\/figure>\n\n\n\n<p>Prior to March 2019 we, the <a href=\"https:\/\/junit.org\/\">JUnit<\/a> team, used various continuous integration (CI) services to perform CI checks, from a self-managed Jenkins instance on CloudBees to a Travis CI and AppVeyor setup.<\/p>\n\n\n\n<p>Managing three different setups was not ideal, so the team reduced the CI services used to two: Travis for Linux and Mac builds and AppVeyor for Windows checks. This worked quite well, but we always wanted to have a single CI service to tackle all platforms and tasks. Travis CI introduced support for Windows, but the performance and internal setup made us hang on to AppVeyor for now.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"enter-azure-pipelines\">Enter: Azure Pipelines<\/h2>\n\n\n<figure class=\"wp-block-image alignleft is-resized\"><img decoding=\"async\" src=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/Pipelines-icon-150x150.webp\" alt=\"Azure Pipelines icon (rocket ship)\" class=\"wp-image-76165 webp-format\" style=\"width:145px\" srcset=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/Pipelines-icon.webp 512w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/Pipelines-icon-300x300.webp 300w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/Pipelines-icon-150x150.webp 150w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/Pipelines-icon-250x250.webp 250w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/Pipelines-icon-330x330.webp 330w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/Pipelines-icon-400x400.webp 400w\" data-orig-src=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/Pipelines-icon.png\" data-orig-srcset=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/Pipelines-icon.png 512w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/Pipelines-icon-300x300.png 300w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/Pipelines-icon-150x150.png 150w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/Pipelines-icon-250x250.png 250w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/Pipelines-icon-330x330.png 330w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/Pipelines-icon-400x400.png 400w\"><\/figure>\n\n\n\n<p>With Microsoft releasing <a href=\"https:\/\/azure.microsoft.com\/en-us\/services\/devops\/pipelines\/\">Azure Pipelines<\/a> to the public and with a good free plan for open source projects, the JUnit team quickly saw that this service matched all of the technical requirements needed to build, test, and release the JUnit project, under a single hood.<\/p>\n\n\n\n<p>That&#8217;s why Azure Pipelines is now the official CI build service for <a href=\"https:\/\/junit.org\">JUnit 5<\/a>. It performs all of the checks on submitted pull requests, including builds on top of the latest released version of OpenJDK and early access builds of the next OpenJDK, and does so across the three major operating systems: macOS, Linux, and Windows.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"initial-work-and-next-steps\">Initial work and next steps<\/h2>\n\n\n\n<p>Users of the JUnit project can visit <a href=\"https:\/\/dev.azure.com\/junit-team\/junit5\/_build\">dev.azure.com\/junit-team\/junit5\/_build<\/a> to inspect all builds produced by the JUnit team in detail. Users will find four build jobs for operating systems, one build specifically set up for test coverage, and two builds related to publishing snapshot assets.<\/p>\n\n\n<figure class=\"wp-block-image aligncenter\"><img decoding=\"async\" src=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/JUnit-screenshot.webp\" alt=\"JUnit Azure Pipelines screenshot\" class=\"wp-image-76159 webp-format\" srcset=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/JUnit-screenshot.webp 980w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/JUnit-screenshot-300x190.webp 300w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/JUnit-screenshot-768x487.webp 768w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/JUnit-screenshot-330x209.webp 330w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/JUnit-screenshot-800x508.webp 800w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/JUnit-screenshot-400x254.webp 400w\" data-orig-src=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/JUnit-screenshot.png\" data-orig-srcset=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/JUnit-screenshot.png 980w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/JUnit-screenshot-300x190.png 300w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/JUnit-screenshot-768x487.png 768w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/JUnit-screenshot-330x209.png 330w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/JUnit-screenshot-800x508.png 800w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/JUnit-screenshot-400x254.png 400w\"><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Besides building the project, the JUnit team also uses Azure Pipelines to update snapshot releases of the JUnit project on the open source software repository by Sonatype at <a href=\"https:\/\/oss.sonatype.org\/content\/repositories\/snapshots\/org\/junit\/\">oss.sonatype.org\/content\/repositories\/snapshots\/org\/junit\/<\/a>, as well the user guide that is published under <a href=\"https:\/\/junit.org\/junit5\/docs\/snapshot\/user-guide\/\">junit.org\/junit5\/docs\/snapshot\/user-guide\/<\/a>.<\/p>\n\n\n\n<p>The next step for our team is to look at adopting the service to also release the stable versions to Maven Central. Hopefully this will meet nicely with the upcoming feature of <a href=\"https:\/\/devblogs.microsoft.com\/devops\/adding-caching-to-azure-pipelines\/\">caching<\/a> for even faster builds, which the Azure Pipelines engineering team has already started developing.<\/p>\n\n\n\n<p>In summary, the JUnit team is realizing the following benefits from this solution:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Easy configuration.<\/li>\n\n\n\n<li>Use of a single service for all platforms.<\/li>\n\n\n\n<li>Ability to fully customize the builds using shell scripts.<\/li>\n\n\n\n<li>Ability to test the builds on latest and early access builds of OpenJDK using Docker containers.<\/li>\n\n\n\n<li>High performance and access to parallel builds.<\/li>\n\n\n\n<li>Straightforward integration with GitHub.<\/li>\n\n\n\n<li>Great support from the Azure team.<\/li>\n<\/ul>\n\n\n\n<p>Developers interested in learning how the JUnit team is using Azure Pipelines are welcome to read the two configuration files needed for the entire pipeline flow: <a href=\"https:\/\/github.com\/junit-team\/junit5\/blob\/master\/azure-pipelines.yml\">azure-pipelines.yml<\/a> and <a href=\"https:\/\/github.com\/junit-team\/junit5\/blob\/master\/src\/azure\/azure-gradle-step.yml\">azure-gradle-step.yml<\/a>.<\/p>\n\n\n\n<p>Thanks to <a href=\"https:\/\/twitter.com\/brunoborges\">Bruno Borges<\/a> and <a href=\"https:\/\/twitter.com\/ethomson\">Edward Thomson<\/a> for helping us in this journey with <a href=\"https:\/\/azure.microsoft.com\/en-us\/services\/devops\/pipelines\/\">Azure Pipelines<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"questions-of-feedback-let-us-know-in-the-comments-below\"><em>Questions of feedback? Let us know in the comments below.&nbsp;<\/em><\/h3>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"follow-christian-stein-sormuras-and-the-junit-team-junitteam\"><em>Follow Christian Stein <a href=\"https:\/\/twitter.com\/sormuras\">@sormuras<\/a> and the JUnit Team <a href=\"https:\/\/twitter.com\/junitteam\">@junitteam<\/a><\/em><\/h3>\n","protected":false},"excerpt":{"rendered":"<p>Prior to March 2019 we, the JUnit team, used various continuous integration (CI) services to perform CI checks, from a self-managed Jenkins instance on CloudBees to a Travis CI and AppVeyor setup.<\/p>\n","protected":false},"author":5562,"featured_media":76183,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"msxcm_post_with_no_image":false,"ep_exclude_from_search":false,"_classifai_error":"","_classifai_text_to_speech_error":"","footnotes":""},"post_tag":[2271],"content-type":[346],"topic":[2240,2241],"programming-languages":[],"coauthors":[538],"class_list":["post-76156","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-community-partners","content-type-news","topic-application-development","topic-cloud","review-flag-1593580428-734","review-flag-5-1593580453-725","review-flag-alway-1593580310-39","review-flag-free-1593619513-693"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>JUnit 5 adopts Azure Pipelines | Microsoft Open Source Blog<\/title>\n<meta name=\"description\" content=\"Azure Pipelines is now the official continuous integration build service for JUnit 5, performing all of the checks on submitted pull requests.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/opensource.microsoft.com\/blog\/2019\/03\/21\/junit-5-adopts-azure-pipelines\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JUnit 5 adopts Azure Pipelines | Microsoft Open Source Blog\" \/>\n<meta property=\"og:description\" content=\"Azure Pipelines is now the official continuous integration build service for JUnit 5, performing all of the checks on submitted pull requests.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/opensource.microsoft.com\/blog\/2019\/03\/21\/junit-5-adopts-azure-pipelines\/\" \/>\n<meta property=\"og:site_name\" content=\"Microsoft Open Source Blog\" \/>\n<meta property=\"article:published_time\" content=\"2019-03-21T14:00:02+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-27T17:06:07+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/JUnit-screenshot_TW-1000x560.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1000\" \/>\n\t<meta property=\"og:image:height\" content=\"560\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Christian Stein\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@OpenAtMicrosoft\" \/>\n<meta name=\"twitter:site\" content=\"@OpenAtMicrosoft\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Christian Stein\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 min read\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2019\/03\/21\/junit-5-adopts-azure-pipelines\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2019\/03\/21\/junit-5-adopts-azure-pipelines\/\"},\"author\":[{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/author\/christian-stein\/\",\"@type\":\"Person\",\"@name\":\"Christian Stein\"}],\"headline\":\"JUnit 5 adopts Azure Pipelines\",\"datePublished\":\"2019-03-21T14:00:02+00:00\",\"dateModified\":\"2025-06-27T17:06:07+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2019\/03\/21\/junit-5-adopts-azure-pipelines\/\"},\"wordCount\":491,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2019\/03\/21\/junit-5-adopts-azure-pipelines\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/JUnit5-hero-image.png\",\"keywords\":[\"Community\/partners\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/opensource.microsoft.com\/blog\/2019\/03\/21\/junit-5-adopts-azure-pipelines\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2019\/03\/21\/junit-5-adopts-azure-pipelines\/\",\"url\":\"https:\/\/opensource.microsoft.com\/blog\/2019\/03\/21\/junit-5-adopts-azure-pipelines\/\",\"name\":\"JUnit 5 adopts Azure Pipelines | Microsoft Open Source Blog\",\"isPartOf\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2019\/03\/21\/junit-5-adopts-azure-pipelines\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2019\/03\/21\/junit-5-adopts-azure-pipelines\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/JUnit5-hero-image.png\",\"datePublished\":\"2019-03-21T14:00:02+00:00\",\"dateModified\":\"2025-06-27T17:06:07+00:00\",\"description\":\"Azure Pipelines is now the official continuous integration build service for JUnit 5, performing all of the checks on submitted pull requests.\",\"breadcrumb\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2019\/03\/21\/junit-5-adopts-azure-pipelines\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/opensource.microsoft.com\/blog\/2019\/03\/21\/junit-5-adopts-azure-pipelines\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2019\/03\/21\/junit-5-adopts-azure-pipelines\/#primaryimage\",\"url\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/JUnit5-hero-image.png\",\"contentUrl\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/JUnit5-hero-image.png\",\"width\":700,\"height\":200,\"caption\":\"a close up of a logo\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2019\/03\/21\/junit-5-adopts-azure-pipelines\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/opensource.microsoft.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JUnit 5 adopts Azure Pipelines\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#website\",\"url\":\"https:\/\/opensource.microsoft.com\/blog\/\",\"name\":\"Microsoft Open Source Blog\",\"description\":\"Open dialogue about openness at Microsoft \u2013 open source, standards, interoperability\",\"publisher\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/opensource.microsoft.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#organization\",\"name\":\"Microsoft Open Source Blog\",\"url\":\"https:\/\/opensource.microsoft.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png\",\"contentUrl\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png\",\"width\":259,\"height\":194,\"caption\":\"Microsoft Open Source Blog\"},\"image\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/OpenAtMicrosoft\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"JUnit 5 adopts Azure Pipelines | Microsoft Open Source Blog","description":"Azure Pipelines is now the official continuous integration build service for JUnit 5, performing all of the checks on submitted pull requests.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/opensource.microsoft.com\/blog\/2019\/03\/21\/junit-5-adopts-azure-pipelines\/","og_locale":"en_US","og_type":"article","og_title":"JUnit 5 adopts Azure Pipelines | Microsoft Open Source Blog","og_description":"Azure Pipelines is now the official continuous integration build service for JUnit 5, performing all of the checks on submitted pull requests.","og_url":"https:\/\/opensource.microsoft.com\/blog\/2019\/03\/21\/junit-5-adopts-azure-pipelines\/","og_site_name":"Microsoft Open Source Blog","article_published_time":"2019-03-21T14:00:02+00:00","article_modified_time":"2025-06-27T17:06:07+00:00","og_image":[{"width":1000,"height":560,"url":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/JUnit-screenshot_TW-1000x560.png","type":"image\/png"}],"author":"Christian Stein","twitter_card":"summary_large_image","twitter_creator":"@OpenAtMicrosoft","twitter_site":"@OpenAtMicrosoft","twitter_misc":{"Written by":"Christian Stein","Est. reading time":"2 min read"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/opensource.microsoft.com\/blog\/2019\/03\/21\/junit-5-adopts-azure-pipelines\/#article","isPartOf":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2019\/03\/21\/junit-5-adopts-azure-pipelines\/"},"author":[{"@id":"https:\/\/opensource.microsoft.com\/blog\/author\/christian-stein\/","@type":"Person","@name":"Christian Stein"}],"headline":"JUnit 5 adopts Azure Pipelines","datePublished":"2019-03-21T14:00:02+00:00","dateModified":"2025-06-27T17:06:07+00:00","mainEntityOfPage":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2019\/03\/21\/junit-5-adopts-azure-pipelines\/"},"wordCount":491,"commentCount":0,"publisher":{"@id":"https:\/\/opensource.microsoft.com\/blog\/#organization"},"image":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2019\/03\/21\/junit-5-adopts-azure-pipelines\/#primaryimage"},"thumbnailUrl":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/JUnit5-hero-image.png","keywords":["Community\/partners"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/opensource.microsoft.com\/blog\/2019\/03\/21\/junit-5-adopts-azure-pipelines\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/opensource.microsoft.com\/blog\/2019\/03\/21\/junit-5-adopts-azure-pipelines\/","url":"https:\/\/opensource.microsoft.com\/blog\/2019\/03\/21\/junit-5-adopts-azure-pipelines\/","name":"JUnit 5 adopts Azure Pipelines | Microsoft Open Source Blog","isPartOf":{"@id":"https:\/\/opensource.microsoft.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2019\/03\/21\/junit-5-adopts-azure-pipelines\/#primaryimage"},"image":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2019\/03\/21\/junit-5-adopts-azure-pipelines\/#primaryimage"},"thumbnailUrl":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/JUnit5-hero-image.png","datePublished":"2019-03-21T14:00:02+00:00","dateModified":"2025-06-27T17:06:07+00:00","description":"Azure Pipelines is now the official continuous integration build service for JUnit 5, performing all of the checks on submitted pull requests.","breadcrumb":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2019\/03\/21\/junit-5-adopts-azure-pipelines\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/opensource.microsoft.com\/blog\/2019\/03\/21\/junit-5-adopts-azure-pipelines\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/opensource.microsoft.com\/blog\/2019\/03\/21\/junit-5-adopts-azure-pipelines\/#primaryimage","url":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/JUnit5-hero-image.png","contentUrl":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/03\/JUnit5-hero-image.png","width":700,"height":200,"caption":"a close up of a logo"},{"@type":"BreadcrumbList","@id":"https:\/\/opensource.microsoft.com\/blog\/2019\/03\/21\/junit-5-adopts-azure-pipelines\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/opensource.microsoft.com\/blog\/"},{"@type":"ListItem","position":2,"name":"JUnit 5 adopts Azure Pipelines"}]},{"@type":"WebSite","@id":"https:\/\/opensource.microsoft.com\/blog\/#website","url":"https:\/\/opensource.microsoft.com\/blog\/","name":"Microsoft Open Source Blog","description":"Open dialogue about openness at Microsoft \u2013 open source, standards, interoperability","publisher":{"@id":"https:\/\/opensource.microsoft.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/opensource.microsoft.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/opensource.microsoft.com\/blog\/#organization","name":"Microsoft Open Source Blog","url":"https:\/\/opensource.microsoft.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/opensource.microsoft.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png","contentUrl":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png","width":259,"height":194,"caption":"Microsoft Open Source Blog"},"image":{"@id":"https:\/\/opensource.microsoft.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/OpenAtMicrosoft"]}]}},"msxcm_display_generated_audio":false,"msxcm_animated_featured_image":null,"distributor_meta":false,"distributor_terms":false,"distributor_media":false,"distributor_original_site_name":"Microsoft Open Source Blog","distributor_original_site_url":"https:\/\/opensource.microsoft.com\/blog","push-errors":false,"_links":{"self":[{"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/posts\/76156","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/users\/5562"}],"replies":[{"embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/comments?post=76156"}],"version-history":[{"count":3,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/posts\/76156\/revisions"}],"predecessor-version":[{"id":97795,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/posts\/76156\/revisions\/97795"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/media\/76183"}],"wp:attachment":[{"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/media?parent=76156"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/post_tag?post=76156"},{"taxonomy":"content-type","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/content-type?post=76156"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/topic?post=76156"},{"taxonomy":"programming-languages","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/programming-languages?post=76156"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/coauthors?post=76156"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}