Zaroz
Despliegue desde CI/CD

Despliega desde Forgejo y Gitea Actions

Forgejo y Gitea Actions leen archivos de flujo al estilo de GitHub. Lo que cambia aquí: el flujo vive en .forgejo/workflows/ (Gitea: .gitea/workflows/), el runner necesita Docker y la imagen va al registro de paquetes de tu instancia, no a GHCR.

Requisitos: un runner con la etiqueta usada en runs-on y acceso a un demonio de Docker, un Workload en marcha, el id de su instancia de servicio, el token de despliegue y zaroz-deploy.sh como deploy/zaroz-deploy.sh.

Secretos y variables

En Settings > Actions del repositorio (o de la organización):

NombreTipoValor
ZAROZ_TOKENsecretoel token de despliegue zaroz_...
ZAROZ_SERVICEvariableel UUID de la instancia de servicio
REGISTRY_HOSTvariableel host de tu instancia, por ejemplo git.example.com
REGISTRY_USERNAMEvariablela cuenta propietaria de los paquetes
REGISTRY_PASSWORDsecretoun token de acceso con write:package (para subir)
REGISTRY_PULL_TOKENsecretopara un paquete privado: un token con solo read:package. Zaroz usa este para descargar

El flujo

YAMLCode
# .forgejo/workflows/deploy.yml (Gitea Actions reads .gitea/workflows/ instead; same file) name: deploy on: push: branches: [main] concurrency: group: deploy-production cancel-in-progress: false jobs: deploy: runs-on: docker steps: - uses: actions/checkout@v4 - name: Install tools run: apt-get update -qq && apt-get install -y -qq curl jq - name: Build and push id: build env: REGISTRY: ${{ vars.REGISTRY_HOST }} # git.example.com REGISTRY_USERNAME: ${{ vars.REGISTRY_USERNAME }} REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }} # package write token run: | IMAGE="$REGISTRY/${GITHUB_REPOSITORY,,}:$(echo "$GITHUB_SHA" | cut -c1-12)" echo "$REGISTRY_PASSWORD" | docker login "$REGISTRY" -u "$REGISTRY_USERNAME" --password-stdin docker build -t "$IMAGE" . docker push "$IMAGE" echo "image=$IMAGE" >> "$GITHUB_OUTPUT" - name: Deploy to Zaroz run: sh deploy/zaroz-deploy.sh env: IMAGE: ${{ steps.build.outputs.image }} ZAROZ_TOKEN: ${{ secrets.ZAROZ_TOKEN }} ZAROZ_SERVICE: ${{ vars.ZAROZ_SERVICE }} # A private package needs a pull-only token, separate from the push one: REGISTRY_USERNAME: ${{ vars.REGISTRY_USERNAME }} REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PULL_TOKEN }}

Cómo se comporta:

  • La imagen es <host>/<propietario>/<repo>:<sha de 12 caracteres>. Un paquete es privado por defecto; hazlo público para desplegar sin token de descarga.
  • concurrency encola los pushes, como en las otras guías.
  • Zaroz descarga desde dentro de su clúster, así que la instancia debe ser accesible desde internet por HTTPS con un certificado válido.
  • Si tu runner no tiene el binario docker, construye con Kaniko o Buildah en un contenedor del trabajo; solo cambia el paso Build and push.

Revertir

Vuelve a ejecutar el flujo de un commit anterior desde la pestaña Actions, o ejecuta el script tú mismo con IMAGE=<host>/<propietario>/<repo>:<sha antiguo>.

Last modified on