Skip to content

Technical Design for manifest-to-bicep-extension CLI #95

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

willdavsmith
Copy link
Contributor

  • Added Technical Design for manifest-to-bicep-extension CLI

Signed-off-by: willdavsmith <willdavsmith@gmail.com>
@willdavsmith willdavsmith requested review from a team as code owners June 3, 2025 16:52
4. Update build scripts and CI/CD pipelines
5. Add tests for new functionality
6. Update documentation

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are there any installer changes?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the rad CLI installer calls rad bicep download internally, so we should be covered: https://github.com/radius-project/radius/blob/4524c1af06dddb7a2f0c24b73e2b378c2fc0ae03/deploy/install.sh#L180

#### Build System Updates

1. **GitHub Actions**: Updated workflows to install and use the binary instead of `npx`
2. Updated `radius-project/bicep-tools` repository to include the manifest-to-bicep-extension binary in releases

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Where is this binary produced? are there cross compiling concerns, new pipeline etc for producing it?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll add a section in the doc. we'll need to add a new pipeline to radius-project/bicep-tools, but it's very simple. I'll explain in the design meeting too.

- Remove the Node.js/NPM dependency from the `rad bicep publish-extension` command
- Provide a consistent binary management experience similar to the Bicep CLI
- Maintain backward compatibility with existing workflows
- Ensure the binary is automatically downloaded when needed
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need to have a way to pass in this URL for air-gapped environments.


The user experience should be exactly the same as it is today, with the following changes:
- The `rad bicep publish-extension` command will no longer require `npx` and will instead execute a native binary.
- The user will need to run `rad bicep download` to download the new `manifest-to-bicep-extension` binary, similar to how they currently download the Bicep CLI.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should accept a flag for private registries...

Copy link
Member

@brooke-hamilton brooke-hamilton left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚀
We should include details on the design and coding of the binary.


The manifest-to-bicep-extension binary is managed similarly to the Bicep CLI:

1. **Download Location**: The binary is downloaded from GitHub releases at `https://github.com/radius-project/bicep-tools/releases/latest/download/`
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is the binary something we develop, or does it exist somewhere else? If it's somewhere else, can you provide a link?

- Binary execution errors are propagated to the user
- No new telemetry is added

## Development plan
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need a step to modify and test the release process to ensure that the binary is available, as described on line 89?


The user experience should be exactly the same as it is today, with the following changes:
- The `rad bicep publish-extension` command will no longer require `npx` and will instead execute a native binary.
- The user will need to run `rad bicep download` to download the new `manifest-to-bicep-extension` binary, similar to how they currently download the Bicep CLI.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Where is this downloaded from?

- Remove `npx` CLI install from test workflows
- Use existing test cases to verify that `rad bicep publish-extension` works with the new binary

## Security
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Any impact on dependency version management?


## Compatibility

- This is a breaking change for users who rely on the NPX-based approach
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we run rad bicep download as a part of publish extension cmd?

└───────────────┘
```

### Detailed Design
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Any disadvantages of this approach compared to existing design?

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.

6 participants