From f83547f0ef66e5d84c51f8cf0b115cccf838e52a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 9 Mar 2026 22:29:29 +0000 Subject: [PATCH 1/5] Initial plan From b091dc661186643ff6e1bd5189c41c6400d22806 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 9 Mar 2026 22:38:41 +0000 Subject: [PATCH 2/5] Merge main, resolve conflicts, fix content path references Co-authored-by: GeekTrainer <6109729+GeekTrainer@users.noreply.github.com> --- .gitignore | 5 +- README.md | 8 +- app/server/app.py | 2 +- content/1-hour/0-setup.md | 10 +- content/1-hour/1-add-endpoint.md | 4 +- content/README.md | 5 +- content/full-day/0-setup.md | 4 +- content/full-day/3-codespaces.md | 2 +- content/full-day/README.md | 2 +- content/github-actions/0-setup.md | 51 ++++ content/github-actions/1-introduction.md | 126 ++++++++ content/github-actions/2-code-scanning.md | 121 ++++++++ content/github-actions/3-running-tests.md | 202 +++++++++++++ content/github-actions/4-caching.md | 117 ++++++++ content/github-actions/5-matrix-strategies.md | 131 +++++++++ content/github-actions/6-deploy-azure.md | 249 ++++++++++++++++ content/github-actions/7-custom-actions.md | 268 ++++++++++++++++++ .../github-actions/8-reusable-workflows.md | 243 ++++++++++++++++ .../github-actions/9-required-workflows.md | 176 ++++++++++++ content/github-actions/README.md | 68 +++++ .../shared-images/code-scanning-dialog.png | Bin 0 -> 60341 bytes content/shared-images/code-scanning-setup.png | Bin 0 -> 80965 bytes content/shared-images/dependabot-settings.png | Bin 0 -> 94706 bytes .../secret-scanning-settings.png | Bin 0 -> 35344 bytes .../setup-configure-repo.png} | Bin .../shared-images/setup-secret-protection.png | Bin 0 -> 33970 bytes .../setup-use-template.png} | Bin next-steps.md | 64 +++++ 28 files changed, 1842 insertions(+), 16 deletions(-) create mode 100644 content/github-actions/0-setup.md create mode 100644 content/github-actions/1-introduction.md create mode 100644 content/github-actions/2-code-scanning.md create mode 100644 content/github-actions/3-running-tests.md create mode 100644 content/github-actions/4-caching.md create mode 100644 content/github-actions/5-matrix-strategies.md create mode 100644 content/github-actions/6-deploy-azure.md create mode 100644 content/github-actions/7-custom-actions.md create mode 100644 content/github-actions/8-reusable-workflows.md create mode 100644 content/github-actions/9-required-workflows.md create mode 100644 content/github-actions/README.md create mode 100644 content/shared-images/code-scanning-dialog.png create mode 100644 content/shared-images/code-scanning-setup.png create mode 100644 content/shared-images/dependabot-settings.png create mode 100644 content/shared-images/secret-scanning-settings.png rename content/{1-hour/images/0-setup-configure.png => shared-images/setup-configure-repo.png} (100%) create mode 100644 content/shared-images/setup-secret-protection.png rename content/{1-hour/images/0-setup-template.png => shared-images/setup-use-template.png} (100%) create mode 100644 next-steps.md diff --git a/.gitignore b/.gitignore index 9ac1913..3a64e92 100644 --- a/.gitignore +++ b/.gitignore @@ -44,4 +44,7 @@ app/client/test-results/ app/client/playwright-report/ # e2e test database -app/server/e2e_test_dogshelter.db \ No newline at end of file +app/server/e2e_test_dogshelter.db + +# azure +.azure diff --git a/README.md b/README.md index ae74e0a..d0fd39c 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,12 @@ # Pets workshop -This repository contains the project for two guided workshops to explore various GitHub features. The project is a website for a fictional dog shelter, with a [Flask](https://flask.palletsprojects.com/en/stable/) backend using [SQLAlchemy](https://www.sqlalchemy.org/) and an [Astro](https://astro.build/) frontend using [Tailwind CSS](https://tailwindcss.com/). +This repository contains the project for three guided workshops to explore various GitHub features. The project is a website for a fictional dog shelter, with a [Flask](https://flask.palletsprojects.com/en/stable/) backend using [SQLAlchemy](https://www.sqlalchemy.org/) and an [Astro](https://astro.build/) frontend using [Tailwind CSS](https://tailwindcss.com/). + +The available workshops are: + +- **[One hour](./content/1-hour/README.md)** — focused on GitHub Copilot +- **[Full-day](./content/full-day/README.md)** — a full day-in-the-life of a developer using GitHub for their DevOps processes +- **[GitHub Actions](./content/github-actions/README.md)** — CI/CD pipelines from running tests to deploying to Azure ## Getting started diff --git a/app/server/app.py b/app/server/app.py index 6bc7aab..c7aa30e 100644 --- a/app/server/app.py +++ b/app/server/app.py @@ -80,4 +80,4 @@ def get_dog(id: int) -> tuple[Response, int] | Response: ## HERE if __name__ == '__main__': - app.run(debug=True, port=5100) # Port 5100 to avoid macOS conflicts \ No newline at end of file + app.run(debug=True, port=5100) # Port 5100 to avoid macOS conflicts diff --git a/content/1-hour/0-setup.md b/content/1-hour/0-setup.md index c7db265..e364167 100644 --- a/content/1-hour/0-setup.md +++ b/content/1-hour/0-setup.md @@ -17,14 +17,14 @@ Let's create the repository you'll use for your workshop. 1. Navigate to [the repository root](/) 2. Select **Use this template** > **Create a new repository** - ![Screenshot of Use this template dropdown](images/0-setup-template.png) + ![Screenshot of Use this template dropdown](../shared-images/setup-use-template.png) 3. Under **Owner**, select the name of your GitHub handle, or the owner specified by your workshop leader. 4. Under **Repository**, set the name to **pets-workshop**, or the name specified by your workshop leader. 5. Ensure **Public** is selected for the visibility, or the value indicated by your workshop leader. 6. Select **Create repository from template**. - ![Screenshot of configured template creation dialog](images/0-setup-configure.png) + ![Screenshot of configured template creation dialog](../shared-images/setup-configure-repo.png) In a few moments a new repository will be created from the template for this workshop! @@ -51,19 +51,19 @@ With the repository created, it's now time to clone the repository locally. We'l - macOS / Linux: ```sh - ./scripts/start-app.sh + ./app/scripts/start-app.sh ``` - Windows (PowerShell): ```powershell - ./scripts/start-app.ps1 + ./app/scripts/start-app.ps1 ``` If you encounter execution policy warnings on Windows, run PowerShell as an administrator or execute the script with an explicit bypass, for example: ```powershell - powershell -ExecutionPolicy Bypass -File .\scripts\start-app.ps1 + powershell -ExecutionPolicy Bypass -File .\app\scripts\start-app.ps1 ``` The startup script will start two applications: diff --git a/content/1-hour/1-add-endpoint.md b/content/1-hour/1-add-endpoint.md index b34585c..554ca67 100644 --- a/content/1-hour/1-add-endpoint.md +++ b/content/1-hour/1-add-endpoint.md @@ -10,10 +10,10 @@ With code completions, GitHub Copilot provides suggestions in your code editor w It's standard to work in phases when adding functionality to an application. Given that we know we want to allow users to filter the list of dogs based on breed, we'll need to add an endpoint to provide a list of all breeds. Later we'll add the rest of the functionality, but let's focus on this part for now. -The application uses a Flask app with SQLAlchemy as the backend API (in the [/server][server-code] folder), and an Astro app as the frontend (in the [/client][client-code] folder). You will explore more of the project later; this exercise will focus solely on the Flask application. +The application uses a Flask app with SQLAlchemy as the backend API (in the [app/server][server-code] folder), and an Astro app as the frontend (in the [app/client][client-code] folder). You will explore more of the project later; this exercise will focus solely on the Flask application. > [!NOTE] -> As you begin making changes to the application, there is always a chance a breaking change could be created. If the page stops working, check the terminal window you used previously to start the application for any error messages. You can stop the app by using Ctl+C, and restart it by running the script appropriate for your operating system: `./scripts/start-app.sh` (macOS / Linux) or `./scripts/start-app.ps1` (Windows PowerShell). +> As you begin making changes to the application, there is always a chance a breaking change could be created. If the page stops working, check the terminal window you used previously to start the application for any error messages. You can stop the app by using Ctl+C, and restart it by running the script appropriate for your operating system: `./app/scripts/start-app.sh` (macOS / Linux) or `./app/scripts/start-app.ps1` (Windows PowerShell). ## Flask routes diff --git a/content/README.md b/content/README.md index c3fe1aa..63c20ae 100644 --- a/content/README.md +++ b/content/README.md @@ -1,11 +1,12 @@ # Pets workshop -This repository contains two workshops: +This repository contains three workshops: - a [one hour](./1-hour/README.md) workshop focused on GitHub Copilot. - a [full-day](./full-day/README.md) workshop which covers a full day-in-the-life of a developer using GitHub for their DevOps processes. +- a [GitHub Actions](./github-actions/README.md) workshop covering CI/CD pipelines from running tests to deploying to Azure. -Both workshops are built around a fictional dog shelter, where you are a volunteer helping them build out their website. +All workshops are built around a fictional dog shelter, where you are a volunteer helping them build out their website. ## Get started diff --git a/content/full-day/0-setup.md b/content/full-day/0-setup.md index 3bb7aa3..4a29341 100644 --- a/content/full-day/0-setup.md +++ b/content/full-day/0-setup.md @@ -12,12 +12,12 @@ Let's create the repository you'll use for your workshop. 1. Navigate to [the repository root][repo-root] 2. Select **Use this template** > **Create a new repository** - ![Screenshot of Use this template dropdown](../1-hour/images/0-setup-template.png) + ![Screenshot of Use this template dropdown](../shared-images/setup-use-template.png) 3. Under **Owner**, select the name of your GitHub handle, or the owner specified by your workshop leader. 4. Under **Repository**, set the name to **pets-workshop**, or the name specified by your workshop leader. 5. Ensure **Public** is selected for the visibility, or the value indicated by your workshop leader. 6. Select **Create repository from template**. - ![Screenshot of configured template creation dialog](../1-hour/images/0-setup-configure.png) + ![Screenshot of configured template creation dialog](../shared-images/setup-configure-repo.png) In a few moments a new repository will be created from the template for this workshop! diff --git a/content/full-day/3-codespaces.md b/content/full-day/3-codespaces.md index 622db1e..711ba1b 100644 --- a/content/full-day/3-codespaces.md +++ b/content/full-day/3-codespaces.md @@ -92,7 +92,7 @@ Before rebuilding the container, let's add **GitHub.copilot** to the list of ext 6. Just below the list of ports, add the command to run the startup script to the container definition: ```json - "postStartCommand": "chmod +x /workspaces/pets-workshop/scripts/start-app.sh && /workspaces/pets-workshop/scripts/start-app.sh", + "postStartCommand": "chmod +x /workspaces/pets-workshop/app/scripts/start-app.sh && /workspaces/pets-workshop/app/scripts/start-app.sh", ``` You've now defined a custom container! diff --git a/content/full-day/README.md b/content/full-day/README.md index 5813ebd..985a428 100644 --- a/content/full-day/README.md +++ b/content/full-day/README.md @@ -15,7 +15,7 @@ This workshop is built to help guide you through some of the most common DevOps ## Prerequisites -The application for the workshop uses is built primarily with Python (Flask and SQLAlchemy) and Astro (using Tailwind). While experience with these frameworks and languages is helpful, you'll be using Copilot to help you understand the project and generate the code. As a result, as long as you are familiar with programming you'll be able to complete the exercises! +The application used for the workshop is built primarily with Python (Flask and SQLAlchemy) and Astro (using Tailwind). While experience with these frameworks and languages is helpful, you'll be using Copilot to help you understand the project and generate the code. As a result, as long as you are familiar with programming you'll be able to complete the exercises! ## Required resources diff --git a/content/github-actions/0-setup.md b/content/github-actions/0-setup.md new file mode 100644 index 0000000..3bccf7f --- /dev/null +++ b/content/github-actions/0-setup.md @@ -0,0 +1,51 @@ +# Workshop Setup + +| [← GitHub Actions: From CI to CD][walkthrough-previous] | [Next: Introduction & Your First Workflow →][walkthrough-next] | +|:-----------------------------------|------------------------------------------:| + +To complete this workshop you will need to create a repository with a copy of the contents of this repository. While this can be done by [forking a repository][fork-repo], the goal of a fork is to eventually merge code back into the original (or upstream) source. In our case we want a separate copy as we don't intend to merge our changes. This is accomplished through the use of a [template repository][template-repo]. Template repositories are a great way to provide starters for your organization, ensuring consistency across projects. + +The repository for this workshop is configured as a template, so we can use it to create your repository. + +## Create your repository + +Let's create the repository you'll use for your workshop. + +1. Navigate to [the repository root][repo-root] +2. Select **Use this template** > **Create a new repository** + + ![Screenshot of Use this template dropdown](../shared-images/setup-use-template.png) + +3. Under **Owner**, select the name of your GitHub handle, or the owner specified by your workshop leader. +4. Under **Repository**, set the name to **pets-workshop**, or the name specified by your workshop leader. +5. Ensure **Public** is selected for the visibility, or the value indicated by your workshop leader. +6. Select **Create repository from template**. + + ![Screenshot of configured template creation dialog](../shared-images/setup-configure-repo.png) + +In a few moments a new repository will be created from the template for this workshop! + +## Open your codespace + +Now let's open a codespace so you have a development environment ready to go. + +1. Navigate to the main page of your newly created repository. +2. Select **Code** > **Codespaces** > **Create codespace on main**. + + In a few moments a codespace will open in your browser with a full VS Code editor. This is where you'll create and edit files throughout the workshop. + +> [!TIP] +> If your codespace ever disconnects or you close the tab, you can reopen it by navigating to your repository and selecting **Code** > **Codespaces** and the name of your codespace. + +## Summary and next steps + +You've created the repository and opened a codespace — you're ready to start building! Next let's [create your first workflow][walkthrough-next]. + +| [← GitHub Actions: From CI to CD][walkthrough-previous] | [Next: Introduction & Your First Workflow →][walkthrough-next] | +|:-----------------------------------|------------------------------------------:| + +[fork-repo]: https://docs.github.com/get-started/quickstart/fork-a-repo +[template-repo]: https://docs.github.com/repositories/creating-and-managing-repositories/creating-a-template-repository +[repo-root]: / +[walkthrough-previous]: README.md +[walkthrough-next]: 1-introduction.md diff --git a/content/github-actions/1-introduction.md b/content/github-actions/1-introduction.md new file mode 100644 index 0000000..eb6925b --- /dev/null +++ b/content/github-actions/1-introduction.md @@ -0,0 +1,126 @@ +# Introduction & Your First Workflow + +| [← Workshop Setup][walkthrough-previous] | [Next: Securing the Development Pipeline →][walkthrough-next] | +|:-----------------------------------|------------------------------------------:| + +[GitHub Actions][github-actions] is an automation platform built into GitHub that lets you build, test, and deploy your code directly from your repository. While it's most commonly used for CI/CD, it can automate just about any task in your development workflow — from labeling issues to resizing images. + +Before diving in, here are the key terms you'll encounter: + +- **Workflow**: An automated process defined in a YAML file, stored in `.github/workflows/`. +- **Event**: A trigger that starts a workflow, such as a `push`, `pull_request`, or `workflow_dispatch`. +- **Job**: A set of steps that run on the same runner. Jobs run in parallel by default. +- **Step**: An individual task within a job — either a shell command (`run`) or a reusable action (`uses`). +- **Runner**: The virtual machine that executes your jobs (e.g., `ubuntu-latest`). +- **Action**: A reusable unit of code that performs a specific task, published on the [Actions Marketplace][actions-marketplace]. + +## Scenario + +The shelter has built its application — a Flask API and Astro frontend — and the team is ready to start automating their development workflow. Before diving into CI/CD, let's start with the basics: creating a simple workflow, triggering it manually, and understanding the logs. + +## Background + +A workflow file is written in YAML and lives in the `.github/workflows/` directory. Here are the core sections you'll work with: + +- `name`: A human-readable name for the workflow, displayed in the **Actions** tab. +- `on`: Defines the events that trigger the workflow (e.g., `push`, `pull_request`, `workflow_dispatch`). +- `jobs`: Contains one or more jobs, each with a unique identifier. + - `runs-on`: Specifies the runner environment (e.g., `ubuntu-latest`). + - `steps`: An ordered list of tasks the job performs. + - `uses`: References a reusable action (e.g., `actions/checkout@v4`). + - `run`: Executes a shell command. + +## Create your first workflow + +Let's start with the classic "Hello World" — a workflow you can trigger manually from the GitHub UI. + +1. In your codespace, create the folder `.github/workflows/` if it doesn't already exist. +2. Create a new file named `.github/workflows/hello.yml`. +3. Add the following content: + + ```yaml + name: Hello World + + on: + workflow_dispatch: + + jobs: + greet: + runs-on: ubuntu-latest + + steps: + - name: Say hello + run: echo "Hello, GitHub Actions!" + + - name: Show environment info + run: | + echo "Runner OS: $RUNNER_OS" + echo "Repository: $GITHUB_REPOSITORY" + echo "Triggered by: $GITHUB_ACTOR" + ``` + +4. Save the file. + +> [!NOTE] +> The `workflow_dispatch` event lets you trigger the workflow manually from the **Actions** tab. This is useful for testing workflows without needing to push code changes every time. + +## Push and run + +Now let's push the workflow and trigger it by hand. + +1. Open the terminal in your codespace by pressing Ctl+`. +2. Stage and commit your changes: + + ```bash + git add .github/workflows/hello.yml + git commit -m "Add hello world workflow" + ``` + +3. Push to your repository: + + ```bash + git push + ``` + +4. Navigate to your repository on GitHub and select the **Actions** tab. +5. In the left sidebar, select the **Hello World** workflow. +6. Select the **Run workflow** button, keep the default branch, and select **Run workflow** again to confirm. + +## Explore the logs + +Once the run completes, let's explore what happened. + +1. Select the workflow run that just completed. +2. Select the **greet** job to expand it. +3. Explore the logs for each step: + - **Say hello** — you'll see the `echo` output. + - **Show environment info** — notice the environment variables that GitHub Actions provides automatically (`RUNNER_OS`, `GITHUB_REPOSITORY`, `GITHUB_ACTOR`). +4. Also look at the **Set up job** and **Complete job** steps that Actions adds automatically — these show the runner setup and cleanup. + +> [!TIP] +> You can search within the logs using the search box at the top of the log viewer, and expand or collapse individual steps. This becomes very useful as workflows grow more complex. + +## Summary and next steps + +Congratulations! You've created and run your first GitHub Actions workflow. You've learned how to define a workflow in YAML, trigger it manually with `workflow_dispatch`, and navigate the logs in the Actions UI. + +Next, we'll put this knowledge to work by [securing the development pipeline][walkthrough-next] with code scanning, Dependabot, and secret scanning. + +## Resources + +- [GitHub Actions documentation][github-actions-docs] +- [Workflow syntax for GitHub Actions][workflow-syntax] +- [Events that trigger workflows][workflow-triggers] +- [Understanding GitHub Actions][understanding-actions] + +| [← Workshop Setup][walkthrough-previous] | [Next: Securing the Development Pipeline →][walkthrough-next] | +|:-----------------------------------|------------------------------------------:| + +[actions-marketplace]: https://github.com/marketplace?type=actions +[github-actions]: https://github.com/features/actions +[github-actions-docs]: https://docs.github.com/actions +[understanding-actions]: https://docs.github.com/actions/about-github-actions/understanding-github-actions +[workflow-syntax]: https://docs.github.com/actions/writing-workflows/workflow-syntax-for-github-actions +[workflow-triggers]: https://docs.github.com/actions/writing-workflows/choosing-when-your-workflow-runs/events-that-trigger-workflows +[walkthrough-previous]: 0-setup.md +[walkthrough-next]: 2-code-scanning.md diff --git a/content/github-actions/2-code-scanning.md b/content/github-actions/2-code-scanning.md new file mode 100644 index 0000000..55de46b --- /dev/null +++ b/content/github-actions/2-code-scanning.md @@ -0,0 +1,121 @@ +# Securing the Development Pipeline + +| [← Introduction & Your First Workflow][walkthrough-previous] | [Next: Running Tests →][walkthrough-next] | +|:-----------------------------------|------------------------------------------:| + +In the previous exercise you created your first GitHub Actions workflow — a manually triggered "Hello World." Before building out CI/CD, let's explore security. Ensuring code security is imperative in today's environment, and GitHub provides tools that automate this for you — many of which are powered by GitHub Actions under the hood. + +When we think about how we create code today, there are three main areas to secure: + +- The **code we write** — which may contain vulnerabilities +- The **libraries we use** — which may have known security issues +- The **credentials we manage** — which may accidentally leak into source code + +[GitHub Advanced Security][advanced-security] provides a suite of tools covering each of these areas. Let's explore and enable them on our repository. + +## Scenario + +Security is important in every application. By detecting potential vulnerabilities early, teams can make updates before incidents occur. The shelter wants to ensure insecure code and libraries are detected as early as possible. You'll enable Dependabot, secret scanning, and code scanning to meet these needs. + +## Background + +[GitHub Advanced Security][advanced-security-docs] is a set of security features available directly in GitHub. The three pillars are: + +- **Code scanning** analyzes your source code for security vulnerabilities using [CodeQL][about-code-scanning], GitHub's semantic code analysis engine. When enabled, it runs as a GitHub Actions workflow — the same automation platform you used in the previous exercise. Every push and pull request triggers the analysis automatically. +- **Dependabot** monitors your project's dependencies for known vulnerabilities and can automatically create [pull requests][about-prs] to update insecure packages to safe versions. +- **Secret scanning** detects tokens, keys, and other credentials that have been committed to your repository, and can block pushes that contain [supported secrets][supported-secrets]. + +> [!NOTE] +> Code scanning is built on [GitHub Actions][github-actions]. When you enable CodeQL's default setup, GitHub creates and manages a workflow for you behind the scenes. You'll see this connection more clearly when you navigate to the **Actions** tab after enabling it. This is a great example of how Actions powers automation across the GitHub platform — not just CI/CD pipelines you write yourself. + +## Configure Dependabot + +Most projects depend on open source and external libraries. While modern development would be impossible without them, we always need to ensure the dependencies we use are secure. [Dependabot][dependabot-quickstart] monitors your repository's dependencies and raises alerts — or even creates pull requests — to update insecure packages. + +Public repositories on GitHub automatically have Dependabot alerts enabled. Let's configure Dependabot to also create PRs that update insecure library versions automatically. + +1. Navigate to your repository on GitHub. +2. Select **Settings** > **Advanced security** (under **Security** in the sidebar). +3. Locate the **Dependabot** section. + + ![Screenshot of the Dependabot section](../shared-images/dependabot-settings.png) + +4. Select **Enable** next to **Dependabot security updates** to configure Dependabot to create PRs to resolve alerts. + +You've now enabled Dependabot alerts and security updates! When an insecure library is detected, you'll receive an alert, and Dependabot will create a pull request to update to a secure version. + +> [!TIP] +> Dependabot doesn't just alert you — it can automatically create pull requests that bump library versions to secure ones. When you pair this with a CI pipeline that runs tests on every PR (which you'll build in the [next exercise][walkthrough-next]), those Dependabot PRs are automatically tested before merging. This creates a powerful feedback loop: vulnerabilities are detected, fixes are proposed, and your tests verify the update won't break anything — all without manual intervention. + +> [!IMPORTANT] +> After enabling Dependabot security updates you may notice new pull requests created for potentially outdated packages. For this workshop you can ignore these pull requests. + +## Enable secret scanning + +Many developers have accidentally checked in code containing tokens or credentials. Regardless of the reason, even seemingly innocuous tokens can create a security issue. [Secret scanning][about-secret-scanning] detects tokens in your source code and raises alerts. With push protection enabled, pushes containing supported secrets are blocked before they reach your repository. + +1. On the same **Advanced security** settings page, locate the **Secret Protection** section. +2. Next to **GitHub will always send alerts to partners for detected secrets in public repositories**, select **Enable**. +3. Next to **Push protection**, select **Enable** to block pushes containing a [supported secret][supported-secrets]. + + ![Screenshot of fully configured secret scanning](../shared-images/setup-secret-protection.png) + +You've now enabled secret scanning and push protection — helping prevent credentials from reaching your repository. + +## Enable code scanning + +There is a direct relationship between the amount of code an organization writes and its potential attack surface. [Code scanning][about-code-scanning] analyzes your source code for known vulnerabilities. When an issue is detected on a pull request, a comment is added highlighting the affected line with contextual information for the developer. + +Let's enable code scanning with the default CodeQL setup. This runs automatically whenever code is pushed to `main` or a pull request targets `main`, and on a regular schedule to catch newly discovered vulnerabilities. + +1. On the same **Advanced security** settings page, locate the **Code scanning** section. +2. Next to **CodeQL analysis**, select **Set up** > **Default**. + + ![Screenshot of code scanning dropdown menu](../shared-images/code-scanning-setup.png) + +3. On the **CodeQL default configuration** dialog, select **Enable CodeQL**. + + ![Screenshot of code scanning dialog](../shared-images/code-scanning-dialog.png) + +> [!IMPORTANT] +> Your list of languages may be different from what's shown in the screenshot. + +A background process starts and configures a CodeQL analysis workflow for your repository. + +> [!TIP] +> After enabling CodeQL, navigate to the **Actions** tab in your repository. You'll see a new **CodeQL** workflow listed alongside the **Hello World** workflow you created earlier. This is the Actions workflow that GitHub created automatically to run code scanning — proof that Actions isn't just for CI/CD, but powers many of GitHub's built-in features. + +## Summary and next steps + +You've enabled GitHub Advanced Security for your repository: + +- **Dependabot** monitors dependencies for known vulnerabilities and creates PRs to update them. +- **Secret scanning** detects leaked credentials and blocks pushes containing supported secrets. +- **Code scanning** analyzes your source code using CodeQL, running as a GitHub Actions workflow on every push and PR. + +These tools run automatically in the background, catching security issues before they reach production. Now that you've seen how GitHub uses Actions internally for security automation, it's time to build your own CI workflow. Next, we'll [automate testing][walkthrough-next] for the shelter's application. + +## Resources + +- [About GitHub Advanced Security][advanced-security-docs] +- [About code scanning with CodeQL][about-code-scanning] +- [Dependabot quickstart guide][dependabot-quickstart] +- [About secret scanning][about-secret-scanning] +- [GitHub Skills: Secure your repository's supply chain][skills-supply-chain] +- [GitHub Skills: Secure code game][skills-secure-code] + +| [← Introduction & Your First Workflow][walkthrough-previous] | [Next: Running Tests →][walkthrough-next] | +|:-----------------------------------|------------------------------------------:| + +[about-code-scanning]: https://docs.github.com/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning +[about-prs]: https://docs.github.com/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests +[about-secret-scanning]: https://docs.github.com/code-security/secret-scanning/introduction/about-secret-scanning +[advanced-security]: https://github.com/features/security +[advanced-security-docs]: https://docs.github.com/get-started/learning-about-github/about-github-advanced-security +[dependabot-quickstart]: https://docs.github.com/code-security/getting-started/dependabot-quickstart-guide +[github-actions]: https://github.com/features/actions +[supported-secrets]: https://docs.github.com/code-security/secret-scanning/introduction/supported-secret-scanning-patterns +[skills-supply-chain]: https://github.com/skills/secure-repository-supply-chain +[skills-secure-code]: https://github.com/skills/secure-code-game +[walkthrough-previous]: 1-introduction.md +[walkthrough-next]: 3-running-tests.md diff --git a/content/github-actions/3-running-tests.md b/content/github-actions/3-running-tests.md new file mode 100644 index 0000000..2fc3060 --- /dev/null +++ b/content/github-actions/3-running-tests.md @@ -0,0 +1,202 @@ +# Running Tests + +| [← Securing the Development Pipeline][walkthrough-previous] | [Next: Caching →][walkthrough-next] | +|:-----------------------------------|------------------------------------------:| + +Now that you know the basics of GitHub Actions and have seen how GitHub uses it for code scanning, it's time to build your own workflow. In this exercise you'll create a **continuous integration (CI)** pipeline that automatically runs the shelter's tests. + +## Scenario + +The shelter's app is growing, and the team wants to make sure new changes don't break existing functionality. The application has two test suites: **unit tests** for the Flask API, and **end-to-end (e2e) tests** that use [Playwright][playwright] to test the full stack in a browser. The goal is to run both automatically on every push and pull request (PR) to `main`. + +## Background + +As you saw in the [introduction][introduction], the `on` declaration specifies when a workflow will run. For true automation, you'll use `on` to indicate the [triggers][workflow-triggers] for the workflow to run automatically. In our scenario, this will be whenever a PR is made to the `main` branch, or when code is pushed or merged into it. + +Most workflows have a relatively common set of tasks. You typically need to install libraries, perform builds, and run various commands. Rather than having to script everything out by hand, there's a collection of available actions in a marketplace - the aptly named [Actions Marketplace][actions-marketplace]. There you can find pluggable, reusable actions, ready to be added to any workflow. + +## Using the Actions Marketplace + +The [Actions Marketplace][actions-marketplace] contains tens of thousands of community created actions. These include those from OSS contributors of all sizes, and vendors to allow for quick integration of their products. + +For most actions, you can just add the name of the action, typically `vendor/action-name`, the necessary configuration, and it's now part of your workflow! + +### Security and the Actions Marketplace + +The marketplace offers various protections to ensure you're using the right action at the right time. For starters, creators can be [verified][marketplace-badges] by GitHub, giving you the confidence the organization who says they built an action is the one who actually built it. + +In addition, you can [pin to a specific version, SHA or branch][action-versioning]. This both increases security, knowing the code you expect to run is what runs, and consistency as it'll always be the same code over and over. + +## Create the CI workflow + +Our application has a Flask backend with unit tests, and an Astro frontend that's validated with end-to-end tests. Let's begin building a workflow to run these tests. We'll start with the unit tests, then add the end-to-end tests a bit later in this lesson. + +To run the unit tests, you'll need to do the following in the workflow: + +- checkout the code. +- install Python. +- install the necessary Python libraries. +- run the tests. + +Let's build that out! + +1. In your codespace, create a new file named `.github/workflows/run-tests.yml`. +2. Add the following content: + + ```yaml + name: Run Tests + + on: + push: + branches: [main] + pull_request: + branches: [main] + + permissions: + contents: read + + jobs: + test-api: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.14' + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r app/server/requirements.txt + + - name: Run tests + working-directory: ./app/server + run: | + python -m unittest test_app -v + ``` + +3. Save the file. + +Notice how this workflow differs from the hello world: +- It triggers on `push` and `pull_request` events instead of `workflow_dispatch` — so it runs automatically when a PR or merge is made to the specified branch(es). +- It declares explicit **`permissions`** — we'll explain this next. +- It uses `actions/checkout@v4` to clone your repository code onto the runner, using the `checkout` action from the marketplace. +- It uses `actions/setup-python@v5` to install a specific Python version, yet another action from the marketplace. +- Next, it installs the necessary libraries using `pip`, just like you normally would. +- Finally, it's time to run the tests - again, just like before! + +## Understanding `GITHUB_TOKEN` and permissions + +Every workflow run automatically receives a token called **`GITHUB_TOKEN`**. This is a short-lived credential that actions use behind the scenes to interact with your repository — for example, `actions/checkout` uses it to clone your code. The token is created when the workflow starts and revoked when the run ends. + +The **`permissions`** block controls what this token can do. For our CI workflow, we only need `contents: read` — enough to clone the repository. This follows the [principle of least privilege][principle-least-privilege]: grant only the permissions your workflow actually needs, nothing more. + +> [!IMPORTANT] +> Always set explicit `permissions` in your workflows. Without it, the token inherits the repository-level defaults (**Settings** > **Actions** > **General** > **Workflow permissions**), which may be more permissive than your workflow requires. Being explicit ensures your workflow only has the access it needs — even if someone changes the repository defaults later. + +## Push and explore + +A bit later you'll use a more standard branching approach for changes. But for our purposes right now, let's push straight to `main`. What you'll notice is the workflow will automatically run, since the workflow will now exist on `main`! + +1. Open the terminal in your codespace by pressing Ctl+`, then stage, commit, and push: + + ```bash + git add .github/workflows/run-tests.yml + git commit -m "Add CI workflow with unit tests" + git push + ``` + +2. Navigate to the **Actions** tab — the **Run Tests** workflow should already be running (triggered by the push). +3. Select the **test-api** job and explore the logs. Notice the flow of checkout, Python setup, and dependency installation. + +## Add e2e tests in parallel + +The unit tests cover the API, but the shelter also has Playwright e2e tests that verify the full application works end-to-end in a real browser. Let's add a second job that runs alongside the unit tests. + +1. Return to your codespace and open `.github/workflows/run-tests.yml`. Add the following job to the bottom of the file: + + ```yaml + test-e2e: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.14' + + - name: Install Python dependencies + run: | + python -m pip install --upgrade pip + pip install -r app/server/requirements.txt + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + + - name: Install Node dependencies + working-directory: ./app/client + run: npm ci + + - name: Install Playwright browsers + working-directory: ./app/client + run: npx playwright install --with-deps chromium + + - name: Run e2e tests + working-directory: ./app/client + run: npx playwright test + ``` + +2. Save the file. + +> [!NOTE] +> Because we haven't added a `needs` key, `test-api` and `test-e2e` will run **in parallel**. Each job gets its own runner, so they don't interfere with each other and the total CI time is closer to the duration of the slower job rather than the sum of both. The `test-e2e` job needs both Python and Node.js because the Playwright tests launch the full stack — the Flask API and the Astro frontend — before running browser tests against them. + +1. In the terminal, stage, commit, and push: + + ```bash + git add .github/workflows/run-tests.yml + git commit -m "Add e2e tests running in parallel" + git push + ``` + +2. Navigate to the **Actions** tab and select the new workflow run. You should see both **test-api** and **test-e2e** running side by side. + +## Summary and next steps + +You've built a CI pipeline with two jobs running in parallel — unit tests for the API and end-to-end tests for the full application. This is the foundation of continuous integration — catching problems early so they don't reach production. + +Now, let's work to [improve the performance of our CI job][walkthrough-next] by reusing steps and caching dependencies. + +## Resources + +- [GitHub Actions documentation][github-actions-docs] +- [Workflow syntax for GitHub Actions][workflow-syntax] +- [Events that trigger workflows][workflow-triggers] +- [Using jobs in a workflow][jobs-docs] +- [Automatic token authentication][automatic-token-auth] +- [Assigning permissions to jobs][permissions-docs] + +| [← Securing the Development Pipeline][walkthrough-previous] | [Next: Caching →][walkthrough-next] | +|:-----------------------------------|------------------------------------------:| + +[action-versioning]: https://docs.github.com/actions/how-tos/write-workflows/choose-what-workflows-do/find-and-customize-actions#using-release-management-for-your-custom-actions +[actions-marketplace]: https://github.com/marketplace?type=actions +[automatic-token-auth]: https://docs.github.com/actions/security-for-github-actions/security-guides/automatic-token-authentication +[github-actions-docs]: https://docs.github.com/actions +[introduction]: 1-introduction.md +[jobs-docs]: https://docs.github.com/actions/writing-workflows/choosing-what-your-workflow-does/using-jobs-in-a-workflow +[marketplace-badges]: https://docs.github.com/actions/how-tos/create-and-publish-actions/publish-in-github-marketplace#about-badges-in-github-marketplace +[permissions-docs]: https://docs.github.com/actions/writing-workflows/choosing-what-your-workflow-does/assigning-permissions-to-jobs +[playwright]: https://playwright.dev/ +[principle-least-privilege]: https://docs.github.com/actions/security-for-github-actions/security-guides/automatic-token-authentication#permissions-for-the-github_token +[workflow-syntax]: https://docs.github.com/actions/writing-workflows/workflow-syntax-for-github-actions +[workflow-triggers]: https://docs.github.com/actions/writing-workflows/choosing-when-your-workflow-runs/events-that-trigger-workflows +[walkthrough-previous]: 2-code-scanning.md +[walkthrough-next]: 4-caching.md diff --git a/content/github-actions/4-caching.md b/content/github-actions/4-caching.md new file mode 100644 index 0000000..e75a97e --- /dev/null +++ b/content/github-actions/4-caching.md @@ -0,0 +1,117 @@ +# Caching + +| [← Running Tests][walkthrough-previous] | [Next: Matrix Strategies & Parallel Testing →][walkthrough-next] | +|:-----------------------------------|------------------------------------------:| + +The [GitHub Actions Marketplace][actions-marketplace] is a collection of pre-built actions created by GitHub and the community. Actions can set up tools, run tests, deploy code, send notifications, and much more. Rather than writing everything from scratch, you can leverage the work of thousands of developers. + +In this exercise you'll also learn about **caching** — a technique to speed up your workflows by reusing previously downloaded dependencies instead of fetching them from the internet on every run. + +## Scenario + +The CI workflow from the previous exercise works, but both jobs reinstall every dependency from scratch on every run. That means downloading Python packages, Node modules, and Playwright browsers each time — even when they haven't changed. You want to ensure workflows run as quickly as possible, to move from idea to deployed as quickly as possible. + +## Background + +[Caching][caching-docs] stores downloaded dependencies between workflow runs so they don't need to be fetched from the internet every time. Each cache is identified by a key — typically derived from the package manager and lock file. When a workflow runs, it checks for an existing cache matching that key. On a hit, the cached files are restored and the install step completes in seconds. On a miss, the dependencies are downloaded normally and then saved for next time. + +Many popular setup actions — like `actions/setup-python` and `actions/setup-node` — have caching built right in, so you can enable it with a single line. GitHub provides 10 GB of cache storage per repository, with least-recently-used entries evicted when the limit is reached. + +## Add caching to the unit test job + +Many popular setup actions have caching built right in. Let's start with the `test-api` job, which uses Python. Libraries are installed for Python using `pip`, which will become the key name. This instructs the workflow to cache any libraries installed using `pip`. + +1. In your codespace, open `.github/workflows/run-tests.yml`. +2. Update the **Set up Python** step in the `test-api` job to enable pip caching: + + ```yaml + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.14' + cache: 'pip' + ``` + +> [!NOTE] +> The `cache: 'pip'` option tells `setup-python` to cache downloaded pip packages. On the first run it saves the cache; on subsequent runs it restores it, skipping most download time. + +3. Save the file. + +## Add caching to the e2e test job + +The e2e job has two dependencies to cache — Python packages and the Node modules. We can follow the same path here! To make sure our packages are updated when versions change, we're going to set the `package-lock.json` file as a dependency. When the workflow runs, it will look to see if that file has changed; if it has it'll perform a reinstall. If not, it'll use the cache! + +1. Update the **Set up Python** step in the `test-e2e` job the same way: + + ```yaml + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.14' + cache: 'pip' + ``` + +2. Update the **Set up Node.js** step in the `test-e2e` job to enable npm caching: + + ```yaml + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + cache: 'npm' + cache-dependency-path: 'app/client/package-lock.json' + ``` + +3. Save the file. + +> [!NOTE] +> You might wonder about caching Playwright browsers too. Playwright's [official CI guidance][playwright-ci] recommends running `npx playwright install --with-deps` on every run rather than caching browsers, since browser binaries are tightly coupled to the Playwright version and caching them can lead to subtle version mismatches. + +## Compare run times + +Now let's push the changes and see the impact of caching. + +1. In the terminal (Ctl+` to toggle), stage, commit, and push your changes: + + ```bash + git add .github/workflows/run-tests.yml + git commit -m "Add caching to CI workflow" + git push + ``` + +2. Navigate to the **Actions** tab on GitHub and observe the workflow run. +3. Once it completes, check the logs for the setup steps. You should see output indicating a **cache miss** — this is expected on the first run since there's nothing cached yet. +4. To see caching in action, trigger a second run. You can push a small change (such as adding a comment to `run-tests.yml`) or use the GitHub UI: + - Update the `on` section to add `workflow_dispatch:` so you can trigger runs manually + - Push that change, then use the **Run workflow** button on the **Actions** tab + +5. On the second run, check the setup step logs again. You should see a **cache hit**, and the overall run time should be noticeably shorter. + +> [!TIP] +> You can view cache usage for your repository by navigating to **Actions** > **Caches** in the left sidebar. This shows all active caches, their sizes, and when they were last used. + +## Summary and next steps + +The Actions Marketplace provides thousands of pre-built actions so you don't have to reinvent the wheel. Many setup actions like `setup-python` and `setup-node` have caching built in, making it easy to dramatically reduce workflow run times by reusing previously downloaded dependencies. + +Next, we'll explore [matrix strategies][walkthrough-next] to test across multiple configurations simultaneously. + +## Resources + +- [GitHub Actions Marketplace][actions-marketplace] +- [Caching dependencies to speed up workflows][caching-docs] +- [Playwright CI documentation][playwright-ci] +- [actions/setup-python][setup-python-action] +- [actions/setup-node][setup-node] + +| [← Running Tests][walkthrough-previous] | [Next: Matrix Strategies & Parallel Testing →][walkthrough-next] | +|:-----------------------------------|------------------------------------------:| + +[actions-marketplace]: https://github.com/marketplace?type=actions +[caching-docs]: https://docs.github.com/actions/writing-workflows/choosing-what-your-workflow-does/caching-dependencies-to-speed-up-workflows +[marketplace]: https://github.com/marketplace +[playwright-ci]: https://playwright.dev/docs/ci +[setup-node]: https://github.com/actions/setup-node +[setup-python-action]: https://github.com/actions/setup-python +[walkthrough-previous]: 3-running-tests.md +[walkthrough-next]: 5-matrix-strategies.md diff --git a/content/github-actions/5-matrix-strategies.md b/content/github-actions/5-matrix-strategies.md new file mode 100644 index 0000000..de3e1d5 --- /dev/null +++ b/content/github-actions/5-matrix-strategies.md @@ -0,0 +1,131 @@ +# Matrix Strategies & Parallel Testing + +| [← Caching][walkthrough-previous] | [Next: Deploying to Azure with azd →][walkthrough-next] | +|:-----------------------------------|------------------------------------------:| + +Matrix strategies let you run a job across multiple configurations in parallel — different language versions, operating systems, or test targets. This is powerful for ensuring compatibility and catching environment-specific bugs early in the development cycle. + +## Scenario + +While the goal is to deploy the project to Azure, in the future you may look to host the app on other platforms. As part of the testing, you want to ensure the Python code will run correctly on different versions of the language runtime. This will avoid future surprises. + +## Background + +A [matrix][matrix-docs] allows you to create an array for a workflow to iterate through. This can be various configurations, operating systems, or anything else where you need to have a part of a workflow run multiple times. You define the values for the matrix in an array, then utilize the `matrix` keyword to retrieve the current value. GitHub Actions will handle the looping automatically for you! + +## Add a matrix to the test job + +Let's update the CI workflow to test the API across multiple Python versions. + +1. Open `.github/workflows/run-tests.yml` in your codespace. +2. Locate the `test-api` job. +3. Add a `strategy` block with a `matrix` definition, and update the `python-version` input to reference the matrix value. +4. Replace the existing `test-api` job with the following: + + ```yaml + test-api: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ['3.12', '3.13', '3.14'] + + steps: + - uses: actions/checkout@v4 + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + cache: 'pip' + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r app/server/requirements.txt + + - name: Run tests + working-directory: ./app/server + run: | + python -m unittest test_app -v + ``` + +> [!IMPORTANT] +> Make sure to quote version numbers like `'3.12'` in the matrix array. Without quotes, YAML may interpret them as floating-point numbers — for example, `3.10` becomes `3.1`, which would cause the setup step to fail. + +5. In the terminal (Ctl+` to toggle), stage, commit, and push your changes: + + ```bash + git add .github/workflows/run-tests.yml + git commit -m "Add Python version matrix to test-api job" + git push + ``` + +6. Navigate to the **Actions** tab on GitHub. You should see three parallel jobs running — one for each Python version. + +## Understanding matrix behavior + +By default, GitHub Actions uses **fail-fast** mode: if any matrix job fails, all remaining jobs are cancelled. This is efficient but can hide failures in other configurations. + +- **`fail-fast: false`** — continues running all matrix jobs even if one fails. This is valuable when you want to see the full picture of which configurations pass and which don't. +- **`max-parallel`** — limits the number of jobs running concurrently. Useful when you have resource constraints or are hitting rate limits. + +Update the strategy block to disable fail-fast: + +```yaml +strategy: + fail-fast: false + matrix: + python-version: ['3.12', '3.13', '3.14'] +``` + +> [!TIP] +> Setting `fail-fast: false` is particularly useful during initial setup or when debugging, as it provides a complete view of compatibility across all configurations. + +## Using include and exclude + +Matrix strategies support `include` and `exclude` to fine-tune which combinations run. + +- **`include`** adds extra combinations or additional variables to existing combinations. +- **`exclude`** removes specific combinations from the matrix. + +Here's an example that adds an extra combination with an additional environment variable, and excludes a specific one: + +```yaml +strategy: + fail-fast: false + matrix: + python-version: ['3.12', '3.13', '3.14'] + os: [ubuntu-latest, ubuntu-22.04] + exclude: + - python-version: '3.14' + os: ubuntu-22.04 + include: + - python-version: '3.14' + os: ubuntu-latest + experimental: true +``` + +In this example: + +- The `exclude` block skips Python 3.14 on `ubuntu-22.04`. +- The `include` block adds an `experimental` flag to the Python 3.14 / `ubuntu-latest` combination, which you could reference with `${{ matrix.experimental }}` in your steps. + +> [!NOTE] +> You don't need to add this to your workflow right now. This is provided as a reference for more advanced matrix configurations. + +## Summary and next steps + +Matrix strategies let you test across multiple configurations — language versions, operating systems, and more — with minimal YAML duplication. Combined with `fail-fast`, `max-parallel`, `include`, and `exclude`, you have fine-grained control over parallel testing. Next we'll [deploy to Azure using azd][walkthrough-next]. + +## Resources + +- [Using a matrix for your jobs][matrix-docs] +- [Workflow syntax for `jobs..strategy`][strategy-syntax] + +| [← Caching][walkthrough-previous] | [Next: Deploying to Azure with azd →][walkthrough-next] | +|:-----------------------------------|------------------------------------------:| + +[matrix-docs]: https://docs.github.com/actions/using-jobs/using-a-matrix-for-your-jobs +[strategy-syntax]: https://docs.github.com/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstrategy +[walkthrough-previous]: 4-caching.md +[walkthrough-next]: 6-deploy-azure.md diff --git a/content/github-actions/6-deploy-azure.md b/content/github-actions/6-deploy-azure.md new file mode 100644 index 0000000..b557857 --- /dev/null +++ b/content/github-actions/6-deploy-azure.md @@ -0,0 +1,249 @@ +# Deploying to Azure with azd + +| [← Matrix Strategies & Parallel Testing][walkthrough-previous] | [Next: Creating custom actions →][walkthrough-next] | +|:-----------------------------------|------------------------------------------:| + +With CI in place, it's time for CD — continuous deployment or continuous delivery. We'll use the [Azure Developer CLI (azd)][azd-docs], Microsoft's recommended tool for deploying to Azure. **azd** handles the heavy lifting: generating infrastructure-as-code (Bicep), configuring passwordless authentication (OIDC), and creating the GitHub Actions workflow. + +## Scenario + +With the prototype built, the shelter is ready to share their application with the world! They want to deploy automatically whenever code is pushed to `main` — but only after CI passes. + +## Background + +### Secrets and variables + +Speaking of secrets and variables... In a prior exercise you utilized `GITHUB_TOKEN`. `GITHUB_TOKEN` is a special secret automatically available to every workflow, and provides access to the current repository. You can add your own secrets and variables to your repository for use in workflows. + +Secrets are exactly that - secret. These are passwords and other values you don't want the public to be able to see. You can add secrets via the CLI, APIs, and your repository's page on github.com. Secrets are write-only, and are only available to be read by a running workflow. In fact, there's even a filter so if the workflow attempts to write or log a secret it'll automatically be hidden. You can confidently add secrets to a public repository, and the only visible aspect will be its name and not the value. + +Variables, on the other hand, are designed to be public values. They're settings like URLs or names, or other values that aren't sensitive. Variables can be both read and written. Use variables whenever you need the ability to configure a value outside a workflow. + +### Protecting production + +There are several strategies for ensuring only validated code reaches production. In a later exercise we'll configure **branch rulesets** to require CI checks and pull request reviews before code can be merged to `main`. Since our deploy workflow only triggers on pushes to `main`, this creates a natural gate: code must pass CI and be reviewed before it can be deployed. + +> [!TIP] +> GitHub also supports **environments** with deployment protection rules (like manual approval gates). Environments are a powerful option when you need separate staging and production deployments — but for this workshop, branch rulesets give us the same safety with less setup. See the [environments documentation][environments-docs] to explore that approach on your own. + +## Install and initialize azd + +Let's set up the Azure Developer CLI and scaffold the infrastructure for our project. + +1. Open the terminal in your codespace (or press Ctl+` to toggle it). +2. Install azd by running: + + ```bash + curl -fsSL https://aka.ms/install-azd.sh | bash + ``` + +3. Log in to Azure: + + ```bash + azd auth login + ``` + + Follow the device code flow — open the URL shown, enter the code, and sign in with your Azure account. + +4. Initialize the project by running: + + ```bash + azd init --from-code + ``` + +5. `azd` will scan your project and detect the client and server services. When prompted, select **Confirm and continue initializing my app** to accept the detected services and generate the project configuration. +6. By default, `azd` generates infrastructure in memory at deploy time. To customize the infrastructure, persist it to disk by running: + + ```bash + azd infra gen + ``` + +7. Explore the generated `infra/` directory. You'll see Bicep files (`.bicep`) that define the Azure resources for your application: + + ```bash + ls infra/ + ``` + +> [!TIP] +> Bicep is Azure's domain-specific language for defining infrastructure as code. If you have GitHub Copilot, try asking it to explain the generated Bicep files! + +The generated `infra/` directory contains several Bicep files that work together: + +- **`main.bicep`** — The entry point. It defines the deployment's parameters (like location and environment name) and orchestrates the other files. +- **`main.parameters.json`** — Default parameter values passed to `main.bicep` at deployment time. +- **`resources.bicep`** — The core of the infrastructure. It defines the Azure Container Apps environment and the individual container apps for the client and server, including their Docker images, environment variables, ingress settings, and scaling rules. +- **`modules/`** — Helper modules referenced by the main files (e.g., for fetching container image metadata). +- **`abbreviations.json`** — A lookup table `azd` uses to generate consistent, short resource names following Azure naming conventions. + +## Configure the infrastructure + +The generated Bicep files define the Azure Container Apps that will host the client and server. We need to add an environment variable so the client knows where to find the API server. + +1. Open `infra/resources.bicep` in your codespace. +2. Find the section (around line 109) that reads: + + ```bicep + { + name: 'PORT' + value: '4321' + } + ``` + +3. Create a new line below the closing `}` and add the following: + + ```bicep + { + name: 'API_SERVER_URL' + value: 'https://${server.outputs.fqdn}' + } + ``` + +> [!NOTE] +> While the syntax resembles JSON, **it's not JSON**. You'll need to resist the natural urge to add commas between the objects! + +## Create the CD workflow + +By default, `azd pipeline config` generates a simple workflow that deploys on every push to `main`. That works for getting started, but we want a workflow that only deploys **after CI passes**. If you create the workflow file *first*, `azd` will detect it and configure credentials around your custom workflow instead of generating the default. + +Let's create a workflow that: +- Only deploys **after CI passes** — using [`workflow_run`][workflow-run-docs] +- Can also be **triggered manually** via `workflow_dispatch` +- Prevents **conflicting deployments** with concurrency controls + +1. Create a new file at `.github/workflows/azure-dev.yml`. +2. Add the following content: + + ```yaml + name: Deploy App + + on: + workflow_dispatch: + workflow_run: + workflows: ["Run Tests"] + branches: [main] + types: [completed] + + permissions: + id-token: write + contents: read + + jobs: + deploy: + runs-on: ubuntu-latest + if: github.event_name == 'workflow_dispatch' || github.event.workflow_run.conclusion == 'success' + concurrency: + group: deploy-production + cancel-in-progress: false + + steps: + - uses: actions/checkout@v4 + + - name: Install azd + uses: Azure/setup-azd@v2 + + - name: Log in with Azure (Federated Credentials) + run: | + azd auth login \ + --client-id "${{ vars.AZURE_CLIENT_ID }}" \ + --federated-credential-provider "github" \ + --tenant-id "${{ vars.AZURE_TENANT_ID }}" + + - name: Provision and deploy + run: azd up --no-prompt + env: + AZURE_SUBSCRIPTION_ID: ${{ vars.AZURE_SUBSCRIPTION_ID }} + AZURE_ENV_NAME: ${{ vars.AZURE_ENV_NAME }} + AZURE_LOCATION: ${{ vars.AZURE_LOCATION }} + ``` + +3. Save the file. + +Let's walk through the key parts: + +- **`permissions: id-token: write`** — In the [Running Tests][running-tests] module you set `contents: read`. Here, `id-token: write` is added because the workflow needs to request OIDC tokens from Azure. This is how passwordless authentication works — no stored credentials, just short-lived tokens. +- **`vars.*`** — Variables like `${{ vars.AZURE_CLIENT_ID }}` reference **repository variables** that `azd pipeline config` will create for you in the next step. +- **`workflow_run`** triggers this workflow whenever the **Run Tests** workflow completes on `main`. The `if` condition ensures it only proceeds when tests **succeeded** — or when triggered manually via `workflow_dispatch`. +- **`concurrency`** prevents conflicting deployments. Note `cancel-in-progress: false` to avoid accidentally cancelling an active deployment. +- **`azd up`** provisions infrastructure and deploys your application in one command. + +## Set up Azure authentication + +Now let's let `azd` configure the pipeline credentials. Because the workflow file already exists, `azd` will configure OIDC and variables around it rather than generating a new one. + +1. Configure the deployment pipeline: + + ```bash + azd pipeline config + ``` + +2. Follow the prompts — here's what to expect: + + | Prompt | What to select | + |--------|---------------| + | **Select a provider** | Choose **GitHub** | + | **Enter a unique environment name** | Enter a short name (e.g., `-pets-workshop`) — this names your Azure resource group | + | **Select an Azure subscription** | Choose the subscription you want to deploy to | + | **Select an Azure location** | Pick a region close to you (e.g., `eastus2`) | + | **Select how to authenticate the pipeline to Azure** | Choose **Federated Service Principal (SP + OIDC)** | + + After you answer these, `azd` will: + - Create OIDC credentials in Azure for passwordless authentication + - Store the necessary secrets and variables in your repository automatically + - Detect your existing workflow file and configure it + +3. When prompted to commit and push your local changes, say **yes**. + +> [!TIP] +> After `azd pipeline config` completes, navigate to **Settings** > **Secrets and variables** > **Actions** > **Variables** tab to see the repository variables it created (like `AZURE_CLIENT_ID`, `AZURE_TENANT_ID`, etc.). These are the `vars.*` values your workflow references. + +## Test the pipeline + +When you said **yes** to `azd pipeline config`'s commit prompt, it pushed your changes — including the workflow file. Let's verify everything is working. + +1. Navigate to the **Actions** tab. The push will trigger the **Run Tests** workflow first. +2. Once tests complete successfully, the **Deploy App** workflow will start automatically (via the `workflow_run` trigger). +3. Watch the deploy job run — it will provision Azure resources and deploy both the client and server applications. +4. Once the deployment completes return to your codespace. +5. Run the following in the terminal to list the details of your new Azure environment: + + ```bash + azd show + ``` + +6. Look for the **client** service endpoint in the output. +7. Open the client URL in your browser — you should see the pet shelter application live! + +## Summary and next steps + +Congratulations! You've deployed the pet shelter application to Azure with a CI/CD pipeline: + +- **CI-gated deployment** — CD only runs after CI passes, using `workflow_run` +- **OIDC authentication** — passwordless, short-lived tokens instead of stored credentials +- **Concurrency controls** — preventing conflicting deployments +- **azd integration** — `azd pipeline config` configured credentials around your custom workflow + +In a later exercise, we'll add **branch rulesets** to ensure code must pass CI and be reviewed before it can reach `main` — creating a natural production gate. + +Next we'll [create custom actions][walkthrough-next] to reduce duplication and make our workflows more maintainable. + +## Resources + +- [What is the Azure Developer CLI?][azd-docs] +- [Create a custom pipeline definition][azd-pipeline-definition] +- [Events that trigger workflows: workflow_run][workflow-run-docs] +- [About security hardening with OpenID Connect][oidc-docs] +- [Deploying with GitHub Actions][actions-deploy] +- [Using environments for deployment][environments-docs] + +| [← Matrix Strategies & Parallel Testing][walkthrough-previous] | [Next: Creating custom actions →][walkthrough-next] | +|:-----------------------------------|------------------------------------------:| + +[actions-deploy]: https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-with-github-actions +[azd-docs]: https://learn.microsoft.com/azure/developer/azure-developer-cli/overview +[azd-pipeline-definition]: https://learn.microsoft.com/azure/developer/azure-developer-cli/pipeline-create-definition +[environments-docs]: https://docs.github.com/actions/managing-workflow-runs-and-deployments/managing-deployments/using-environments-for-deployment +[oidc-docs]: https://docs.github.com/actions/security-for-github-actions/security-hardening-your-deployments/about-security-hardening-with-openid-connect +[running-tests]: 3-running-tests.md +[workflow-run-docs]: https://docs.github.com/actions/writing-workflows/choosing-when-your-workflow-runs/events-that-trigger-workflows#workflow_run +[walkthrough-previous]: 5-matrix-strategies.md +[walkthrough-next]: 7-custom-actions.md diff --git a/content/github-actions/7-custom-actions.md b/content/github-actions/7-custom-actions.md new file mode 100644 index 0000000..1302521 --- /dev/null +++ b/content/github-actions/7-custom-actions.md @@ -0,0 +1,268 @@ +# Creating Custom Actions + +| [← Deploy to Azure][walkthrough-previous] | [Next: Reusable Workflows →][walkthrough-next] | +|:-----------------------------------|------------------------------------------:| + +Custom actions let you encapsulate reusable logic into a single step you can use across workflows. GitHub Actions supports three types of custom actions: **[composite][creating-composite-action]** (combines multiple steps), **[JavaScript][creating-javascript-action]** (runs Node.js code), and **[Docker container][creating-docker-container-action]** (runs in a container). Composite actions are the most approachable and a great starting point for bundling common step patterns. + +In this exercise you'll create a composite action that sets up the Python environment and seeds the test database, then use it in your CI workflow. + +## Scenario + +The pet shelter's test workflows need to seed the database before running tests. This involves setting up Python, installing dependencies, and running `seed_database.py`. Rather than duplicating these steps in every workflow, we'll create a custom composite action that any workflow can reference in a single step. + +## Background + +The great advantage to a composite action is it builds upon the knowledge you already have. You've defined actions already, and a custom action uses a very similar syntax, all defined in YAML. + +Every custom action is defined by an `action.yml` file. This file describes the action's interface and behavior: + +- **`name`**: A human-readable name for the action. +- **`description`**: A short summary of what the action does. +- **`inputs`**: Parameters the caller can pass to the action. +- **`outputs`**: Values the action makes available to subsequent steps. +- **`runs`**: Defines how the action executes. Composite actions use `runs.using: 'composite'` with a list of `steps`. + +Inputs and outputs let the action communicate with the calling workflow, making the action flexible and reusable across different contexts. + +## Create the setup-python-env action + +Let's create a composite action that sets up Python, installs dependencies, and seeds the test database. + +1. In your codespace, open a terminal window by selecting Ctl+\`. +2. Create the directory for the action by executing the following command in the terminal: + + ```bash + mkdir -p .github/actions/setup-python-env + ``` + +3. In the newly created `setup-python-env` folder, create a new file named `action.yml` to store your composite action. +4. Add the following YAML to the file to define your composite action: + + ```yaml + name: 'Setup Python Environment' + description: 'Sets up Python, installs dependencies, and seeds the test database' + + inputs: + python-version: + description: 'Python version to use' + required: false + default: '3.14' + database-path: + description: 'Path to the test database file' + required: false + default: './test_dogshelter.db' + + outputs: + database-file: + description: 'Path to the seeded database file' + value: ${{ steps.set-output.outputs.database-file }} + + runs: + using: 'composite' + steps: + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: ${{ inputs.python-version }} + + - name: Install dependencies + run: pip install -r app/server/requirements.txt + shell: bash + + - name: Seed the database + id: seed + run: python app/server/utils/seed_database.py + shell: bash + env: + DATABASE_PATH: ${{ inputs.database-path }} + + - name: Set output + run: echo "database-file=${{ inputs.database-path }}" >> $GITHUB_OUTPUT + shell: bash + id: set-output + ``` + +> [!NOTE] +> Composite action steps must include `shell: bash` for every `run` step — this is required even though it seems redundant. Without it, the workflow will fail with a validation error. + +Review the key parts of the action: +- **Inputs** provide sensible defaults so callers only need to override what's different. +- **Outputs** reference the `set-output` step's output, making the database path available to the calling workflow. +- Each `run` step explicitly declares `shell: bash` as required by composite actions. + +## Use the action in the CI workflow + +Now let's update the CI workflow to use the custom action instead of the individual setup and install steps. We'll also store the test database path as a repository variable — configured once in your repository settings and available to every workflow. + +1. Navigate to your repository on GitHub and go to **Settings** > **Secrets and variables** > **Actions** > **Variables** tab. Select **New repository variable** and create: + - **Name**: `TEST_DATABASE_PATH` + - **Value**: `./test_dogshelter.db` + + This is the same `vars.*` mechanism that `azd pipeline config` used in the [deploy lesson][deploy-azure] for Azure credentials. Repository variables keep configuration out of your workflow files, making them easier to change without a code commit. + +2. Return to your codespace and open `.github/workflows/run-tests.yml`. In the `test-api` job, replace the **Set up Python** and **Install dependencies** steps (lines 23–32) with a single call to the composite action: + + ```yaml + - name: Setup Python environment + id: seed + uses: ./.github/actions/setup-python-env + with: + python-version: ${{ matrix.python-version }} + database-path: ${{ vars.TEST_DATABASE_PATH }} + ``` + +3. Update the **Run tests** step in `test-api` (line 34) to pass the database path from the action's output: + + ```yaml + - name: Run tests + run: python -m unittest test_app -v + working-directory: ./app/server + env: + DATABASE_PATH: ${{ steps.seed.outputs.database-file }} + ``` + +4. The `test-e2e` job has the same **Set up Python** and **Install Python dependencies** steps — a perfect chance to reuse the action. Replace those two steps with the same composite action call (no `python-version` override needed since the action defaults to 3.14): + + ```yaml + - name: Setup Python environment + id: seed + uses: ./.github/actions/setup-python-env + with: + database-path: ${{ vars.TEST_DATABASE_PATH }} + ``` + + Then update the **Run e2e tests** step to pass the database path so the Flask server started by Playwright can find the seeded database: + + ```yaml + - name: Run e2e tests + working-directory: ./app/client + run: npx playwright test + env: + DATABASE_PATH: ${{ steps.seed.outputs.database-file }} + ``` + +5. Here's the complete updated `run-tests.yml` for reference: + + ```yaml + name: Run Tests + + on: + push: + branches: [main] + pull_request: + branches: [main] + + permissions: + contents: read + + jobs: + test-api: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + python-version: ['3.12', '3.13', '3.14'] + + steps: + - uses: actions/checkout@v4 + + - name: Setup Python environment + id: seed + uses: ./.github/actions/setup-python-env + with: + python-version: ${{ matrix.python-version }} + database-path: ${{ vars.TEST_DATABASE_PATH }} + + - name: Run tests + run: python -m unittest test_app -v + working-directory: ./app/server + env: + DATABASE_PATH: ${{ steps.seed.outputs.database-file }} + + test-e2e: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Setup Python environment + id: seed + uses: ./.github/actions/setup-python-env + with: + database-path: ${{ vars.TEST_DATABASE_PATH }} + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + cache: 'npm' + cache-dependency-path: 'app/client/package-lock.json' + + - name: Install Node dependencies + working-directory: ./app/client + run: npm ci + + - name: Install Playwright browsers + working-directory: ./app/client + run: npx playwright install --with-deps chromium + + - name: Run e2e tests + working-directory: ./app/client + run: npx playwright test + env: + DATABASE_PATH: ${{ steps.seed.outputs.database-file }} + ``` + +6. In the terminal (Ctl+` to toggle), commit and push your changes: + + ```bash + git add .github/actions/setup-python-env/action.yml .github/workflows/run-tests.yml + git commit -m "Add setup-python-env composite action" + git push + ``` + +7. Navigate to the **Actions** tab on GitHub and verify the workflow runs successfully with the new action. + +> [!TIP] +> When developing custom actions, you can test them by pushing to a branch and triggering a workflow run. Check the workflow logs to ensure each step in your composite action executes as expected. + +## Types of custom actions + +GitHub Actions supports three types of custom actions, each suited to different use cases: + +| Type | Best for | Runs on | Complexity | +|------|----------|---------|------------| +| **Composite** | Bundling multiple existing steps into one | Directly on the runner | Easiest to create | +| **JavaScript** | Complex logic, API calls, or custom computations | Node.js runtime | Moderate | +| **Docker container** | Actions that need specific tools or environments | Inside a container | Most involved | + +- **Composite actions** are ideal when you want to combine several existing steps (like we did with setup, install, and seed) into a single reusable unit. They're the fastest to create because they use the same step syntax you already know. +- **JavaScript actions** are best when you need custom logic, such as making API calls, processing data, or interacting with the GitHub API. They run on Node.js and have access to the `@actions/core` and `@actions/github` packages. +- **Docker container actions** are best when your action requires specific tools, operating system libraries, or a particular runtime environment. They run in a Docker container, giving you full control over the execution environment. + +## Summary and next steps + +Custom actions reduce duplication and make workflows cleaner. You've created a composite action that encapsulates Python setup and database seeding into a single reusable step. Any workflow in the repository can now prepare the Python environment with a single `uses` reference. + +Next, we'll take reusability to the next level by exploring [reusable workflows][walkthrough-next] for sharing entire workflow patterns across your CI/CD pipeline. + +## Resources + +- [Creating a composite action][creating-composite-action] +- [About custom actions][about-custom-actions] +- [Metadata syntax for GitHub Actions][metadata-syntax] +- [GitHub Skills: Reusable workflows][skills-reusable-workflows] + +| [← Deploy to Azure][walkthrough-previous] | [Next: Reusable Workflows →][walkthrough-next] | +|:-----------------------------------|------------------------------------------:| + +[about-custom-actions]: https://docs.github.com/actions/sharing-automations/creating-actions/about-custom-actions +[creating-composite-action]: https://docs.github.com/actions/sharing-automations/creating-actions/creating-a-composite-action +[creating-docker-container-action]: https://docs.github.com/actions/sharing-automations/creating-actions/creating-a-docker-container-action +[creating-javascript-action]: https://docs.github.com/actions/sharing-automations/creating-actions/creating-a-javascript-action +[deploy-azure]: 6-deploy-azure.md +[metadata-syntax]: https://docs.github.com/actions/sharing-automations/creating-actions/metadata-syntax-for-github-actions +[skills-reusable-workflows]: https://github.com/skills/reusable-workflows +[walkthrough-previous]: 6-deploy-azure.md +[walkthrough-next]: 8-reusable-workflows.md diff --git a/content/github-actions/8-reusable-workflows.md b/content/github-actions/8-reusable-workflows.md new file mode 100644 index 0000000..4d84be1 --- /dev/null +++ b/content/github-actions/8-reusable-workflows.md @@ -0,0 +1,243 @@ +# Reusable Workflows + +| [← Creating Custom Actions][walkthrough-previous] | [Next: Required Workflows, Protection & Wrap-Up →][walkthrough-next] | +|:-----------------------------------|------------------------------------------:| + +Reusable workflows let you define an entire workflow that other workflows can call, like a function. This is different from custom actions — actions encapsulate individual *steps*, while reusable workflows encapsulate entire *jobs*. They're triggered with the `workflow_call` event and can accept inputs, secrets, and produce outputs. + +In this exercise you'll extract the deployment pattern into a reusable workflow, then call it from both your CD pipeline and a new manual deployment workflow for rollbacks and hotfixes. + +## Scenario + +The shelter's deploy workflow is working — code that passes CI on `main` gets deployed automatically. But what happens when something goes wrong in production and you need to quickly roll back to a known-good version? Or deploy a hotfix from a specific commit? Right now, the only option is to push to `main` and wait for CI. Let's create a manual deployment workflow that lets the team deploy any git ref on demand, and extract the shared deploy logic into a reusable workflow so both pipelines stay in sync. + +## Background + +In the [previous exercise][walkthrough-previous] you created a composite action to bundle steps together. Reusable workflows solve a similar problem — avoiding duplication — but at a different level. It's important to understand when to reach for each one. + +A **composite action** combines multiple *steps* into a single step that runs inside a job. A **reusable workflow** packages one or more entire *jobs* that a caller workflow references at the job level. Here's a side-by-side comparison: + +| | Composite Action | Reusable Workflow | +|---|---|---| +| **What it encapsulates** | Multiple steps, run as a single step | One or more complete jobs | +| **Where it lives** | `action.yml` in any directory (e.g. `.github/actions/`) | `.github/workflows/` directory only | +| **How it's called** | `uses:` inside a job's `steps` | `uses:` directly on a `job`, not inside steps | +| **Runner control** | Runs on the caller job's runner | Each job specifies its own runner | +| **Secrets** | Cannot access secrets directly | Can receive secrets via `secrets:` or `secrets: inherit` | +| **Logging** | Appears as one collapsed step in the log | Every job and step is logged individually | +| **Nesting depth** | Up to 10 composite actions per workflow | Up to 10 levels of workflow nesting | +| **Marketplace** | Can be published to the [Actions Marketplace][actions-marketplace] | Cannot be published to the Marketplace | + +**When to use which:** + +- Choose a **composite action** when you want to bundle a handful of related steps that run within a single job — like the `setup-python-env` action you just built. +- Choose a **reusable workflow** when you want to share entire job definitions — including runner selection, environment targeting, and concurrency controls — across multiple workflows. Deployment pipelines are a classic use case, which is exactly what we'll build next. + +## Understanding secrets in reusable workflows + +Reusable workflows often need access to secrets and variables — for example, deployment credentials. There are two approaches: + +### Pass all secrets + +Using `secrets: inherit` to forward every secret available in the calling workflow to the reusable workflow. + + ```yaml + deploy: + uses: ./.github/workflows/reusable-deploy.yml + with: + deploy-ref: main + secrets: inherit + ``` + +### Define specific secrets + +For a more controlled approach, you can identify which specific secrets to pass in the reusable workflow's `on.workflow_call.secrets` section: + +```yaml +on: + workflow_call: + inputs: + deploy-ref: + required: false + type: string + secrets: + AZURE_CLIENT_ID: + required: true + AZURE_TENANT_ID: + required: true + AZURE_SUBSCRIPTION_ID: + required: true +``` + +Then caller then passes each secret explicitly: + +```yaml +deploy: + uses: ./.github/workflows/reusable-deploy.yml + with: + deploy-ref: main + secrets: + AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }} + AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }} + AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }} +``` + +> [!IMPORTANT] +> For deployment workflows that need Azure credentials, `secrets: inherit` is the simplest approach. However, defining specific secrets provides better documentation and prevents accidentally exposing secrets the reusable workflow doesn't need. We'll use `secrets: inherit` in this exercise for simplicity. + +## Create a reusable deployment workflow + +Let's extract the shared deploy steps into a reusable workflow. The workflow will accept an optional `deploy-ref` input so callers can deploy any git ref — the current commit, a previous release tag, or a specific commit SHA. + +1. In your codespace, create a new file at `.github/workflows/reusable-deploy.yml`. + +2. Define the `workflow_call` trigger with an input for the git ref to deploy: + + ```yaml + name: Reusable Deploy Workflow + + on: + workflow_call: + inputs: + deploy-ref: + description: 'Git ref to deploy (commit SHA, tag, or branch). Defaults to the caller workflow ref.' + required: false + type: string + default: '' + ``` + +3. Add a single job that checks out the code, authenticates with Azure, and deploys: + + ```yaml + jobs: + deploy: + runs-on: ubuntu-latest + concurrency: + group: deploy-production + cancel-in-progress: false + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + ref: ${{ inputs.deploy-ref || github.sha }} + + - name: Install azd + uses: Azure/setup-azd@v2 + + - name: Log in with Azure (Federated Credentials) + run: | + azd auth login \ + --client-id "${{ vars.AZURE_CLIENT_ID }}" \ + --federated-credential-provider "github" \ + --tenant-id "${{ vars.AZURE_TENANT_ID }}" + + - name: Deploy application + run: azd up --no-prompt + env: + AZURE_SUBSCRIPTION_ID: ${{ vars.AZURE_SUBSCRIPTION_ID }} + AZURE_ENV_NAME: ${{ vars.AZURE_ENV_NAME }} + AZURE_LOCATION: ${{ vars.AZURE_LOCATION }} + ``` + +> [!NOTE] +> Reusable workflows have a few important limitations: they can be nested up to 4 levels deep, and the workflow file must be located in the `.github/workflows` directory. You also cannot call a reusable workflow from within a reusable workflow's `steps` — they are called at the job level. + +## Update the CD workflow + +Now update your `azure-dev.yml` to call the reusable workflow instead of defining the deploy steps inline. + +1. Replace the contents of `.github/workflows/azure-dev.yml` with: + + ```yaml + name: Deploy App + + on: + workflow_dispatch: + workflow_run: + workflows: ["Run Tests"] + branches: [main] + types: [completed] + + permissions: + id-token: write + contents: read + + jobs: + deploy: + if: github.event_name == 'workflow_dispatch' || github.event.workflow_run.conclusion == 'success' + uses: ./.github/workflows/reusable-deploy.yml + secrets: inherit + ``` + + Notice how the entire job definition is replaced by a single `uses:` reference. The reusable workflow handles checkout, authentication, and deployment — the caller just decides *when* to deploy. + +## Create a manual deploy workflow + +Now let's add the second caller — a manual deploy workflow for rollbacks and hotfixes. This is where the reusable workflow really earns its keep: same deploy logic, different trigger. + +1. Create a new file at `.github/workflows/manual-deploy.yml`. +2. Add the following content: + + ```yaml + name: Manual Deploy + + on: + workflow_dispatch: + inputs: + deploy-ref: + description: 'Git ref to deploy (commit SHA, tag, or branch)' + required: true + default: 'main' + + permissions: + id-token: write + contents: read + + jobs: + deploy: + uses: ./.github/workflows/reusable-deploy.yml + with: + deploy-ref: ${{ inputs.deploy-ref }} + secrets: inherit + ``` + + This workflow is only triggered **manually** via `workflow_dispatch` — it appears as a "Run workflow" button in the Actions tab. It prompts for a **git ref** (a commit SHA, tag, or branch name to deploy), passes that ref to the reusable workflow's `deploy-ref` input, and uses the same deploy logic as the automated pipeline. + +3. In the terminal (Ctl+` to toggle), commit and push your changes: + + ```bash + git add .github/workflows/reusable-deploy.yml .github/workflows/azure-dev.yml .github/workflows/manual-deploy.yml + git commit -m "Extract reusable deploy workflow and add manual deploy" + git push + ``` + +4. Navigate to the **Actions** tab on GitHub and verify that the deploy workflow runs successfully. You should also see **Manual Deploy** in the workflow list — try clicking **Run workflow** to test deploying a specific ref. + +> [!TIP] +> When viewing a workflow run that calls reusable workflows, GitHub shows each caller job separately. Select a job to see the steps from the reusable workflow running inside it. + +This pattern keeps your deployment logic in one place. When you need to update the deployment process — like adding health checks or notifications — you change it once in the reusable workflow and every caller benefits. + +## Summary and next steps + +Reusable workflows reduce duplication at the workflow level. You've extracted the shared deployment pattern into a template that both the automated CD pipeline and the manual deploy workflow call with a single `uses` reference. This keeps your deployment process maintainable as it grows — any change happens in one place. + +Next, we'll ensure quality gates are enforced with [branch protection, required workflows, and more][walkthrough-next]. + +## Resources + +- [Reusing workflows][reusing-workflows] +- [The `workflow_call` event][workflow-call-event] +- [Sharing workflows with your organization][sharing-workflows] +- [GitHub Skills: Reusable workflows][skills-reusable-workflows] + +| [← Creating Custom Actions][walkthrough-previous] | [Next: Required Workflows, Protection & Wrap-Up →][walkthrough-next] | +|:-----------------------------------|------------------------------------------:| + +[actions-marketplace]: https://github.com/marketplace?type=actions +[reusing-workflows]: https://docs.github.com/actions/sharing-automations/reusing-workflows +[sharing-workflows]: https://docs.github.com/actions/sharing-automations/sharing-workflows-secrets-and-runners-with-your-organization +[skills-reusable-workflows]: https://github.com/skills/reusable-workflows +[workflow-call-event]: https://docs.github.com/actions/writing-workflows/choosing-when-your-workflow-runs/events-that-trigger-workflows#workflow_call +[walkthrough-previous]: 7-custom-actions.md +[walkthrough-next]: 9-required-workflows.md diff --git a/content/github-actions/9-required-workflows.md b/content/github-actions/9-required-workflows.md new file mode 100644 index 0000000..b1100bc --- /dev/null +++ b/content/github-actions/9-required-workflows.md @@ -0,0 +1,176 @@ +# Rulesets, Required Workflows & Wrap-Up + +| [← Reusable Workflows][walkthrough-previous] | [Next: GitHub Actions section overview →][walkthrough-next] | +|:-----------------------------------|------------------------------------------:| + +Building a CI/CD pipeline is only half the battle — you also need to enforce it. Repository rulesets ensure that code can't be merged without passing checks and getting reviewed. Required workflows go further, allowing organizations to mandate specific workflows across all repositories. In this final exercise, you'll configure a ruleset on `main`, explore required workflows, and wrap up the workshop. + +## Scenario + +The shelter's CI/CD pipeline is comprehensive, but nothing currently prevents someone from merging code without passing CI — meaning untested code could reach `main` and trigger a deployment. The organization also wants to ensure all repositories run security scanning. Let's lock things down with rulesets and explore how required workflows enforce standards at scale. + +## Background + +### Repository rulesets + +[Rulesets][about-rulesets] are GitHub's recommended approach for enforcing rules on branches and tags. They offer flexibility and visibility that legacy branch protection rules don't: + +- **Layering** — Multiple rulesets can apply to the same branch; the most restrictive rule wins. +- **Status management** — Toggle between **Active** and **Disabled** without losing configuration. +- **Visibility** — Anyone with read access can see active rulesets (not just admins). +- **Bypass permissions** — Granular bypass for specific roles, teams, or GitHub Apps. +- **Scope** — Repository-level or organization-wide (on GitHub Enterprise). +- **Required workflows** — Rulesets can require specific workflows to pass before merging. + +Rulesets are available on all GitHub plans for public repositories, and on GitHub Pro, Team, and Enterprise plans for private repositories. + +### Required workflows + +One of the most powerful ruleset features is the ability to **require specific workflows to pass before merging**. This is particularly useful at the organization level: + +- An organization creates a reusable workflow (e.g. `security-scan.yml`) in a central repository. +- An organization-wide ruleset requires that workflow for all (or a subset of) repositories. +- Every PR across those repositories now runs the required workflow automatically — individual repository owners can't skip it. + +Common use cases include security scanning, license compliance, and code quality checks. + +## Add a summary job to the CI workflow + +Right now we have two sets of tests - end to end tests with Playwright, and unit tests with Python. The latter is actually setup using a matrix, where we run the tests against different versions of Python. As time goes on, the list of tests may grow and change. We want to ensure we can easily indicate that **all** tests have passed in one, centralized report. This will allow us to then use this as our flag when creating a gate, to ensure our CI has completed successfully before allowing a merge into `main`. We'll do this by adding a new job to the end of our tests workflow, which will check if all jobs in the workflow have succeeded. + +1. Open `.github/workflows/run-tests.yml` and add the following job at the end of the `jobs:` section (after the `test-e2e` job): + + ```yaml + tests-passed: + if: always() + needs: [test-api, test-e2e] + runs-on: ubuntu-latest + steps: + - name: Check results + run: | + if [[ "${{ needs.test-api.result }}" != "success" || "${{ needs.test-e2e.result }}" != "success" ]]; then + echo "One or more jobs failed" + exit 1 + fi + ``` + +2. Commit and push the change: + + ```bash + git add .github/workflows/run-tests.yml + git commit -m "Add tests-passed summary job" + git push + ``` + +The `if: always()` ensures this job runs even when upstream jobs fail, so it can correctly report failure. The `needs` key creates a dependency on both test jobs, and the step checks their results. + +## Create a ruleset for `main` + +Let's create a ruleset that requires our tests to pass, and pull requests to be reviewed, before merging to `main`. + +1. Navigate to your repository on GitHub. +2. Select **Settings**, then in the left sidebar under **Code and automation**, expand **Rules** and select **Rulesets**. +3. Select **New ruleset** > **New branch ruleset**. +4. Under **Ruleset name**, enter `main-gate`. +5. Set the **Enforcement status** to **Active**. +6. Under **Target branches**, select **Add target** > **Include default branch**. This targets `main`. +7. Under **Branch rules**, enable the following rules: + + | Rule | Configuration | + |------|--------------| + | **Require a pull request before merging** | Set **Required approvals** to `1` | + | **Require status checks to pass** | Check **Require branches to be up to date before merging**, then add `tests-passed` as a required check | + | **Block force pushes** | *(enabled by default)* | + +8. Select **Create** to save the ruleset. + +> [!TIP] +> If your status checks don't appear when searching, make sure the CI workflow has run at least once on the repository. GitHub only shows status checks that have been reported previously. + +> [!NOTE] +> You can start a ruleset in **Disabled** mode to test it before enforcing. This lets you preview which PRs would be blocked without actually blocking anyone. + +## Test the ruleset + +Let's verify the ruleset is working. + +1. Return to your codespace and open the terminal (Ctl+` to toggle). Create a new branch and make a small change: + + ```bash + git checkout -b test-ruleset + echo "# test change" >> app/server/app.py + git add app/server/app.py + git commit -m "Test ruleset enforcement" + git push -u origin test-ruleset + ``` + +2. Navigate to your repository on GitHub and create a pull request from `test-ruleset` to `main`. +3. Observe that the **Merge pull request** button is disabled — the required status checks must pass and the PR needs an approving review. +4. Watch the CI workflow run. Even after all checks pass, the merge button remains disabled until the review requirement is satisfied. +5. You can close the pull request — the important thing is that the ruleset is enforced! + +> [!IMPORTANT] +> Rulesets ensure your CI pipeline isn't just a suggestion — it's a requirement. Code cannot reach `main` without passing the checks and reviews you've defined. Since your deploy workflow only triggers on pushes to `main`, this means only validated, reviewed code gets deployed. + +## Organizational required workflows + +Organization-wide rulesets can mandate that specific workflows run across all repositories. This pairs naturally with the reusable workflows you built in the [previous exercise](8-reusable-workflows.md) — an organization could create a reusable security-scanning workflow in a central `.github` repository, then enforce it via a ruleset so every PR across the organization runs it automatically. + +> [!NOTE] +> Organization-wide rulesets are available on GitHub Team and GitHub Enterprise plans. For personal repositories on the Free plan, repository-level rulesets (as configured above) provide similar enforcement at the repo level. + +## Advanced features to explore + +Here are some additional GitHub Actions features you can explore on your own: + +- **Service containers**: Spin up databases, caches, or other services alongside your test jobs. Define them under `services` in a job, and GitHub Actions handles the lifecycle for you. +- **Job summaries**: Write Markdown to the `$GITHUB_STEP_SUMMARY` environment file to create rich, formatted output that appears on the workflow run summary page. +- **Self-hosted runners**: Run workflows on your own infrastructure for specialized hardware needs, compliance requirements, or to stay within your network. Useful when you need GPUs, specific OS versions, or access to internal resources. +- **Larger runners**: GitHub-hosted runners with more CPU and memory (up to 96-core x64 and 64-core ARM), available on Team and Enterprise plans. Swap `runs-on: ubuntu-latest` for a larger runner label when your builds or tests need more compute. See the [larger runners documentation][larger-runners]. +- **`repository_dispatch`**: Trigger workflows from external events via the GitHub API. This is useful for integrating GitHub Actions with external systems like monitoring tools, chatbots, or other CI/CD platforms. + +## Wrap-up and congratulations + +Congratulations! You've built a complete CI/CD pipeline for the pet shelter application. Let's review what you've accomplished: + +- **Continuous integration**: Tests run on every push and pull request across multiple Python versions, catching bugs before they reach `main`. +- **Continuous deployment**: Automated deployment to Azure via `azd`, triggered after CI passes on `main`. +- **Custom actions**: Encapsulated Python setup and database seeding into a reusable composite action, eliminating duplication across jobs. +- **Reusable workflows**: Extracted the deployment pattern into a callable workflow template, shared by both the automated CD pipeline and a manual deploy workflow for rollbacks. +- **Manual deployment**: Added on-demand deployment capability for rollbacks and hotfixes, using `workflow_dispatch` with a git ref input. +- **Rulesets**: Enforced quality gates so code can't be merged without passing CI checks and peer review — the production safeguard that ensures only validated code gets deployed. + +This pipeline follows the same patterns used by teams across GitHub. As the shelter's application grows, this foundation will scale with it. + +### Continue learning + +If you want to keep exploring, here are some suggested next steps: + +- Add a code scanning workflow using [GitHub Advanced Security][github-security]. +- Explore [GitHub Environments][environments-docs] with deployment protection rules for staged deployments (e.g., staging → production with manual approval). +- Explore the [GitHub Actions Marketplace][actions-marketplace] for community-built actions. +- Take the [GitHub Skills: Deploy to Azure][skills-deploy-azure] course for a deeper dive into Azure deployment. + +## Resources + +- [About rulesets][about-rulesets] +- [Creating rulesets for a repository][creating-rulesets] +- [Available rules for rulesets][available-rules] +- [The `workflow_dispatch` event][workflow-dispatch] +- [GitHub Skills: Deploy to Azure][skills-deploy-azure] +- [GitHub Actions Marketplace][actions-marketplace] + +| [← Reusable Workflows][walkthrough-previous] | [Next: GitHub Actions section overview →][walkthrough-next] | +|:-----------------------------------|------------------------------------------:| + +[about-rulesets]: https://docs.github.com/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/about-rulesets +[actions-marketplace]: https://github.com/marketplace?type=actions +[available-rules]: https://docs.github.com/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/available-rules-for-rulesets +[creating-rulesets]: https://docs.github.com/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/creating-rulesets-for-a-repository +[environments-docs]: https://docs.github.com/actions/managing-workflow-runs-and-deployments/managing-deployments/managing-environments-for-deployment +[github-security]: https://github.com/features/security +[larger-runners]: https://docs.github.com/actions/using-github-hosted-runners/using-larger-runners +[skills-deploy-azure]: https://github.com/skills/deploy-to-azure +[workflow-dispatch]: https://docs.github.com/actions/writing-workflows/choosing-when-your-workflow-runs/events-that-trigger-workflows#workflow_dispatch +[walkthrough-previous]: 8-reusable-workflows.md +[walkthrough-next]: README.md diff --git a/content/github-actions/README.md b/content/github-actions/README.md new file mode 100644 index 0000000..f05541c --- /dev/null +++ b/content/github-actions/README.md @@ -0,0 +1,68 @@ +# GitHub Actions: From CI to CD + +| [← Pets workshop selection][walkthrough-previous] | [Next: Workshop Setup →][walkthrough-next] | +|:-----------------------------------|------------------------------------------:| + +[GitHub Actions][github-actions] is a powerful automation platform available right in your GitHub repository. With Actions you can build, test, and deploy your code — and automate just about anything else in your software development lifecycle. This workshop walks you through building a complete CI/CD pipeline, starting with running tests on every push and ending with automated deployment to Azure. + +## Scenario + +You're a developer, volunteering for a pet adoption shelter. They have a [Flask][flask] API and an [Astro][astro] frontend. They're ready to productionize their app, and deploy it to the cloud! But they also know there's some processes that should be followed to ensure everything flows smoothly. The goal is to work to automate all of those - through the use of GitHub Actions! + +## Prerequisites + +To complete this workshop, you will need the following: + +- A [GitHub account][github-signup] +- An [Azure subscription][azure-free] (for the deployment exercises) +- Familiarity with Git basics (commit, push, pull) + +> [!NOTE] +> If you have access to [GitHub Copilot][github-copilot], it can help you write workflow YAML files. You'll see tips throughout the exercises on how to use it effectively. + +## Exercises + +0. [Workshop Setup][setup] — Create your repository from the template +1. [Introduction & Your First Workflow][introduction] — Create your first workflow and explore the Actions UI +2. [Securing the Development Pipeline][code-scanning] — Enable code scanning, Dependabot, and secret scanning +3. [Running Tests][ci] — Automate unit and e2e testing with parallel jobs +4. [Caching][marketplace] — Speed up workflows by caching dependencies +5. [Matrix strategies & parallel testing][matrix] — Test across multiple configurations simultaneously +6. [Deploying to Azure with azd][deployment] — Set up continuous deployment to Azure +7. [Creating custom actions][custom-actions] — Build your own reusable action +8. [Reusable workflows][reusable-workflows] — Share workflow logic across repositories +9. [Required workflows, protection & wrap-up][protection] — Enforce standards and protect your branches + +## Resources + +- [GitHub Actions documentation][github-actions-docs] +- [GitHub Actions Marketplace][actions-marketplace] +- [Workflow syntax reference][workflow-syntax] +- [Azure Developer CLI (azd) documentation][azd-docs] + +| [← Pets workshop selection][walkthrough-previous] | [Next: Workshop Setup →][walkthrough-next] | +|:-----------------------------------|------------------------------------------:| + +[actions-marketplace]: https://github.com/marketplace?type=actions +[astro]: https://astro.build/ +[azure-free]: https://azure.microsoft.com/free/ +[azd-docs]: https://learn.microsoft.com/azure/developer/azure-developer-cli/overview +[ci]: ./3-running-tests.md +[code-scanning]: ./2-code-scanning.md +[custom-actions]: ./7-custom-actions.md +[deployment]: ./6-deploy-azure.md +[flask]: https://flask.palletsprojects.com/ +[github-actions]: https://github.com/features/actions +[github-actions-docs]: https://docs.github.com/actions +[github-copilot]: https://github.com/features/copilot +[github-signup]: https://github.com/join +[introduction]: ./1-introduction.md +[marketplace]: ./4-caching.md +[matrix]: ./5-matrix-strategies.md +[protection]: ./9-required-workflows.md +[repo-root]: / +[reusable-workflows]: ./8-reusable-workflows.md +[setup]: ./0-setup.md +[walkthrough-next]: ./0-setup.md +[walkthrough-previous]: ../README.md +[workflow-syntax]: https://docs.github.com/actions/writing-workflows/workflow-syntax-for-github-actions diff --git a/content/shared-images/code-scanning-dialog.png b/content/shared-images/code-scanning-dialog.png new file mode 100644 index 0000000000000000000000000000000000000000..e43dec08a8c51aa9397db763ea5ee15c64ca0880 GIT binary patch literal 60341 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 vgB0xwStidRqpksxVA7T$d;z@M{3 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�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�+<|h1 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 literal 0 HcmV?d00001 diff --git a/content/shared-images/dependabot-settings.png b/content/shared-images/dependabot-settings.png new file mode 100644 index 0000000000000000000000000000000000000000..48f13e448978f1144ad36fbb6461d4958a11963a GIT binary patch literal 94706 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%0AmP)QN&K>KcyRN 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�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 I1i$+IA4W%-%m4rY literal 0 HcmV?d00001 diff --git a/content/1-hour/images/0-setup-template.png b/content/shared-images/setup-use-template.png similarity index 100% rename from content/1-hour/images/0-setup-template.png rename to content/shared-images/setup-use-template.png diff --git a/next-steps.md b/next-steps.md new file mode 100644 index 0000000..a4d2d87 --- /dev/null +++ b/next-steps.md @@ -0,0 +1,64 @@ +# Next Steps after `azd init` + +## Table of Contents + +1. [Next Steps](#next-steps) + 1. [Provision infrastructure](#provision-infrastructure-and-deploy-application-code) + 2. [Modify infrastructure](#modify-infrastructure) + 3. [Getting to production-ready](#getting-to-production-ready) +2. [Billing](#billing) +3. [Troubleshooting](#troubleshooting) + +## Next Steps + +### Provision infrastructure and deploy application code + +Run `azd up` to provision your infrastructure and deploy to Azure in one step (or run `azd provision` then `azd deploy` to accomplish the tasks separately). Visit the service endpoints listed to see your application up-and-running! + +To troubleshoot any issues, see [troubleshooting](#troubleshooting). + +### Modify infrastructure + +To describe the infrastructure and application, `azure.yaml` was added. This file contains all services and resources that describe your application. + +To add new services or resources, run `azd add`. You may also edit the `azure.yaml` file directly if needed. + +### Getting to production-ready + +When needed, `azd` generates the required infrastructure as code in memory and uses it. If you would like to see or modify the infrastructure that `azd` uses, run `azd infra gen` to persist it to disk. + +If you do this, some additional directories will be created: + +```yaml +- infra/ # Infrastructure as Code (bicep) files + - main.bicep # main deployment module + - resources.bicep # resources shared across your application's services + - modules/ # Library modules +``` + +*Note*: Once you have generated your infrastructure to disk, those files are the source of truth for azd. Any changes made to `azure.yaml` (such as through `azd add`) will not be reflected in the infrastructure until you regenerate it with `azd infra gen` again. It will prompt you before overwriting files. You can pass `--force` to force `azd infra gen` to overwrite the files without prompting. + +Finally, run `azd pipeline config` to configure a CI/CD deployment pipeline. + +## Billing + +Visit the *Cost Management + Billing* page in Azure Portal to track current spend. For more information about how you're billed, and how you can monitor the costs incurred in your Azure subscriptions, visit [billing overview](https://learn.microsoft.com/azure/developer/intro/azure-developer-billing). + +## Troubleshooting + +Q: I visited the service endpoint listed, and I'm seeing a blank page, a generic welcome page, or an error page. + +A: Your service may have failed to start, or it may be missing some configuration settings. To investigate further: + +1. Run `azd show`. Click on the link under "View in Azure Portal" to open the resource group in Azure Portal. +2. Navigate to the specific Container App service that is failing to deploy. +3. Click on the failing revision under "Revisions with Issues". +4. Review "Status details" for more information about the type of failure. +5. Observe the log outputs from Console log stream and System log stream to identify any errors. +6. If logs are written to disk, use *Console* in the navigation to connect to a shell within the running container. + +For more troubleshooting information, visit [Container Apps troubleshooting](https://learn.microsoft.com/azure/container-apps/troubleshooting). + +### Additional information + +For additional information about setting up your `azd` project, visit our official [docs](https://learn.microsoft.com/azure/developer/azure-developer-cli/make-azd-compatible?pivots=azd-convert). From d11f0508e67da387999031f129b6c52d4c44e363 Mon Sep 17 00:00:00 2001 From: Christopher Harrison Date: Mon, 9 Mar 2026 16:42:48 -0700 Subject: [PATCH 3/5] Reset actions-workshop content to main, remove .dev/ and PLAN.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Revert content/github-actions/2-code-scanning.md to main (remove UI text changes) - Remove orphaned content/shared-images/setup-secret-protection.png - Remove .dev/ sandbox tooling (not needed for this PR) - Remove root PLAN.md planning artifact Path updates in actions content (server/ → app/server/, client/ → app/client/) are unchanged as they were already correct. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .dev/Dockerfile.sandbox | 19 ---- .dev/sandbox.json | 8 -- .dev/start-copilot-sandbox.sh | 72 ------------- PLAN.md | 95 ------------------ content/github-actions/2-code-scanning.md | 10 +- .../shared-images/setup-secret-protection.png | Bin 33970 -> 0 bytes 6 files changed, 5 insertions(+), 199 deletions(-) delete mode 100644 .dev/Dockerfile.sandbox delete mode 100644 .dev/sandbox.json delete mode 100755 .dev/start-copilot-sandbox.sh delete mode 100644 PLAN.md delete mode 100644 content/shared-images/setup-secret-protection.png diff --git a/.dev/Dockerfile.sandbox b/.dev/Dockerfile.sandbox deleted file mode 100644 index 2794c3c..0000000 --- a/.dev/Dockerfile.sandbox +++ /dev/null @@ -1,19 +0,0 @@ -FROM docker/sandbox-templates:copilot - -USER root - -# Python dependencies for Flask API server -RUN apt-get update && apt-get install -y --no-install-recommends \ - python3-flask \ - python3-sqlalchemy \ - python3-flask-sqlalchemy \ - && rm -rf /var/lib/apt/lists/* - -# Playwright browsers and OS dependencies -RUN mkdir -p /usr/local/share/npm-global/lib && npx playwright install --with-deps chromium - -USER agent - -# Pre-install Node.js dependencies on native ext4 -COPY --chown=agent:agent app/client/package.json app/client/package-lock.json /home/agent/project-deps/ -RUN cd /home/agent/project-deps && npm ci diff --git a/.dev/sandbox.json b/.dev/sandbox.json deleted file mode 100644 index 40c79c7..0000000 --- a/.dev/sandbox.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "image_name": "pets-workshop-sandbox", - "watch_files": [ - "app/client/package.json", - "app/client/package-lock.json", - "app/server/requirements.txt" - ] -} diff --git a/.dev/start-copilot-sandbox.sh b/.dev/start-copilot-sandbox.sh deleted file mode 100755 index 67ed8e8..0000000 --- a/.dev/start-copilot-sandbox.sh +++ /dev/null @@ -1,72 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" -REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" -CONFIG_FILE="$SCRIPT_DIR/sandbox.json" -DOCKERFILE="$SCRIPT_DIR/Dockerfile.sandbox" - -cd "$REPO_ROOT" - -if [ ! -f "$CONFIG_FILE" ]; then - echo "Error: sandbox.json not found in $SCRIPT_DIR" >&2 - exit 1 -fi - -# Read config from sandbox.json -IMAGE_NAME=$(python3 -c "import json; print(json.load(open('$CONFIG_FILE'))['image_name'])") -mapfile -t WATCH_FILES < <(python3 -c " -import json -for f in json.load(open('$CONFIG_FILE')).get('watch_files', []): - print(f) -") -WATCH_FILES+=("$DOCKERFILE") - -needs_build() { - # Build if image doesn't exist - if ! docker image inspect "$IMAGE_NAME" &>/dev/null; then - echo "Image '$IMAGE_NAME' not found." - return 0 - fi - - # Get image creation timestamp - image_time=$(docker image inspect "$IMAGE_NAME" --format '{{.Created}}') - image_epoch=$(date -d "$image_time" +%s 2>/dev/null || date -jf "%Y-%m-%dT%H:%M:%S" "${image_time%%.*}" +%s 2>/dev/null) - - # Check if any watched files are newer than the image - for f in "${WATCH_FILES[@]}"; do - if [ -f "$f" ]; then - file_epoch=$(stat -c %Y "$f" 2>/dev/null || stat -f %m "$f" 2>/dev/null) - if [ "$file_epoch" -gt "$image_epoch" ]; then - echo "Rebuild needed: '$f' is newer than image." - return 0 - fi - fi - done - - echo "Image '$IMAGE_NAME' is up to date." - return 1 -} - -REBUILT=false -if needs_build; then - echo "Building sandbox image..." - docker build -t "$IMAGE_NAME" -f "$DOCKERFILE" . - echo "Build complete." - REBUILT=true -fi - -echo "Starting Copilot sandbox..." - -# If sandbox already exists and image was rebuilt, remove the old sandbox -if [ "$REBUILT" = true ] && docker sandbox ls 2>/dev/null | grep -q "copilot"; then - echo "Removing old sandbox to apply new image..." - docker sandbox rm copilot 2>/dev/null || true -fi - -# Use --template only when sandbox doesn't exist yet -if docker sandbox ls 2>/dev/null | grep -q "copilot"; then - exec docker sandbox run copilot -else - exec docker sandbox run --template "$IMAGE_NAME" copilot "$REPO_ROOT" -fi diff --git a/PLAN.md b/PLAN.md deleted file mode 100644 index 807fa92..0000000 --- a/PLAN.md +++ /dev/null @@ -1,95 +0,0 @@ -# Plan: Simplify Client App — Pure Astro, Remove Svelte - -## Problem Statement - -The client app is more complex than necessary: - -1. **Svelte is unnecessary** — Both Svelte components (`DogList.svelte`, `DogDetails.svelte`) have zero client-side interactivity (no state changes, no event handlers, just data display and `` links). They can be simple Astro components. -2. **Unnecessary client-side data fetching** — Components fetch data client-side via `fetch('/api/...')`, even though Astro is configured for SSR and can fetch server-side in page frontmatter -3. **Middleware API proxy adds complexity** — The middleware intercepts `/api/` requests and proxies them to Flask. With server-side fetching in Astro, this layer is unnecessary -4. **Dead dependencies** — `autoprefixer`, `postcss` (Tailwind v4 handles this), `flask-cors` (no cross-origin requests with SSR) -5. **Unused assets & redundant code** — Starter template leftovers, duplicate imports, placeholder comments - -## Proposed Approach - -Remove Svelte entirely. Convert Svelte components to Astro components. Fetch data server-side in Astro page frontmatter. Remove the middleware proxy, dead dependencies, and unused files. - -## Todos - -### 1. Convert `DogList.svelte` → `DogList.astro` -- **Delete**: `client/src/components/DogList.svelte` -- **Create**: `client/src/components/DogList.astro` -- Accept `dogs` array via `Astro.props` -- Render the same HTML grid of dog cards (pure template, no JS) - -### 2. Convert `DogDetails.svelte` → `DogDetails.astro` -- **Delete**: `client/src/components/DogDetails.svelte` -- **Create**: `client/src/components/DogDetails.astro` -- Accept `dog` object via `Astro.props` -- Render the same HTML dog detail card (pure template, no JS) - -### 3. Update `index.astro` — server-side data fetching -- **File**: `client/src/pages/index.astro` -- Fetch dogs list from Flask in frontmatter (`API_SERVER_URL/api/dogs`) -- Pass data to `DogList.astro` as props -- Handle error states in the page -- Remove `global.css` import (already in Layout) - -### 4. Update `[id].astro` — server-side data fetching -- **File**: `client/src/pages/dog/[id].astro` -- Fetch dog details from Flask in frontmatter (`API_SERVER_URL/api/dogs/{id}`) -- Pass data to `DogDetails.astro` as props -- Handle 404 / error states -- Remove redundant `export const prerender = false` and unused `props` variable - -### 5. Remove the API proxy middleware -- **Delete**: `client/src/middleware.ts` - -### 6. Remove Svelte from the project -- **File**: `client/astro.config.mjs` — Remove Svelte integration and duplicate vite plugin -- **Delete**: `client/svelte.config.js` -- **File**: `client/package.json` — Remove `svelte`, `@astrojs/svelte` - -### 7. Remove dead dependencies -- **File**: `client/package.json` — Remove `autoprefixer`, `postcss` (Tailwind v4 + Vite handles CSS natively) -- **File**: `server/requirements.txt` — Remove `flask-cors` (no cross-origin with SSR) - -### 8. Remove unused assets -- **Delete**: `client/src/assets/astro.svg`, `client/src/assets/background.svg` (starter template leftovers, not referenced anywhere) - -### 9. Clean up minor issues -- **Eliminate `global.css`** — It only contains `@import "tailwindcss"`. Move this into the `