Ajustes de CI/CD.

fix: Run jobs on runner host to resolve network issues

Reseteo de estado por fallas del deply.

Reversión.

Nuevo testeo de CI/CD.

Reversión 2.

Fix

Reversión 3

Test con sh-runner

Reversión antes de cambio de foco.

Sin sh-runner.

No puede resolver gitea. Debe usar el secreto REGISTRY_URL.

Test con Gitea 1.21.11

Reversion 1.24.0

Va

Este

Final?

A ver...

Nuevo

Cambio de Enfoque para CI/CD. Se intenta uso de Drone.

Fix de yml para Drone.

Retry .drone.yml

Fix problema de indentación.

Retry yml

Va

Retry mil

Nuevo test

Fix: Configure docker plugin for insecure registry

Forzar la network.

Retry 0142

Test Webhook

Se agregan debug-network para verificar valores.

Se agregan daemon_dns para poder resolver los dominios de nuget desde los contenedores de despliegue.

Cambio de enfoque. Parametro para MTU (Maximum Transmission Unit) añadidos.

Prueba: Usar el Socket de Docker del Host

Fix indentación. Y Trusted en Drone.

Linter: duplicate step name

Todos los registros de contenedores (Docker Hub, Gitea, etc.) exigen que los nombres de las imágenes de Docker estén en minúsculas. El pipeline está intentando crear una imagen llamada dmolinari/GestionIntegralWeb-backend, pero la parte GestionIntegralWeb contiene mayúsculas.
Esto ocurre porque la variable de Drone ${DRONE_REPO_NAME} toma el nombre directamente de Gitea, que en este caso es GestionIntegralWeb. La sintaxis es: ${VARIABLE,,}.

Se añade la URL del registro al nombre del repo

Cabio de Variable por valor directo.

Retry 1806

Retry 1807

Webhook gitea Enable.

Added: privileged: true

Test con Kaniko

Fix yml

Retest

Cambio de imagen kaniko

Cambio por host
This commit is contained in:
2025-06-14 22:11:02 -03:00
parent 0b8096e734
commit 21f4facb31
4 changed files with 151 additions and 1 deletions

82
.drone.yml Normal file
View File

@@ -0,0 +1,82 @@
kind: pipeline
type: docker
name: Build y Deploy
trigger:
branch:
- main
event:
- push
steps:
- name: build-and-publish-backend
image: plugins/kaniko
settings:
repo: host.docker.internal:5000/${DRONE_REPO_OWNER}/${DRONE_REPO_NAME,,}-backend
tags:
- latest
- ${DRONE_COMMIT_SHA:0:8}
dockerfile: Backend/GestionIntegral.Api/Dockerfile
context: .
username:
from_secret: GITEA_USER
password:
from_secret: ACTIONS_PAT
insecure: true
- name: build-and-publish-frontend
image: plugins/kaniko
settings:
repo: host.docker.internal:5000/${DRONE_REPO_OWNER}/${DRONE_REPO_NAME,,}-frontend
tags:
- latest
- ${DRONE_COMMIT_SHA:0:8}
dockerfile: Frontend/Dockerfile
context: .
username:
from_secret: GITEA_USER
password:
from_secret: ACTIONS_PAT
insecure: true
depends_on:
- build-and-publish-backend
- name: deploy-to-production
image: alpine:latest
environment:
SSH_KEY:
from_secret: PROD_SERVER_SSH_KEY
PROD_HOST:
from_secret: PROD_SERVER_HOST
PROD_USER:
from_secret: PROD_SERVER_USER
DB_PASSWORD:
from_secret: DB_SA_PASSWORD_SECRET
JWT_KEY:
from_secret: JWT_KEY_SECRET
REGISTRY:
from_secret: REGISTRY_URL
GITEA_USER:
from_secret: GITEA_USER
GITEA_PAT:
from_secret: ACTIONS_PAT
commands:
- apk add --no-cache openssh-client
- mkdir -p ~/.ssh
- echo "$SSH_KEY" > ~/.ssh/id_rsa
- chmod 600 ~/.ssh/id_rsa
- ssh-keyscan -H $PROD_HOST >> ~/.ssh/known_hosts
- |
ssh $PROD_USER@$PROD_HOST << 'EOF'
echo "--- CONECTADO AL SERVIDOR DE PRODUCCIÓN ---"
cd /opt/gestion-integral
export DB_SA_PASSWORD="${DB_PASSWORD}"
export JWT_KEY="${JWT_KEY}"
docker login ${REGISTRY} -u ${GITEA_USER} -p ${GITEA_PAT}
docker compose pull
docker compose up -d
docker image prune -af
echo "--- DESPLIEGUE COMPLETADO ---"
EOF
depends_on:
- build-and-publish-frontend