Challenge 05

Deploy into Azure

Use an authorized, non-production Azure environment.

Use your own Azure subscription. Confirm that Azure CLI has selected your subscription and that you have a budget, a suitable region, a dedicated workshop resource group, Contributor access, and an OIDC identity configured for your own GitHub fork. No Azure account, subscription, or preconfigured environment is supplied. Container Apps, ACR, logs, storage, and the SRE Agent may incur charges billed to your subscription. Do not use production resources. Review the setup guidance and cleanup checklist before creating anything.

Goal#

Deploy the full Octocat Supply application to Microsoft Azure using Infrastructure as Code (IaC) and a GitHub Actions CI/CD pipeline. The deployment should be automated, repeatable, defined as code, and driven from GitHub Actions.

Actions#

  • Choose your IaC — Define the Azure infrastructure using an IaC approach (e.g. Bicep or Terraform) for the resources the app needs: compute for frontend/API, storage/database, and supporting services.
  • Author the templates — Use Copilot to help generate and refine the IaC, following Azure best practices.
  • Build the pipeline — Create a GitHub Actions workflow that builds, tests, provisions infrastructure, and deploys the frontend and API.
  • Configure securely — Use GitHub secrets / OIDC federated credentials for Azure authentication; avoid hard-coded credentials.
  • Deploy and verify — Run the pipeline and confirm the application is reachable in Azure.

Optional starter scaffold (included in this folder). infra/ (Bicep) — bundled here — plus the inactive .github/workflows/deploy.yml.example sketch a Container Apps + ACR + OIDC topology so you don't start from a blank page. The meaningful design choices — SKUs, database/storage strategy, API ingress visibility, secrets, scaling — are intentionally left as TODOs. It removes boilerplate; it does not do the challenge for you. In your own fork, finish and review the example before copying it to deploy.yml. The separate pages.yml publishes only this guide; it does not deploy the app or authenticate to Azure. See infra/README.md.

Success criteria#

Learning resources#

A prompt to start with

Adapt this to your chosen API track and actual environment. It starts a conversation; it does not complete the challenge for you.

Read infra/README.md and .github/workflows/deploy.yml.example. List the unfinished decisions and propose a build, test, provision, and deploy plan for my authorized workshop resource group. Use OIDC, explain costs and cleanup, and do not provision anything without my explicit approval.

Ready for the next step?

Demonstrate each success criterion above and check it off. Completion is your assessment, not an automated test of your code.

Check all 4 success criteria before marking complete.

View this page's MarkdownLearning content is pinned to the credited upstream import.

Search the workshop

Solutions are not included.

    Search runs in your browser against the guide. It does not query GitHub or an AI service.

    Reset your workshop progress?

    This removes saved success criteria, completion marks, and the resume location in this browser. It does not change your repository or Azure resources.