{"id":787,"date":"2021-08-06T00:17:00","date_gmt":"2021-08-05T11:17:00","guid":{"rendered":"https:\/\/blog.wiseowls.co.nz\/?p=787"},"modified":"2026-03-08T00:48:38","modified_gmt":"2026-03-07T11:48:38","slug":"azure-static-web-apps-custom-build-and-deployments","status":"publish","type":"post","link":"https:\/\/blog.wiseowls.co.nz\/index.php\/2021\/08\/06\/azure-static-web-apps-custom-build-and-deployments\/","title":{"rendered":"Azure Static Web Apps &#8211; custom build and deployments"},"content":{"rendered":"<p>Despite Microsoft <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/static-web-apps\/overview#key-features\">claims <\/a>&#8220;First-class GitHub and Azure DevOps integration&#8221; with <a href=\"https:\/\/blog.wiseowls.co.nz\/index.php\/2021\/07\/23\/azure-static-web-apps-when-speed-to-market-matters\/\">Static Web Apps<\/a>, one is significantly easier to use than the other. Let&#8217;s take a quick look at how much features we&#8217;re giving up by sticking to Azure DevOps:<\/p>\n<figure class=\"wp-block-table\">\n<table>\n<tbody>\n<tr>\n<td><\/td>\n<td><strong>GitHub<\/strong><\/td>\n<td><strong>ADO<\/strong><\/td>\n<\/tr>\n<tr>\n<td>Build\/Deploy pipelines<\/td>\n<td>Automatically adds pipeline definition to the repo<\/td>\n<td>Requires manual pipeline setup<\/td>\n<\/tr>\n<tr>\n<td>Azure Portal support<\/td>\n<td>\u2713<\/td>\n<td>\u2717<\/td>\n<\/tr>\n<tr>\n<td>VS Code Extension<\/td>\n<td>\u2713<\/td>\n<td>\u2717<\/td>\n<\/tr>\n<tr>\n<td>Staging environments and Pull Requests<\/td>\n<td>\u2713<\/td>\n<td>\u2717<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n<p>Looks like a lot of functionality is missing. This however begs the question whether we can do something about it?<\/p>\n<h2 class=\"wp-block-heading\">Turns out we can&#8230;sort of<\/h2>\n<p>Looking a bit further into ADO build pipeline, we notice that Microsoft has published this task <a href=\"https:\/\/github.com\/microsoft\/azure-pipelines-tasks\/tree\/master\/Tasks\/AzureStaticWebAppV0\">on GitHub<\/a>. Bingo! <\/p>\n<p>The process seems to run a <a href=\"https:\/\/github.com\/microsoft\/azure-pipelines-tasks\/blob\/master\/Tasks\/AzureStaticWebAppV0\/launch-docker.sh\">single script<\/a> that in turn runs a docker image, something like this: <\/p>\n<pre class=\"wp-block-code\"><code class=\"\">...\ndocker run \\\n    -e INPUT_AZURE_STATIC_WEB_APPS_API_TOKEN=\"$SWA_API_TOKEN\" \\\n    ...\n    -v \"$mount_dir:$workspace\" \\\n    mcr.microsoft.com\/appsvc\/staticappsclient:stable \\\n    .\/bin\/staticsites\/StaticSitesClient upload<\/code><\/pre>\n<p>What exactly <code>StaticSitesClient<\/code> does is shrouded with mystery, but upon successful build (<a href=\"https:\/\/github.com\/Microsoft\/Oryx\">using Oryx<\/a>) it creates two zip files: <code>app.zip<\/code> and <code>api.zip<\/code>. Then it uploads both to Blob storage and submits a request for <code>ContentDistribution<\/code> endpoint to pick the assets up. <\/p>\n<h2 class=\"wp-block-heading\">It&#8217;s Docker &#8211; it runs anywhere<\/h2>\n<p>This image does not have to run at ADO or Github! We can indeed run this container locally and deploy without even committing the source code. All we need is a deployment token:<\/p>\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">docker run -it --rm \\\n   -e INPUT_AZURE_STATIC_WEB_APPS_API_TOKEN=&lt;your_deployment_token&gt; \n   -e DEPLOYMENT_PROVIDER=DevOps \\\n   -e GITHUB_WORKSPACE=\"\/working_dir\"\n   -e IS_PULL_REQUEST=true \\\n   -e BRANCH=\"TEST_BRANCH\" \\\n   -e ENVIRONMENT_NAME=\"TESTENV\" \\\n   -e PULL_REQUEST_TITLE=\"PR-TITLE\" \\\n   -e INPUT_APP_LOCATION=\".\" \\\n   -e INPUT_API_LOCATION=\".\/api\" \\\n   -v ${pwd}:\/working_dir \\\n   mcr.microsoft.com\/appsvc\/staticappsclient:stable \\\n   .\/bin\/staticsites\/StaticSitesClient upload<\/code><\/pre>\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"787\" height=\"278\" src=\"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2021\/09\/image.png\" alt=\"GitHub Actions workflow YAML for Azure Static Web Apps showing close action\" class=\"wp-image-885\" srcset=\"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2021\/09\/image.png 787w, https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2021\/09\/image-300x106.png 300w, https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2021\/09\/image-768x271.png 768w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><\/figure>\n<p>Also notice how this deployment created a staging environment:<\/p>\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"310\" src=\"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2021\/09\/image-1-1024x310.png\" alt=\"Azure DevOps pipeline build output showing SWA container execution\" class=\"wp-image-886\" srcset=\"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2021\/09\/image-1-1024x310.png 1024w, https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2021\/09\/image-1-300x91.png 300w, https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2021\/09\/image-1-768x232.png 768w, https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2021\/09\/image-1-1536x464.png 1536w, https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2021\/09\/image-1-1200x363.png 1200w, https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2021\/09\/image-1.png 1624w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/figure>\n<h2 class=\"wp-block-heading\">Word of caution <\/h2>\n<p>Even though it seems like a pretty good little hack &#8211; this is not supported. The Portal would also <a href=\"https:\/\/github.com\/Azure\/azure-cli\/issues\/19433\">bug out<\/a> and refuse to display Environments correctly if the resource were created with &#8220;Other&#8221; workflow:<\/p>\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"737\" height=\"416\" src=\"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2021\/09\/image-2.png\" alt=\"Docker run command for SWA deployment container with environment variables\" class=\"wp-image-887\" srcset=\"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2021\/09\/image-2.png 737w, https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2021\/09\/image-2-300x169.png 300w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><figcaption>Portal <\/figcaption><\/figure>\n<\/div>\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"773\" height=\"618\" src=\"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2021\/09\/image-3.png\" alt=\"Successful custom deployment to Azure Static Web Apps from Azure DevOps\" class=\"wp-image-888\" srcset=\"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2021\/09\/image-3.png 773w, https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2021\/09\/image-3-300x240.png 300w, https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2021\/09\/image-3-768x614.png 768w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><figcaption>AZ CLI<\/figcaption><\/figure>\n<\/div>\n<\/div>\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n<p>Diving deep into Static Web Apps deployment is lots of fun. It may also help in situations where external source control is not available. For real production workloads, however, we&#8217;d recommend sticking with GitHub flow.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Despite Microsoft claims &#8220;First-class GitHub and Azure DevOps integration&#8221; with Static Web Apps, one is significantly easier to use than the other. Let&#8217;s take a quick look at how much features we&#8217;re giving up by sticking to Azure DevOps: GitHub ADO Build\/Deploy pipelines Automatically adds pipeline definition to the repo Requires manual pipeline setup Azure &hellip; <a href=\"https:\/\/blog.wiseowls.co.nz\/index.php\/2021\/08\/06\/azure-static-web-apps-custom-build-and-deployments\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Azure Static Web Apps &#8211; custom build and deployments&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":674,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[50],"tags":[48,54],"class_list":["post-787","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cloud","tag-azure","tag-azure-swa"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Azure Static Web Apps - custom build and deployments - Timur and associates<\/title>\n<meta name=\"description\" content=\"In this article we&#039;ll explore how choice of CI\/CD pipeline provider affects developer experience. We&#039;ll also try to game the system a bit.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.wiseowls.co.nz\/index.php\/2021\/08\/06\/azure-static-web-apps-custom-build-and-deployments\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Azure Static Web Apps - custom build and deployments - Timur and associates\" \/>\n<meta property=\"og:description\" content=\"In this article we&#039;ll explore how choice of CI\/CD pipeline provider affects developer experience. We&#039;ll also try to game the system a bit.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.wiseowls.co.nz\/index.php\/2021\/08\/06\/azure-static-web-apps-custom-build-and-deployments\/\" \/>\n<meta property=\"og:site_name\" content=\"Timur and associates\" \/>\n<meta property=\"article:published_time\" content=\"2021-08-05T11:17:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-07T11:48:38+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2021\/02\/cloud-computing-2001090_1920.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1500\" \/>\n\t<meta property=\"og:image:height\" content=\"396\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"timur\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@TimurKh\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2021\\\/08\\\/06\\\/azure-static-web-apps-custom-build-and-deployments\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2021\\\/08\\\/06\\\/azure-static-web-apps-custom-build-and-deployments\\\/\"},\"author\":{\"name\":\"timur\",\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/#\\\/schema\\\/person\\\/34d0ed30d573b5bc317ea990bd2e0c59\"},\"headline\":\"Azure Static Web Apps &#8211; custom build and deployments\",\"datePublished\":\"2021-08-05T11:17:00+00:00\",\"dateModified\":\"2026-03-07T11:48:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2021\\\/08\\\/06\\\/azure-static-web-apps-custom-build-and-deployments\\\/\"},\"wordCount\":302,\"image\":{\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2021\\\/08\\\/06\\\/azure-static-web-apps-custom-build-and-deployments\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/wp-content\\\/uploads\\\/2021\\\/02\\\/cloud-computing-2001090_1920.jpg\",\"keywords\":[\"azure\",\"azure-swa\"],\"articleSection\":[\"Cloud\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2021\\\/08\\\/06\\\/azure-static-web-apps-custom-build-and-deployments\\\/\",\"url\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2021\\\/08\\\/06\\\/azure-static-web-apps-custom-build-and-deployments\\\/\",\"name\":\"Azure Static Web Apps - custom build and deployments - Timur and associates\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2021\\\/08\\\/06\\\/azure-static-web-apps-custom-build-and-deployments\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2021\\\/08\\\/06\\\/azure-static-web-apps-custom-build-and-deployments\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/wp-content\\\/uploads\\\/2021\\\/02\\\/cloud-computing-2001090_1920.jpg\",\"datePublished\":\"2021-08-05T11:17:00+00:00\",\"dateModified\":\"2026-03-07T11:48:38+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/#\\\/schema\\\/person\\\/34d0ed30d573b5bc317ea990bd2e0c59\"},\"description\":\"In this article we'll explore how choice of CI\\\/CD pipeline provider affects developer experience. We'll also try to game the system a bit.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2021\\\/08\\\/06\\\/azure-static-web-apps-custom-build-and-deployments\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2021\\\/08\\\/06\\\/azure-static-web-apps-custom-build-and-deployments\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2021\\\/08\\\/06\\\/azure-static-web-apps-custom-build-and-deployments\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/wp-content\\\/uploads\\\/2021\\\/02\\\/cloud-computing-2001090_1920.jpg\",\"contentUrl\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/wp-content\\\/uploads\\\/2021\\\/02\\\/cloud-computing-2001090_1920.jpg\",\"width\":1500,\"height\":396,\"caption\":\"header image, cloud computing\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2021\\\/08\\\/06\\\/azure-static-web-apps-custom-build-and-deployments\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Azure Static Web Apps &#8211; custom build and deployments\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/#website\",\"url\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/\",\"name\":\"Timur and associates\",\"description\":\"Notes of an IT contractor\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/#\\\/schema\\\/person\\\/34d0ed30d573b5bc317ea990bd2e0c59\",\"name\":\"timur\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/23d55e17d4f0990ee4d12bc6e5dcfb58a292934efd62a185756876379e780b16?s=96&r=pg\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/23d55e17d4f0990ee4d12bc6e5dcfb58a292934efd62a185756876379e780b16?s=96&r=pg\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/23d55e17d4f0990ee4d12bc6e5dcfb58a292934efd62a185756876379e780b16?s=96&r=pg\",\"caption\":\"timur\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/TimurKh\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Azure Static Web Apps - custom build and deployments - Timur and associates","description":"In this article we'll explore how choice of CI\/CD pipeline provider affects developer experience. We'll also try to game the system a bit.","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:\/\/blog.wiseowls.co.nz\/index.php\/2021\/08\/06\/azure-static-web-apps-custom-build-and-deployments\/","og_locale":"en_US","og_type":"article","og_title":"Azure Static Web Apps - custom build and deployments - Timur and associates","og_description":"In this article we'll explore how choice of CI\/CD pipeline provider affects developer experience. We'll also try to game the system a bit.","og_url":"https:\/\/blog.wiseowls.co.nz\/index.php\/2021\/08\/06\/azure-static-web-apps-custom-build-and-deployments\/","og_site_name":"Timur and associates","article_published_time":"2021-08-05T11:17:00+00:00","article_modified_time":"2026-03-07T11:48:38+00:00","og_image":[{"width":1500,"height":396,"url":"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2021\/02\/cloud-computing-2001090_1920.jpg","type":"image\/jpeg"}],"author":"timur","twitter_card":"summary_large_image","twitter_creator":"@TimurKh","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.wiseowls.co.nz\/index.php\/2021\/08\/06\/azure-static-web-apps-custom-build-and-deployments\/#article","isPartOf":{"@id":"https:\/\/blog.wiseowls.co.nz\/index.php\/2021\/08\/06\/azure-static-web-apps-custom-build-and-deployments\/"},"author":{"name":"timur","@id":"https:\/\/blog.wiseowls.co.nz\/#\/schema\/person\/34d0ed30d573b5bc317ea990bd2e0c59"},"headline":"Azure Static Web Apps &#8211; custom build and deployments","datePublished":"2021-08-05T11:17:00+00:00","dateModified":"2026-03-07T11:48:38+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.wiseowls.co.nz\/index.php\/2021\/08\/06\/azure-static-web-apps-custom-build-and-deployments\/"},"wordCount":302,"image":{"@id":"https:\/\/blog.wiseowls.co.nz\/index.php\/2021\/08\/06\/azure-static-web-apps-custom-build-and-deployments\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2021\/02\/cloud-computing-2001090_1920.jpg","keywords":["azure","azure-swa"],"articleSection":["Cloud"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/blog.wiseowls.co.nz\/index.php\/2021\/08\/06\/azure-static-web-apps-custom-build-and-deployments\/","url":"https:\/\/blog.wiseowls.co.nz\/index.php\/2021\/08\/06\/azure-static-web-apps-custom-build-and-deployments\/","name":"Azure Static Web Apps - custom build and deployments - Timur and associates","isPartOf":{"@id":"https:\/\/blog.wiseowls.co.nz\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.wiseowls.co.nz\/index.php\/2021\/08\/06\/azure-static-web-apps-custom-build-and-deployments\/#primaryimage"},"image":{"@id":"https:\/\/blog.wiseowls.co.nz\/index.php\/2021\/08\/06\/azure-static-web-apps-custom-build-and-deployments\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2021\/02\/cloud-computing-2001090_1920.jpg","datePublished":"2021-08-05T11:17:00+00:00","dateModified":"2026-03-07T11:48:38+00:00","author":{"@id":"https:\/\/blog.wiseowls.co.nz\/#\/schema\/person\/34d0ed30d573b5bc317ea990bd2e0c59"},"description":"In this article we'll explore how choice of CI\/CD pipeline provider affects developer experience. We'll also try to game the system a bit.","breadcrumb":{"@id":"https:\/\/blog.wiseowls.co.nz\/index.php\/2021\/08\/06\/azure-static-web-apps-custom-build-and-deployments\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.wiseowls.co.nz\/index.php\/2021\/08\/06\/azure-static-web-apps-custom-build-and-deployments\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.wiseowls.co.nz\/index.php\/2021\/08\/06\/azure-static-web-apps-custom-build-and-deployments\/#primaryimage","url":"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2021\/02\/cloud-computing-2001090_1920.jpg","contentUrl":"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2021\/02\/cloud-computing-2001090_1920.jpg","width":1500,"height":396,"caption":"header image, cloud computing"},{"@type":"BreadcrumbList","@id":"https:\/\/blog.wiseowls.co.nz\/index.php\/2021\/08\/06\/azure-static-web-apps-custom-build-and-deployments\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.wiseowls.co.nz\/"},{"@type":"ListItem","position":2,"name":"Azure Static Web Apps &#8211; custom build and deployments"}]},{"@type":"WebSite","@id":"https:\/\/blog.wiseowls.co.nz\/#website","url":"https:\/\/blog.wiseowls.co.nz\/","name":"Timur and associates","description":"Notes of an IT contractor","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.wiseowls.co.nz\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/blog.wiseowls.co.nz\/#\/schema\/person\/34d0ed30d573b5bc317ea990bd2e0c59","name":"timur","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/23d55e17d4f0990ee4d12bc6e5dcfb58a292934efd62a185756876379e780b16?s=96&r=pg","url":"https:\/\/secure.gravatar.com\/avatar\/23d55e17d4f0990ee4d12bc6e5dcfb58a292934efd62a185756876379e780b16?s=96&r=pg","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/23d55e17d4f0990ee4d12bc6e5dcfb58a292934efd62a185756876379e780b16?s=96&r=pg","caption":"timur"},"sameAs":["https:\/\/x.com\/TimurKh"]}]}},"_links":{"self":[{"href":"https:\/\/blog.wiseowls.co.nz\/index.php\/wp-json\/wp\/v2\/posts\/787","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.wiseowls.co.nz\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.wiseowls.co.nz\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.wiseowls.co.nz\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.wiseowls.co.nz\/index.php\/wp-json\/wp\/v2\/comments?post=787"}],"version-history":[{"count":8,"href":"https:\/\/blog.wiseowls.co.nz\/index.php\/wp-json\/wp\/v2\/posts\/787\/revisions"}],"predecessor-version":[{"id":1355,"href":"https:\/\/blog.wiseowls.co.nz\/index.php\/wp-json\/wp\/v2\/posts\/787\/revisions\/1355"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.wiseowls.co.nz\/index.php\/wp-json\/wp\/v2\/media\/674"}],"wp:attachment":[{"href":"https:\/\/blog.wiseowls.co.nz\/index.php\/wp-json\/wp\/v2\/media?parent=787"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.wiseowls.co.nz\/index.php\/wp-json\/wp\/v2\/categories?post=787"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.wiseowls.co.nz\/index.php\/wp-json\/wp\/v2\/tags?post=787"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}