mirror of
https://github.com/coder/registry.git
synced 2026-06-02 20:48:14 +00:00
182e5548e2
## Description Update MAINTAINER.md to include a check of the version label on the PRs ## Type of Change - [ ] New module - [ ] Bug fix - [ ] Feature/enhancement - [x] Documentation - [ ] Other
146 lines
4.1 KiB
Markdown
146 lines
4.1 KiB
Markdown
# Maintainer Guide
|
|
|
|
Quick reference for maintaining the Coder Registry repository.
|
|
|
|
## Setup
|
|
|
|
Install Go for README validation:
|
|
|
|
```bash
|
|
# macOS
|
|
brew install go
|
|
|
|
# Linux
|
|
sudo apt install golang-go
|
|
```
|
|
|
|
## Reviewing a PR
|
|
|
|
Check that PRs have:
|
|
|
|
- [ ] All required files (`main.tf`, `README.md`, at least one `.tftest.hcl`)
|
|
- [ ] Proper frontmatter in README
|
|
- [ ] Working tests (`terraform test`)
|
|
- [ ] Formatted code (`bun run fmt`)
|
|
- [ ] Avatar image for new namespaces (`avatar.png` or `avatar.svg` in `.images/`)
|
|
- [ ] Version label: `version:patch`, `version:minor`, or `version:major`
|
|
|
|
### Version Guidelines
|
|
|
|
When reviewing PRs, ensure the version change follows semantic versioning:
|
|
|
|
- **Patch** (1.2.3 → 1.2.4): Bug fixes
|
|
- **Minor** (1.2.3 → 1.3.0): New features, adding inputs
|
|
- **Major** (1.2.3 → 2.0.0): Breaking changes (removing inputs, changing types)
|
|
|
|
PRs should clearly indicate the intended version change (e.g., `v1.2.3 → v1.2.4`) and include the appropriate label: `version:patch`, `version:minor`, or `version:major`.
|
|
The “Version Bump” CI uses this label to validate required updates (README version refs, etc.).
|
|
|
|
### Validate READMEs
|
|
|
|
```bash
|
|
go build ./cmd/readmevalidation && ./readmevalidation
|
|
```
|
|
|
|
## Making a Release
|
|
|
|
### Automated Tag and Release Process
|
|
|
|
After merging a PR, use the automated script to create and push release tags:
|
|
|
|
**Prerequisites:**
|
|
|
|
- Ensure all module versions are updated in their respective README files (the script uses this as the source of truth)
|
|
- Make sure you have the necessary permissions to push tags to the repository
|
|
|
|
**Steps:**
|
|
|
|
1. **Checkout the merge commit:**
|
|
|
|
```bash
|
|
git checkout MERGE_COMMIT_ID
|
|
```
|
|
|
|
2. **Run the tag release script:**
|
|
|
|
```bash
|
|
./scripts/tag_release.sh
|
|
```
|
|
|
|
3. **Review and confirm:**
|
|
- The script will automatically scan all modules in the registry
|
|
- It will detect which modules need version bumps by comparing README versions to existing tags
|
|
- A summary will be displayed showing which modules need tagging
|
|
- Confirm the list is correct when prompted
|
|
|
|
4. **Automatic tagging:**
|
|
- After confirmation, the script will automatically create all necessary release tags
|
|
- Tags will be pushed to the remote repository
|
|
- The script operates on the current checked-out commit
|
|
|
|
**Example output:**
|
|
|
|
```text
|
|
🔍 Scanning all modules for missing release tags...
|
|
|
|
📦 coder/code-server: v4.1.2 (needs tag)
|
|
✅ coder/dotfiles: v1.0.5 (already tagged)
|
|
|
|
## Tags to be created:
|
|
- `release/coder/code-server/v4.1.2`
|
|
|
|
❓ Do you want to proceed with creating and pushing these release tags?
|
|
Continue? [y/N]: y
|
|
```
|
|
|
|
### Manual Process (Fallback)
|
|
|
|
If the automated script fails, you can manually tag and release modules:
|
|
|
|
```bash
|
|
# Checkout the merge commit
|
|
git checkout MERGE_COMMIT_ID
|
|
|
|
# Create and push the release tag using the version from the PR
|
|
git tag -a "release/$namespace/$module/v$version" -m "Release $namespace/$module v$version"
|
|
git push origin release/$namespace/$module/v$version
|
|
```
|
|
|
|
Example: If PR shows `v1.2.3 → v1.2.4`, use `v1.2.4` in the tag.
|
|
|
|
### Publishing
|
|
|
|
Changes are automatically published to [registry.coder.com](https://registry.coder.com) after tags are pushed.
|
|
|
|
## README Requirements
|
|
|
|
### Module Frontmatter (Required)
|
|
|
|
```yaml
|
|
display_name: "Module Name"
|
|
description: "What it does"
|
|
icon: "../../../../.icons/tool.svg"
|
|
verified: false # Optional - Set by maintainers only
|
|
tags: ["tag1", "tag2"]
|
|
```
|
|
|
|
### Namespace Frontmatter (Required)
|
|
|
|
```yaml
|
|
display_name: "Your Name"
|
|
bio: "Brief description of who you are and what you do"
|
|
avatar: "./.images/avatar.png"
|
|
github: "username"
|
|
linkedin: "https://www.linkedin.com/in/username" # Optional
|
|
website: "https://yourwebsite.com" # Optional
|
|
support_email: "you@example.com" # Optional
|
|
status: "community" # or "partner", "official"
|
|
```
|
|
|
|
## Common Issues
|
|
|
|
- **README validation fails**: Check YAML syntax, ensure h1 header after frontmatter
|
|
- **Tests fail**: Ensure Docker with `--network=host`, check Terraform syntax
|
|
- **Wrong file structure**: Use `./scripts/new_module.sh` for new modules
|
|
- **Missing namespace avatar**: Must be `avatar.png` or `avatar.svg` in `.images/` directory
|