Add deploy.yaml
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
name: Despliegue Automatizado Universal
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- develop
|
||||
- master
|
||||
|
||||
jobs:
|
||||
get-context:
|
||||
runs-on: host
|
||||
outputs:
|
||||
node_version: ${{ steps.setup.outputs.version }}
|
||||
target_app: ${{ steps.setup.outputs.app }}
|
||||
steps:
|
||||
- name: Resolver Aplicación desde apps.conf
|
||||
id: setup
|
||||
run: |
|
||||
# 1. Obtener el nombre del repositorio actual en Gitea (ej: front-Censo)
|
||||
REPO_NAME="${{ github.event.repository.name }}"
|
||||
|
||||
# 2. Determinar si buscamos un entorno -dev (develop) o producción (master)
|
||||
if [ "${{ github.ref_name }}" = "develop" ]; then
|
||||
SUFFIX="-dev"
|
||||
else
|
||||
SUFFIX=""
|
||||
fi
|
||||
|
||||
echo "Buscando qué sección de apps.conf tiene REPO=$REPO_NAME y termina en '$SUFFIX'..."
|
||||
|
||||
# 3. Buscar en /etc/apps.conf el bloque que contenga REPO=nombre_del_repo
|
||||
TARGET_APP=$(awk -v repo="REPO=$REPO_NAME" -v suf="$SUFFIX" '
|
||||
/^\[/ { gsub(/[\[\]]/, "", $0); current_box=$0; next }
|
||||
$0 == repo {
|
||||
if ((suf == "-dev" && current_box ~ /-dev$/) || (suf == "" && current_box !~ /-dev$/)) {
|
||||
print current_box;
|
||||
exit
|
||||
}
|
||||
}
|
||||
' /etc/apps.conf)
|
||||
|
||||
if [ -z "$TARGET_APP" ]; then
|
||||
echo "ERROR: No se encontró ninguna sección en /etc/apps.conf para el repositorio $REPO_NAME con el sufijo correcto."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 4. Leer la versión de Node del bloque encontrado
|
||||
VERSION=$(awk -v app="$TARGET_APP" '
|
||||
$0=="["app"]" { found=1; next }
|
||||
/^\[/ && found { exit }
|
||||
found && /^NODE=/ { split($0, a, "="); print a[2]; exit }
|
||||
' /etc/apps.conf)
|
||||
|
||||
MAJOR_VERSION=$(echo "$VERSION" | tr -d '[:space:]' | grep -oE '[0-9]+' | head -n1)
|
||||
|
||||
echo "-> ID de Aplicación encontrado: $TARGET_APP"
|
||||
echo "-> Versión Mayor de Node resuelta: $MAJOR_VERSION"
|
||||
|
||||
echo "app=${TARGET_APP}" >> $GITHUB_OUTPUT
|
||||
echo "version=${MAJOR_VERSION}" >> $GITHUB_OUTPUT
|
||||
|
||||
build:
|
||||
needs: get-context
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Configurar Node.js dinámicamente
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: ${{ needs.get-context.outputs.node_version }}
|
||||
|
||||
- run: npm ci
|
||||
- run: npm run build
|
||||
|
||||
deploy:
|
||||
needs: [get-context, build]
|
||||
runs-on: host
|
||||
steps:
|
||||
- name: Ejecutar Despliegue en Servidor Físico
|
||||
run: |
|
||||
TARGET_APP="${{ needs.get-context.outputs.target_app }}"
|
||||
BRANCH_NAME="${{ github.ref_name }}"
|
||||
|
||||
sudo -u deploy /home/deploy/scripts/deploy-front.sh "$TARGET_APP" "$BRANCH_NAME"
|
||||
Generated
+18
@@ -696,6 +696,7 @@
|
||||
"version": "2.5.6",
|
||||
"resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.6.tgz",
|
||||
"integrity": "sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==",
|
||||
"dev": true,
|
||||
"hasInstallScript": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
@@ -735,6 +736,7 @@
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
@@ -755,6 +757,7 @@
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
@@ -775,6 +778,7 @@
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
@@ -795,6 +799,7 @@
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
@@ -815,6 +820,7 @@
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
@@ -835,6 +841,7 @@
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
@@ -855,6 +862,7 @@
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
@@ -875,6 +883,7 @@
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
@@ -895,6 +904,7 @@
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
@@ -915,6 +925,7 @@
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
@@ -935,6 +946,7 @@
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
@@ -955,6 +967,7 @@
|
||||
"cpu": [
|
||||
"ia32"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
@@ -975,6 +988,7 @@
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
@@ -2635,6 +2649,7 @@
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
|
||||
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"engines": {
|
||||
@@ -2677,6 +2692,7 @@
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
|
||||
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
@@ -3190,6 +3206,7 @@
|
||||
"version": "7.1.1",
|
||||
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz",
|
||||
"integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true
|
||||
},
|
||||
@@ -3290,6 +3307,7 @@
|
||||
"version": "4.0.4",
|
||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
|
||||
"integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"engines": {
|
||||
|
||||
Reference in New Issue
Block a user