Skip to content

Add custom recipe pack support and delete workflows to Repo Radius#12367

Draft
sk593 wants to merge 3 commits into
mainfrom
sk593-custom-types-recipe-packs
Draft

Add custom recipe pack support and delete workflows to Repo Radius#12367
sk593 wants to merge 3 commits into
mainfrom
sk593-custom-types-recipe-packs

Conversation

@sk593

@sk593 sk593 commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Description

Extends the Repo Radius GitHub Actions workflow templates (.github/extension/) in two ways:

1. Custom types + recipe packs on deploy

The shared apply-custom-recipe-packs composite action, wired into both deploy provider workflows after the environment/recipe-pack is created:

  • Registers custom resource types from .radius/custom-types.yaml via rad resource-type create --from-file (skipped if absent).
  • Deploys .radius/custom-recipe-pack.bicep (skipped if absent).
  • Runs rad recipe-pack list and rad env update <env> --recipe-packs <all pack ids> --preview so the environment references both the default provider pack and the custom pack.

Both files are optional and independent.

2. Delete application / environment workflows

New workflows to delete a Radius application or environment on the same ephemeral k3d control plane the deploy flow uses:

  • delete-application.yml / delete-environment.yml — thin dispatchers that detect the provider (AZURE_CLIENT_ID / AWS_ROLE_ARN) and call the matching reusable provider workflow.
  • delete-azure.yml / delete-aws.yml — reusable provider workflows that reuse the deploy provider setup (OIDC login, cluster connect, cloud OIDC token projection, rad credential register), restore persisted state, delete, then persist the updated state again. They skip the deploy-only stages (create env, deploy recipe pack, registry creds).
  • actions/delete-resource — shared composite action running rad app delete/rad env delete <name> --yes --preview, writing a rad-delete-result JSON artifact.

Restoring state first (rad startup) lets the delete see the environment, recipe packs, resources, and Terraform state; rad shutdown (if: always() in teardown) persists the post-delete state so the next operation plans against it.

The --preview fix

rad env update, rad app delete, and rad env delete default to the legacy implementation and only use the Radius.Core surface when --preview is passed. All Radius.Core commands in these workflows now pass --preview — including the rad env update --recipe-packs call, which previously silently no-oped.

Docs

  • .github/extension/README.md — documents the delete workflows and the delete-resource action.
  • eng/design-notes/environments/2026-06-repo-radius-deploy-workflow.md — custom-types/recipe-pack subsection and a new delete-workflows section.
  • New radius-delete skill; radius-deploy skill updated for custom types.

Type of change

This pull request adds a new feature to Radius.

Validation

  • All new YAML parses (yaml.safe_load); embedded bash passes bash -n.
  • delete-resource script smoke-tested with a mocked rad: success, unsupported type, empty name, and command-failure paths all produce the correct exit code and artifact JSON.

Deploy any *recipe-pack*.bicep files in the app's .radius/ folder, then
list all recipe packs and update the environment to reference all of
them via rad env update --recipe-packs. Provider-agnostic logic lives in
a new shared apply-custom-recipe-packs composite action wired into both
the Azure and AWS workflows.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@github-actions

Copy link
Copy Markdown

This PR requires exactly 1 of the following labels: pr:standard, pr:important.
Currently applied labels: .

Label descriptions:

  • pr:important - Major features, breaking changes, deprecations, or other high-impact changes that need special attention during release.
  • pr:standard - Ongoing maintenance, minor improvements, documentation updates, and routine development work.

@sk593, please add the appropriate label to this PR before merging.

@github-actions

Copy link
Copy Markdown

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Scanned Files

None

@codecov

codecov Bot commented Jul 10, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 53.27%. Comparing base (83520b8) to head (7794919).

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #12367      +/-   ##
==========================================
- Coverage   53.29%   53.27%   -0.03%     
==========================================
  Files         755      755              
  Lines       61678    48872   -12806     
==========================================
- Hits        32873    26035    -6838     
+ Misses      26390    20419    -5971     
- Partials     2415     2418       +3     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions

github-actions Bot commented Jul 10, 2026

Copy link
Copy Markdown

Unit Tests

    2 files  ±0    453 suites  ±0   6m 14s ⏱️ - 1m 14s
5 783 tests ±0  5 781 ✅ ±0  2 💤 ±0  0 ❌ ±0 
6 984 runs  ±0  6 982 ✅ ±0  2 💤 ±0  0 ❌ ±0 

Results for commit 7794919. ± Comparison against base commit 83520b8.

♻️ This comment has been updated with latest results.

Register custom resource types from .radius/custom-types.yaml via
rad resource-type create --from-file before deploying the recipe pack,
and use the fixed .radius/custom-recipe-pack.bicep filename instead of a
glob. Each file is optional and independent.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@github-actions

Copy link
Copy Markdown

Functional Tests - statestore-noncloud

1 tests  ±0   0 ✅  - 1   2m 33s ⏱️ -46s
1 suites ±0   0 💤 ±0 
1 files   ±0   1 ❌ +1 

For more details on these failures, see this check.

Results for commit 7794919. ± Comparison against base commit 83520b8.

…view

Add Repo Radius workflows to delete a Radius application or environment on
the same ephemeral k3d control plane the deploy flow uses. Two thin
dispatchers (delete-application.yml, delete-environment.yml) detect the
provider and call reusable provider workflows (delete-azure.yml,
delete-aws.yml), which restore persisted state, delete via the shared
delete-resource composite action, and persist the updated state again.

delete-resource runs `rad app delete`/`rad env delete <name> --yes
--preview` and writes a rad-delete-result artifact. `--preview` is required
so these commands use the Radius.Core surface instead of the legacy path;
apply the same fix to the `rad env update --recipe-packs` call.

Document the delete workflows in the extension README, the deploy design
note, and a new radius-delete skill.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@sk593 sk593 changed the title Add custom recipe pack support to run-rad-commands workflows Add custom recipe pack support and delete workflows to Repo Radius Jul 13, 2026
@radius-functional-tests

radius-functional-tests Bot commented Jul 13, 2026

Copy link
Copy Markdown

Radius functional test overview

🔍 Go to test action run

Click here to see the test run details
Name Value
Repository radius-project/radius
Commit ref 38ef80d
Unique ID funcdf6122dcdf
Image tag pr-funcdf6122dcdf
  • Dapr: 1.14.4
  • Azure KeyVault CSI driver: 1.4.2
  • Azure Workload identity webhook: 1.3.0
  • Bicep recipe location ghcr.io/radius-project/dev/test/testrecipes/test-bicep-recipes/<name>:pr-funcdf6122dcdf
  • Terraform recipe location http://tf-module-server.radius-test-tf-module-server.svc.cluster.local/<name>.zip (in cluster)
  • applications-rp test image location: ghcr.io/radius-project/dev/applications-rp:pr-funcdf6122dcdf
  • dynamic-rp test image location: ghcr.io/radius-project/dev/dynamic-rp:pr-funcdf6122dcdf
  • controller test image location: ghcr.io/radius-project/dev/controller:pr-funcdf6122dcdf
  • ucp test image location: ghcr.io/radius-project/dev/ucpd:pr-funcdf6122dcdf
  • deployment-engine test image location: ghcr.io/radius-project/deployment-engine:latest

Test Status

⌛ Building Radius and pushing container images for functional tests...
✅ Container images build succeeded
⌛ Publishing Bicep Recipes for functional tests...
✅ Recipe publishing succeeded
⌛ Starting corerp-cloud functional tests...
⌛ Starting ucp-cloud functional tests...
✅ ucp-cloud functional tests succeeded
✅ corerp-cloud functional tests succeeded

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant