-
Notifications
You must be signed in to change notification settings - Fork 1
Closed
Description
Overview
Currently, all releases are deployed to a single PackageCloud repository (alpacax/alpamon).
To better manage development/test versions separately from production versions,
we need to implement a channel-based deployment system.
Current Situation
- All tags are deployed to a single
alpacax/alpamonrepository - Pre-release tags (
-rc,-beta,-dev, etc.) are not being used - Users cannot distinguish between development and stable versions when installing
Proposed Changes
Channel Structure
| Channel | PackageCloud Repository | Tag Pattern | Purpose |
|---|---|---|---|
| stable | alpacax/alpamon |
v1.2.3 |
Production releases |
| latest | alpacax/alpamon-latest |
v1.2.3-rc.N |
Release candidates (RC) |
| dev | alpacax/alpamon-dev |
v1.2.3-dev, v1.2.3-beta.N, v1.2.3-alpha.N |
Development/test builds |
Tag Naming Convention
| Tag Format | Channel | Example |
|---|---|---|
vX.Y.Z |
stable | v1.3.0 |
vX.Y.Z-rc.N |
latest | v1.3.0-rc.1 |
vX.Y.Z-beta.N |
dev | v1.3.0-beta.1 |
vX.Y.Z-alpha.N |
dev | v1.3.0-alpha.1 |
vX.Y.Z-dev |
dev | v1.3.0-dev |
Implementation Tasks
Prerequisites (Manual)
- Create
alpamon-devrepository on PackageCloud - Create
alpamon-latestrepository on PackageCloud
Code Changes
- Modify
.github/workflows/release.yml- Add channel detection logic to
goreleaserjob - Implement dynamic repository deployment in
packagecloud-deployjob
- Add channel detection logic to
- Add
release.prerelease: autoto.goreleaser.yaml
Implementation Details
release.yml Changes
-
Add outputs to goreleaser job
- Analyze tag pattern to determine channel and repository
- Pass
channel,repo,tagviaoutputs
-
Modify packagecloud-deploy job
- Use
needs.goreleaser.outputs.repofor dynamic repository targeting - Maintain existing matrix strategy
- Use
Channel Detection Logic
if [[ "$TAG" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
# Stable version -> stable
REPO="alpamon"
elif [[ "$TAG" =~ ^[0-9]+\.[0-9]+\.[0-9]+-rc ]]; then
# RC version -> latest
REPO="alpamon-latest"
elif [[ "$TAG" =~ ^[0-9]+\.[0-9]+\.[0-9]+-(dev|beta|alpha) ]]; then
# Development version -> dev
REPO="alpamon-dev"
fiRelease Workflow Example
v1.3.0-dev → alpamon-dev (Initial development)
v1.3.0-alpha.1 → alpamon-dev (Alpha testing)
v1.3.0-beta.1 → alpamon-dev (Beta testing)
v1.3.0-rc.1 → alpamon-latest (RC testing)
v1.3.0 → alpamon (Production release)
Test Plan
- Create dev tag and verify deployment to
alpamon-dev - Create rc tag and verify deployment to
alpamon-latest - Create stable tag and verify deployment to
alpamon
Impact
- Existing
alpamonrepository users: No impact (remains as stable channel) - New channel subscription requires separate repository registration
Metadata
Metadata
Assignees
Labels
No labels