KeeperCheky utiliza un workflow unificado inspirado en Jellyseerr, que combina semantic-release y construcción de imágenes Docker en un solo pipeline.
graph LR
A[Push a develop/stable] --> B[Semantic Release]
B --> C{¿Nueva versión?}
C -->|No| D[Fin]
C -->|Sí| E[Crear CHANGELOG.md]
E --> F[Crear commit chore]
F --> G[Crear tag Git]
G --> H[Push tag + commit]
H --> I[Build Docker]
I --> J[Push a GHCR]
J --> K[Notificación]
KeeperCheky utiliza 3 workflows principales para gestionar CI/CD:
.github/workflows/ci.yml)Propósito: Validaciones rápidas para Pull Requests y pushes a ramas
Se ejecuta en:
develop o stabledevelop o stableJobs en paralelo:
go fmt -s -l . (formato)go vet ./... (análisis estático)go test -v -race -coverprofile=coverage.out ./...CGO_ENABLED=1 go build -o bin/keepercheky ./cmd/serverBeneficios:
.github/workflows/release.yml)Propósito: Gestionar releases automáticos y construcción de imágenes
.github/workflows/release.ymlEl workflow se activa en:
develop → genera versiones 1.0.0-dev.Xstable → genera versiones 1.0.0CHANGELOG.md actualizadochore(release): X.Y.ZvX.Y.Znew_release_published: true/falsenew_release_version: 1.0.0-dev.1new_release_git_tag: v1.0.0-dev.1new_release_published == 'true'linux/amd64, linux/arm64)1.0.0-dev.1:
ghcr.io/carcheky/keepercheky:1.0.0-dev.1ghcr.io/carcheky/keepercheky:develop1.0.0:
ghcr.io/carcheky/keepercheky:1.0.0ghcr.io/carcheky/keepercheky:1.0ghcr.io/carcheky/keepercheky:1ghcr.io/carcheky/keepercheky:latestghcr.io/carcheky/keepercheky:stable.github/workflows/docker-build.yml)Propósito: Construcción directa de imágenes Docker desde tags
Se ejecuta en:
v* (ej: v1.0.0, v2.1.0-dev.3)Jobs:
linux/amd64, linux/arm64)Uso típico:
release.yml ya construye imágenesNota: Este workflow es complementario a release.yml. En flujo normal, las imágenes se construyen vía release.yml.
develop (pre-release)Versión: 1.0.0-dev.1
Tags Docker:
- 1.0.0-dev.1
- develop
stable (producción)Versión: 1.0.0
Tags Docker:
- 1.0.0
- 1.0
- 1
- latest
- stable
El workflow usa Conventional Commits:
| Tipo | Release | Descripción |
|---|---|---|
feat |
minor | Nueva funcionalidad |
fix |
patch | Corrección de bug |
perf |
patch | Mejora de rendimiento |
refactor |
patch | Refactorización de código |
docs |
- | Documentación |
chore |
- | Mantenimiento |
test |
- | Tests |
BREAKING |
major | Cambio incompatible |
# Nueva funcionalidad (minor: 1.0.0 → 1.1.0)
git commit -m "feat(sync): add intelligent torrent matching"
# Corrección de bug (patch: 1.0.0 → 1.0.1)
git commit -m "fix(ui): resolve mobile tooltip display"
# Breaking change (major: 1.0.0 → 2.0.0)
git commit -m "feat(api)!: redesign configuration structure
BREAKING CHANGE: Config file format changed from YAML to TOML"
.releaserc.json{
"branches": [
{ "name": "stable" },
{ "name": "develop", "prerelease": "dev" }
],
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
"@semantic-release/changelog",
"@semantic-release/git",
"@semantic-release/github"
]
}
GITHUB_TOKEN: Automático (GitHub Actions)PAT_TOKEN: Personal Access Token (opcional, para bypass de protecciones)git checkout develop
git pull
echo "test" > test.txt
git add test.txt
git commit -m "feat(test): add test feature"
git push origin develop
Resultado esperado:
1.0.0-dev.1 (o siguiente)v1.0.0-dev.1ghcr.io/carcheky/keepercheky:1.0.0-dev.1 + developgit commit -m "fix(test): correct test issue"
git push origin develop
Resultado esperado:
1.0.0-dev.2 (incremento de prerelease)ghcr.io/carcheky/keepercheky:1.0.0-dev.2 + developgit commit -m "docs: update README"
git push origin develop
Resultado esperado:
https://github.com/carcheky/keepercheky/actions
https://github.com/carcheky/keepercheky/releases
https://github.com/carcheky/keepercheky/pkgs/container/keepercheky
chore(release): (filtro automático)docs, chore, test no generan releasesbuild-and-push.releaserc.jsonLos workflows fueron reorganizados para optimizar CI/CD:
release.yml: Gestiona releases automáticos con semantic-release
develop y stabledocker-build.yml: Construcción directa de Docker (solo tags)
v*)ci.yml: Validaciones para Pull Requests
Estos workflows están disponibles como referencia pero no se ejecutarán:
semantic-release.yml.olddocker-build.yml.oldÚltima actualización: 2025-11-01 Versión workflow: 2.0.0