diff --git a/docs/assets/scss/_sidebar-tree.scss b/docs/assets/scss/_sidebar-tree.scss index 35ae89fd1..6868d7af9 100644 --- a/docs/assets/scss/_sidebar-tree.scss +++ b/docs/assets/scss/_sidebar-tree.scss @@ -64,6 +64,17 @@ } } + .sidebar-new-badge { + font-size: .6em; + } + + // When a foldable section is expanded its child links are visible, so if a + // child carries its own "New" badge, hide the parent section's badge to + // avoid showing the same "New" twice. + li:has(> ul .sidebar-new-badge) > input:checked + label .sidebar-new-badge { + display: none; + } + a { font-size: .9rem; &:hover { diff --git a/docs/content/getting-started/_index.md b/docs/content/getting-started/_index.md index b6c524b9c..1787f166e 100644 --- a/docs/content/getting-started/_index.md +++ b/docs/content/getting-started/_index.md @@ -16,6 +16,6 @@ This guide will show you how to quickly get started with Radius. You will do a b ## Organization -This guide is organized into four sequential parts. +This guide is organized into five sequential parts. {{< button text="Get started: Install Radius" page="getting-started/install-radius" >}} diff --git a/docs/content/getting-started/add-connection/_index.md b/docs/content/getting-started/add-connection/_index.md index 84005af4a..209e4b528 100644 --- a/docs/content/getting-started/add-connection/_index.md +++ b/docs/content/getting-started/add-connection/_index.md @@ -68,6 +68,6 @@ rad uninstall kubernetes --purge ## Next steps -You have installed Radius, deployed the Radius Demo application, and connected it to a PostgreSQL database. Continue with the hands-on labs for deeper, real-world scenarios. +You have installed Radius, deployed the Radius Demo application, and connected it to a PostgreSQL database. Next, use the GitHub Copilot app to model and deploy an application directly from your source code repository. -{{< button text="Next step: Explore the labs" page="getting-started/labs" >}} +{{< button text="Next step: Use the GitHub Copilot app" page="getting-started/try-github-copilot-app" >}} diff --git a/docs/content/getting-started/install-radius/_index.md b/docs/content/getting-started/install-radius/_index.md index dd116892f..a9ebbc249 100644 --- a/docs/content/getting-started/install-radius/_index.md +++ b/docs/content/getting-started/install-radius/_index.md @@ -8,7 +8,7 @@ weight: 100 In part one, you will install Radius on an existing Kubernetes cluster. -## Prerequisites +## Before you begin For this guide you only need a **Kubernetes cluster**. To install Radius, your user must have the cluster-admin role. Radius }}">supports AKS, EKS, k3d, and kind clusters. Running a local cluster with k3d or kind is recommended. diff --git a/docs/content/getting-started/labs/_index.md b/docs/content/getting-started/labs/_index.md index b4d236c16..20b88431c 100644 --- a/docs/content/getting-started/labs/_index.md +++ b/docs/content/getting-started/labs/_index.md @@ -1,9 +1,9 @@ --- type: docs -title: "4. Hands-on labs" -linkTitle: "4. Hands-on labs" +title: "5. Hands-on labs" +linkTitle: "5. Hands-on labs" description: "Hands-on, scenario-based labs for Radius" -weight: 400 +weight: 500 --- Now that you have installed Radius and deployed an application, work through the hands-on labs for deeper, real-world scenarios. Each lab is a self-contained project with source code and step-by-step instructions. diff --git a/docs/content/getting-started/try-github-copilot-app/add-radius-marketplace.png b/docs/content/getting-started/try-github-copilot-app/add-radius-marketplace.png new file mode 100644 index 000000000..d30d58f37 Binary files /dev/null and b/docs/content/getting-started/try-github-copilot-app/add-radius-marketplace.png differ diff --git a/docs/content/getting-started/try-github-copilot-app/application-graph-diff.png b/docs/content/getting-started/try-github-copilot-app/application-graph-diff.png new file mode 100644 index 000000000..8fd95bdac Binary files /dev/null and b/docs/content/getting-started/try-github-copilot-app/application-graph-diff.png differ diff --git a/docs/content/getting-started/try-github-copilot-app/choose-cloud-credentials.png b/docs/content/getting-started/try-github-copilot-app/choose-cloud-credentials.png new file mode 100644 index 000000000..e5ca2c813 Binary files /dev/null and b/docs/content/getting-started/try-github-copilot-app/choose-cloud-credentials.png differ diff --git a/docs/content/getting-started/try-github-copilot-app/connect-github-to-cloud.png b/docs/content/getting-started/try-github-copilot-app/connect-github-to-cloud.png new file mode 100644 index 000000000..4f14594b3 Binary files /dev/null and b/docs/content/getting-started/try-github-copilot-app/connect-github-to-cloud.png differ diff --git a/docs/content/getting-started/try-github-copilot-app/create-azure-credential-profile.png b/docs/content/getting-started/try-github-copilot-app/create-azure-credential-profile.png new file mode 100644 index 000000000..b0b09d266 Binary files /dev/null and b/docs/content/getting-started/try-github-copilot-app/create-azure-credential-profile.png differ diff --git a/docs/content/getting-started/try-github-copilot-app/deploy-application.png b/docs/content/getting-started/try-github-copilot-app/deploy-application.png new file mode 100644 index 000000000..10090b250 Binary files /dev/null and b/docs/content/getting-started/try-github-copilot-app/deploy-application.png differ diff --git a/docs/content/getting-started/try-github-copilot-app/deployed-application-graph.png b/docs/content/getting-started/try-github-copilot-app/deployed-application-graph.png new file mode 100644 index 000000000..8fd9d5027 Binary files /dev/null and b/docs/content/getting-started/try-github-copilot-app/deployed-application-graph.png differ diff --git a/docs/content/getting-started/try-github-copilot-app/feedback.png b/docs/content/getting-started/try-github-copilot-app/feedback.png new file mode 100644 index 000000000..bafe2ef9b Binary files /dev/null and b/docs/content/getting-started/try-github-copilot-app/feedback.png differ diff --git a/docs/content/getting-started/try-github-copilot-app/index.md b/docs/content/getting-started/try-github-copilot-app/index.md new file mode 100644 index 000000000..46daaa24f --- /dev/null +++ b/docs/content/getting-started/try-github-copilot-app/index.md @@ -0,0 +1,174 @@ +--- +type: docs +title: "4. Use the GitHub Copilot app" +linkTitle: "4. Use the GitHub Copilot app" +weight: 400 +description: "Install the Radius plugin and use it to model, visualize, and deploy an application in the GitHub Copilot app" +hide_preview_release_banner: true +aliases: + - /integrations/github-copilot-app/canvas-extension/ +--- + +{{% alert title="Preview Release" color="warning" %}} +Radius integration with the GitHub Copilot app is a preview release. It is only compatible with **containerized applications deployed to Azure**. +{{% /alert %}} + +In this guide, you will install the Radius plugin for the GitHub Copilot app and use it to model, visualize, and deploy a containerized application to Azure, all from within the app. + +The Radius integration with the GitHub Copilot app is completely self-contained and separate from a standalone Radius installation. It runs Radius operations as GitHub Actions workflows in your repository. If you installed Radius on a Kubernetes cluster in the previous pages of this Getting Started guide, this integration does not use that control plane. You do not need a local `rad` installation or an existing Radius control plane to complete this guide. + +## Before you begin + +Make sure you have: + +- The latest version of the [GitHub Copilot app](https://docs.github.com/en/copilot/concepts/agents/github-copilot-app). +- An Azure subscription. +- An [Azure Kubernetes Service (AKS) cluster](https://learn.microsoft.com/azure/aks/learn/quick-kubernetes-deploy-cli). +- The [Azure CLI](https://learn.microsoft.com/cli/azure/install-azure-cli). Run [`az login`](https://learn.microsoft.com/cli/azure/authenticate-azure-cli-interactively) before you begin. +- The [GitHub CLI](https://cli.github.com/). Run [`gh auth login`](https://cli.github.com/manual/gh_auth_login) with package and workflow access before you begin: + + ```bash + gh auth login --scopes read:packages,write:packages,workflow + ``` + +- A GitHub repository with a containerized application. You must own the repository or have write access to it. Fork the repository if necessary. + +### Sample repositories + +You can use your own application or fork one of these open-source samples: + +- [Docker Example Voting App](https://github.com/dockersamples/example-voting-app) +- [Docker Todo List App](https://github.com/dockersamples/todo-list-app) +- [AKS Store Demo](https://github.com/Azure-Samples/aks-store-demo) +- [Spring Petclinic Microservices](https://github.com/spring-petclinic/spring-petclinic-microservices) +- [Google Cloud Microservices Demo](https://github.com/GoogleCloudPlatform/microservices-demo) + +## Step 1: Install the plugin + +1. Open the GitHub Copilot app. +2. Open **Settings** in the bottom-left corner, and then select **Plugins**. +3. Select the dropdown next to **Install**, and then select **Add marketplace**. + + {{< image src="open-add-marketplace-menu.png" alt="Plugins settings with the Install menu open and Add marketplace selected" width=800px >}} + +4. Enter the following under **Add marketplace**: + + ```text + radius-project/ai-extensions + ``` + + {{< image src="add-radius-marketplace.png" alt="Add marketplace dialog with radius-project/ai-extensions entered as the marketplace source" width=800px >}} + +5. Expand the **`radius-plugins`** marketplace and install the `radius-edge` plugin. + + {{< image src="install-radius-plugin.png" alt="Radius plugins marketplace showing the radius-edge plugin available to install" width=700px >}} + +6. Restart your Copilot session so the skills and the Radius Canvas extension become available. + +## Step 2: Model your Application + +1. Create a new Copilot session. Select **GitHub repository**, and then add the repository you want to model. + + {{< image src="select-github-repository.png" alt="GitHub Copilot app menu for starting a session from a GitHub repository" width=500px class="d-block mb-4" >}} + +2. In the chat, type: + + ```text + Show me the application graph + ``` + + Copilot analyzes your source code, manifests, and Dockerfiles, identifies your workloads and their dependencies, and generates an application definition. It writes the definition to `.radius/app.bicep` in your repository, creating the `.radius/` directory if it does not already exist. The Radius panel opens and renders the definition as an interactive Application graph. + + The **Modeled** view visualizes the generated application definition `.radius/app.bicep` file. The graph represents the workloads, routes, backing services, and connections Radius identified in the repository. Select a resource on the graph and **View source code** to open the file where Radius detected the service or dependency. + +## Step 3: Configure your Environment + +An Environment defines where your Application is deployed to. + +1. Select **Create Environment** next to the **Modeled** graph to begin configuring the Environment and planning the deployment. + +2. Under **Choose Cloud credentials**, open the credential profile dropdown, and then select **Create new profile**. A credential profile is a reusable, named set of cloud credentials—the provider, Azure tenant, and subscription—that Radius uses to authenticate to your cloud and establish OIDC trust with GitHub Actions. + + {{< image src="choose-cloud-credentials.png" alt="Choose cloud credentials step with the option to create a credential profile" width=800px class="d-block mb-4" >}} + +3. Enter a profile name, select **Azure** as the provider, enter your Azure tenant ID and subscription, then click **Verify credentials**. + + {{< image src="create-azure-credential-profile.png" alt="Create Credential Profile form for an Azure tenant and subscription" width=800px class="d-block mb-4" >}} + +4. After verification succeeds, select **Save and continue**. +5. Enter a name for the Environment and select the GitHub account and the saved credential profile under **Connect GitHub to a cloud**. + + {{< image src="connect-github-to-cloud.png" alt="Create Environment form connecting a GitHub account to an Azure credential profile" width=800px >}} + +6. Under **Deploy identity**, the Microsoft Entra app registration name is already populated. +7. Under **Infrastructure**, select the Azure resource group and AKS cluster. Select an existing Kubernetes namespace or enter a new namespace. +8. Select **Create the Environment**. Radius then configures OIDC authentication between GitHub Actions and Azure. + +## Step 4: Plan the deployment + +When the Environment configuration is complete, the panel displays the **Planned** graph view. + +1. Confirm that the correct Application, branch, and Environment are selected. + + {{< image src="planned-application-graph.png" alt="Radius Canvas Planned graph showing application workloads and supporting infrastructure" width=800px class="d-block mb-4" >}} + +2. Review the Planned graph to verify that it includes the expected Application resources, connections, and supporting infrastructure for the selected Environment. +3. Select any resource on the graph to see additional details, such as its Radius resource type, its connections to other resources, and links to **View source code** where the resource is defined in your repository or **View app definition** to open its entry in `.radius/app.bicep`. + +## Step 5: Deploy your Application + +Select **Deploy Application** and the **Deployments** panel opens, where you can monitor deployment progress and open the GitHub Actions workflow run for more details. Radius dispatches a GitHub Actions workflow run that deploys the Application to the selected Environment and provisions the required infrastructure. The workflow is committed to your repository, so you review it before it runs and maintain it alongside your Application code. + +{{< image src="deploy-application.png" alt="Deployments view for selecting an Application, Environment, and branch to deploy" width=800px class="d-block mb-4" >}} + +When the deployment completes, return to the Application graph and open the **Deployed** view to see the Application and its resources running in the Environment. + +{{< image src="deployed-application-graph.png" alt="Deployed view of the application graph" width=800px >}} + +## Step 6: Access your Application + +In the Copilot chat, type: + +```text +Access my deployed application +``` + +Copilot sets up port forwarding and provides a URL to access the deployed Application. + +## Step 7: Compare Application changes + +Make changes to your Application on a branch, and then open the **Diff** view to compare the updated Application against `main`. + +1. Select your Application. +2. Select `main` as the **Base** branch. +3. Select the branch containing your changes as the **Head** branch. +4. Review which components, connections, and dependencies your changes add, remove, or modify. + +You can generate a Markdown summary of the graph diff and post it as part of a pull request comment, so reviewers can see the architectural impact alongside the code. + +{{< image src="application-graph-diff.png" alt="Radius Canvas Diff view comparing application resources and connections between two branches" width=800px >}} + + +## Step 8: Clean up + +1. In the **Deployments** view, select **Delete Deployment**, and then confirm the deletion. +2. Monitor the deletion workflow until it completes. Radius deletes the Application and the infrastructure resources. +3. If you no longer need the Radius Environment, open the **Environments** view and delete it. + +Deleting the Radius deployment or Environment does not delete the AKS cluster or Azure resource group. + +## Troubleshooting + +If the Radius panel does not open, ask Copilot to `Fix my Radius extension`. This invokes the Radius repair skill, which copies the required Radius Canvas extension files into place. + +## Report bugs and feedback + +Submit bugs and feedback with the [feedback or bug report form](https://github.com/radius-project/ai-extensions/issues/new?template=feedback-or-bug-report.yml). You can also open the form from the feedback button in the bottom right corner of the panel. + +{{< image src="feedback.png" alt="Feedback button in the canvas extension" width=250px >}} + +## Next steps + +You have modeled, deployed, and inspected an application with the GitHub Copilot app. Continue with the hands-on labs for deeper, real-world scenarios. + +{{< button text="Next step: Explore the labs" page="getting-started/labs" >}} diff --git a/docs/content/getting-started/try-github-copilot-app/install-radius-plugin.png b/docs/content/getting-started/try-github-copilot-app/install-radius-plugin.png new file mode 100644 index 000000000..8dded2d64 Binary files /dev/null and b/docs/content/getting-started/try-github-copilot-app/install-radius-plugin.png differ diff --git a/docs/content/getting-started/try-github-copilot-app/modeled-application-graph.png b/docs/content/getting-started/try-github-copilot-app/modeled-application-graph.png new file mode 100644 index 000000000..2a37b9b3b Binary files /dev/null and b/docs/content/getting-started/try-github-copilot-app/modeled-application-graph.png differ diff --git a/docs/content/getting-started/try-github-copilot-app/modeled-graph-create-environment.png b/docs/content/getting-started/try-github-copilot-app/modeled-graph-create-environment.png new file mode 100644 index 000000000..b1988fc63 Binary files /dev/null and b/docs/content/getting-started/try-github-copilot-app/modeled-graph-create-environment.png differ diff --git a/docs/content/getting-started/try-github-copilot-app/open-add-marketplace-menu.png b/docs/content/getting-started/try-github-copilot-app/open-add-marketplace-menu.png new file mode 100644 index 000000000..0d13cf5cd Binary files /dev/null and b/docs/content/getting-started/try-github-copilot-app/open-add-marketplace-menu.png differ diff --git a/docs/content/getting-started/try-github-copilot-app/planned-application-graph.png b/docs/content/getting-started/try-github-copilot-app/planned-application-graph.png new file mode 100644 index 000000000..2ee4ff1bd Binary files /dev/null and b/docs/content/getting-started/try-github-copilot-app/planned-application-graph.png differ diff --git a/docs/content/getting-started/try-github-copilot-app/select-github-repository.png b/docs/content/getting-started/try-github-copilot-app/select-github-repository.png new file mode 100644 index 000000000..3ab3b30f8 Binary files /dev/null and b/docs/content/getting-started/try-github-copilot-app/select-github-repository.png differ diff --git a/docs/content/integrations/github-copilot-app/_index.md b/docs/content/integrations/github-copilot-app/_index.md new file mode 100644 index 000000000..39cf52953 --- /dev/null +++ b/docs/content/integrations/github-copilot-app/_index.md @@ -0,0 +1,55 @@ +--- +type: docs +title: "GitHub Copilot app integration" +linkTitle: "GitHub Copilot app" +weight: 1 +new_badge: true +description: "Use Radius with the GitHub Copilot app to model, visualize, and deploy applications" +hide_preview_release_banner: true +--- + +{{% alert title="Preview Release" color="warning" %}} +Radius integration with the GitHub Copilot app is a preview release. It is only compatible with **containerized applications deployed to Azure**. +{{% /alert %}} + +The Radius integration with the GitHub Copilot app helps you understand, model, and deploy applications directly from your source code repository. Ask Copilot to analyze your repository and Radius creates a model of your application that captures your workloads, dependencies, and infrastructure requirements. You can review the model visually, configure a target Environment, and plan and deploy the Application, all from within the GitHub Copilot app. + +## How Radius works with GitHub Copilot app + +The Radius integration with the GitHub Copilot app is available as the `radius` plugin, which you [install from within the GitHub Copilot app]({{< ref "/getting-started/try-github-copilot-app" >}}). The plugin brings together Radius skills, the Radius Canvas extension, and GitHub Actions workflows. + +**Radius skills** let you work with your application through natural language instructions. They help Copilot analyze the source code repository, create and update application definitions, and perform Radius operations on your behalf. + +**The Radius Canvas extension** provides the visual experience. It displays the Application graph, shows changes to the application model, previews how the Application will be deployed to an Environment, and enables you to deploy applications. + +**GitHub Actions workflows** run the Radius control plane within GitHub Actions to create Environments, verify credentials, deploy applications, and delete deployments. The Radius Canvas extension configures the Radius workflow templates for the Application and Environment, then adds the required workflow files to the application repository. + +## What you can do + +With the Radius integration for the GitHub Copilot app, you can: + +- **Model an application from an existing repository.** Radius analyzes application code and configuration to generate an application definition that captures workloads, resources, and connections. +- **Visualize the application.** Use the Radius Canvas extension to visualize workloads, resources, and connections as an Application graph along with the source code reference for each component. +- **Understand application changes.** Compare application models across branches to see how changes to the source code affect the application architecture and deployment requirements. +- **Configure the Environment.** Create and configure a Radius Environment for the application's deployment target. +- **Preview deployment infrastructure.** See the Application and supporting infrastructure Radius plans to deploy before creating cloud resources. +- **Deploy through GitHub Actions.** Generate a workflow that provisions the required infrastructure and deploys the Application. +- **View deployed applications.** Follow deployment status and inspect the Application running in the selected Environment. +- **Keep deployment artifacts with your code.** Radius artifacts are stored in the repository so the application model and deployment configuration can be versioned and reused across branches and commits. + +## From source code to deployed application + +The Radius Canvas extension takes your application through four stages: + +1. **Model:** Copilot analyzes the repository and creates an application definition in `.radius/app.bicep`. +2. **Plan:** Select an Environment to see how the application's requirements will be fulfilled for that deployment target. +3. **Deploy:** Deploy the Application and its infrastructure through GitHub Actions and view the resulting deployment in the Radius Canvas extension. +4. **Diff:** Compare application models across branches to see how changes to the source code affect the application architecture and deployment requirements. + +Because each stage uses the same application definition, the application model you review is also the model Radius uses to plan and deploy the Application. + +## Next steps + +To install the `radius` plugin and walk through modeling, planning, and deploying an application step by step, follow the hands-on guide. + +{{< button text="Get started: Use the GitHub Copilot app" page="/getting-started/try-github-copilot-app" >}} diff --git a/docs/content/management/container-platforms/_index.md b/docs/content/management/container-platforms/_index.md index 5c1ca0be0..7c82579d5 100644 --- a/docs/content/management/container-platforms/_index.md +++ b/docs/content/management/container-platforms/_index.md @@ -28,7 +28,7 @@ The rest of this guide walks through the `azure-aci` Recipe Pack, which deploys The `azure-aci` Recipe Pack provisions `Radius.Compute/containers` on Azure Container Instances, along with the `Radius.Compute/persistentVolumes` and `Radius.Security/secrets` those containers use, backed by Azure Files and Azure Key Vault. For more information on the platform itself, consult the [Azure Container Instances documentation](https://learn.microsoft.com/azure/container-instances/). To see exactly how these resources are provisioned, review the [ACI recipes in `resource-types-contrib`](https://github.com/radius-project/resource-types-contrib/tree/main/Compute/containers/recipes/azure/bicep). -### Prerequisites +### Before you begin The ACI recipes provision Azure resources, so before you use the pack you need: diff --git a/docs/layouts/_td-content-after-header.html b/docs/layouts/_td-content-after-header.html index 8977921b9..6818757a9 100644 --- a/docs/layouts/_td-content-after-header.html +++ b/docs/layouts/_td-content-after-header.html @@ -9,6 +9,8 @@ list) without editing individual Markdown files. The markup mirrors the Docsy `alert` shortcode (color="warning"). */ -}} +{{- if not .Params.hide_preview_release_banner }} +{{- end }} diff --git a/docs/layouts/partials/has-new-badge.html b/docs/layouts/partials/has-new-badge.html new file mode 100644 index 000000000..4198fcade --- /dev/null +++ b/docs/layouts/partials/has-new-badge.html @@ -0,0 +1,16 @@ +{{- /* + Returns true if the given page, or any descendant page, has `new_badge: true`. + Lets a parent section inherit a child's "New" badge without setting new_badge + on the parent itself. Called from the sidebar tree. +*/ -}} +{{- $found := .Params.new_badge | default false -}} +{{- if not $found -}} + {{- range .Pages -}} + {{- if not $found -}} + {{- if partialCached "has-new-badge.html" . .RelPermalink -}} + {{- $found = true -}} + {{- end -}} + {{- end -}} + {{- end -}} +{{- end -}} +{{- return $found -}} diff --git a/docs/layouts/partials/sidebar-tree.html b/docs/layouts/partials/sidebar-tree.html index 75278dbd3..57973afca 100644 --- a/docs/layouts/partials/sidebar-tree.html +++ b/docs/layouts/partials/sidebar-tree.html @@ -94,6 +94,12 @@ {{ end -}} {{ $withChild := gt (len $pages) 0 -}} + {{/* Show the New badge if this section is new or, for non-root sections, any + descendant is new, so a parent inherits a child's New badge. */ -}} + {{ $showNewBadge := $s.Params.new_badge | default false -}} + {{ if and (not $treeRoot) (not $showNewBadge) -}} + {{ $showNewBadge = partialCached "has-new-badge.html" $s $s.RelPermalink -}} + {{ end -}} {{ $manualLink := cond (isset $s.Params "manuallink") @@ -145,7 +151,10 @@ {{- end -}} {{- $s.LinkTitle -}} - {{- /**/ -}} + + {{- if $showNewBadge }} + New + {{- end }} {{- /**/ -}} {{- /**/ -}} {{ else -}} @@ -170,7 +179,11 @@ {{- if and $treeRoot $s.Params.sidebar_root_for site.Params.ui.sidebar_root_enabled }} td-sidebar-root-up-icon{{ end -}} "> {{- $s.LinkTitle -}} - + + {{- if $showNewBadge }} + New + {{- end }} + {{- end -}} {{ if $withChild -}} {{ $ulNr := add $ulNr 1 }} diff --git a/docs/layouts/shortcodes/image.html b/docs/layouts/shortcodes/image.html index 7300cadf9..e7d2c1ee1 100644 --- a/docs/layouts/shortcodes/image.html +++ b/docs/layouts/shortcodes/image.html @@ -1,9 +1,10 @@ {{ $imagePath := .Get "src" }} {{ $altText := .Get "alt" }} {{ $width := .Get "width" | default "600px" }} +{{ $class := .Get "class" }} {{ $image := .Page.Resources.GetMatch $imagePath }} {{ with $image }} - + {{ . }} {{ end }} diff --git a/radius.code-workspace b/radius.code-workspace new file mode 100644 index 000000000..c2b8866ab --- /dev/null +++ b/radius.code-workspace @@ -0,0 +1,14 @@ +{ + "folders": [ + { + "path": "../ai-extensions" + }, + { + "path": "../blog" + }, + { + "path": "." + } + ], + "settings": {} +} \ No newline at end of file