rdev/internal/domain/credential.go
jordan adcea2fc1f
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
fix(templates): upgrade Go to 1.25 and fix Woodpecker syntax
## Template Version Alignment
- Go: 1.23 → 1.25 across all templates (go.work, go.mod, Dockerfiles, CI)
- Alpine: latest → 3.19 (explicit version pinning)
- Woodpecker: failure:retry → failure:ignore (invalid syntax fix)

## SDLC Tree Fixes (slackpath-5-full-lifecycle)
Fixed merge failures by correcting lifecycle flow:

1. **Branch Creation**: Added missing create-branch step (planned → ready)
   - Bug: Merge command requires feature.Branch field to be set
   - Fix: POST /projects/{id}/sdlc/features/{slug}/branch

2. **Artifact Status**: Changed approval to pass for execution artifacts
   - Bug: Review/audit/QA need status="passed" not "approved"
   - Fix: /artifacts/{type}/approve → /artifacts/{type}/pass
   - Added: pass-qa step after wait-qa

3. **Phase Transition Order**: Reordered merge phase transition
   - Bug: Merge command checks if phase == "merge" first
   - Fix: transition-to-merge BEFORE merge-feature (not after)

## GCS Provisioner Fix
- Replaced deprecated option.WithCredentialsFile with env var approach
- Now uses GOOGLE_APPLICATION_CREDENTIALS for ADC (Application Default Credentials)
- Avoids security risk from deprecated credential options
- Fixed test: Added ComponentTypeGCS to ValidComponentTypes test

## Critical Rules Added
- Version alignment: All template versions must stay in sync
- When updating versions, grep entire templates/ tree

## Files Changed
- 27 template files: Go version + Woodpecker syntax
- 1 tree file: SDLC lifecycle flow corrections
- 1 CLAUDE.md: Version alignment rule
- 1 GCS provisioner: Deprecated API fix
- 1 test file: Added missing component type

Root cause: Skeleton templates lagged behind Go 1.25 release and had
invalid Woodpecker syntax. SDLC tree skipped required branch creation
and used wrong artifact approval endpoints.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-08 23:57:38 -07:00

64 lines
1.7 KiB
Go

// Package domain contains core business entities.
package domain
import "time"
// Credential represents a stored secret/credential for infrastructure adapters.
// Credentials are encrypted at rest and accessed by key name.
type Credential struct {
// Key is the unique identifier (e.g., "GITEA_TOKEN", "CLOUDFLARE_API_TOKEN")
Key string
// Value is the credential value (stored encrypted in database)
Value string
// Description explains what this credential is for
Description string
// Category groups related credentials (e.g., "gitea", "cloudflare", "woodpecker")
Category string
// CreatedAt is when the credential was first stored
CreatedAt time.Time
// UpdatedAt is when the credential was last modified
UpdatedAt time.Time
// UpdatedBy tracks who last modified the credential
UpdatedBy string
}
// CredentialCategories for grouping.
const (
CredentialCategoryGitea = "gitea"
CredentialCategoryCloudflare = "cloudflare"
CredentialCategoryWoodpecker = "woodpecker"
CredentialCategoryDatabase = "database"
CredentialCategoryRegistry = "registry"
CredentialCategoryWorker = "worker"
CredentialCategoryStorage = "storage"
)
// Known credential keys.
const (
// Gitea
CredKeyGiteaToken = "GITEA_TOKEN"
CredKeyGiteaURL = "GITEA_URL"
// Cloudflare
CredKeyCloudflareAPIToken = "CLOUDFLARE_API_TOKEN"
CredKeyCloudflareZoneID = "CLOUDFLARE_ZONE_ID"
// Woodpecker
CredKeyWoodpeckerURL = "WOODPECKER_URL"
CredKeyWoodpeckerAPIToken = "WOODPECKER_API_TOKEN"
CredKeyWoodpeckerWebhookSecret = "WOODPECKER_WEBHOOK_SECRET"
// Registry
CredKeyRegistryURL = "REGISTRY_URL"
// GCS
CredKeyGCSBucket = "GCS_BUCKET"
CredKeyGCSServiceAccountJSON = "GCS_SERVICE_ACCOUNT_JSON"
)