Skip to content

Commit c6d08b1

Browse files
committed
pr mejorado
1 parent f0bfcc4 commit c6d08b1

File tree

1 file changed

+45
-45
lines changed

1 file changed

+45
-45
lines changed

.github/workflows/ci.yml

Lines changed: 45 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -14,83 +14,83 @@ jobs:
1414
steps:
1515
- uses: actions/checkout@v4
1616

17-
- name: Show tree (debug)
17+
- name: Detectar tipo de proyecto
18+
id: detect
1819
run: |
19-
pwd
20-
ls -la
21-
echo "Lockfiles:"
22-
ls -la | grep -E "package-lock.json|yarn.lock|pnpm-lock.yaml" || true
20+
if [ -f "package.json" ]; then echo "node_project=true" >> $GITHUB_OUTPUT; fi
21+
if [ -f "index.html" ]; then echo "static_html=true" >> $GITHUB_OUTPUT; fi
22+
echo "Node? $([[ -f package.json ]] && echo YES || echo NO)"
23+
echo "HTML? $([[ -f index.html ]] && echo YES || echo NO)"
2324
25+
# Solo si es proyecto Node (Next/React/etc.)
2426
- name: Setup Node
27+
if: ${{ steps.detect.outputs.node_project == 'true' }}
2528
uses: actions/setup-node@v4
2629
with:
27-
node-version: 18 # más compatible; si tu proyecto requiere 20, cámbialo a 20
30+
node-version: 18
2831
cache: npm
2932
cache-dependency-path: demo/package-lock.json
3033

31-
- name: Detect package manager
32-
id: pm
34+
- name: Instalar dependencias (Node)
35+
if: ${{ steps.detect.outputs.node_project == 'true' }}
3336
run: |
34-
if [ -f "pnpm-lock.yaml" ]; then
35-
echo "mgr=pnpm" >> $GITHUB_OUTPUT
36-
elif [ -f "yarn.lock" ]; then
37-
echo "mgr=yarn" >> $GITHUB_OUTPUT
38-
else
39-
echo "mgr=npm" >> $GITHUB_OUTPUT
40-
fi
37+
if [ -f package-lock.json ]; then npm ci; else npm install; fi
4138
42-
- name: Setup pnpm
43-
if: steps.pm.outputs.mgr == 'pnpm'
44-
uses: pnpm/action-setup@v4
45-
with:
46-
version: 8
47-
48-
- name: Enable corepack (yarn/pnpm)
49-
if: steps.pm.outputs.mgr != 'npm'
50-
run: corepack enable
51-
52-
- name: Install deps
53-
run: |
54-
if [ "${{ steps.pm.outputs.mgr }}" = "pnpm" ]; then pnpm install --frozen-lockfile; \
55-
elif [ "${{ steps.pm.outputs.mgr }}" = "yarn" ]; then yarn install --immutable; \
56-
else if [ -f package-lock.json ]; then npm ci; else npm install; fi; fi
57-
58-
- name: Build
39+
- name: Build (Node)
40+
if: ${{ steps.detect.outputs.node_project == 'true' }}
5941
env:
6042
NEXT_TELEMETRY_DISABLED: 1
61-
CI: false # evita que algunos linters detengan el build en CI
43+
CI: false
44+
run: npm run build --if-present
45+
46+
# Si NO es proyecto Node y SOLO hay HTML estático, valida que exista el archivo y pasa
47+
- name: Validar HTML estático
48+
if: ${{ steps.detect.outputs.node_project != 'true' && steps.detect.outputs.static_html == 'true' }}
6249
run: |
63-
if [ "${{ steps.pm.outputs.mgr }}" = "pnpm" ]; then pnpm build; \
64-
elif [ "${{ steps.pm.outputs.mgr }}" = "yarn" ]; then yarn build; \
65-
else npm run build --if-present; fi
50+
test -f index.html
51+
echo "OK: proyecto estático con index.html"
6652
6753
backend:
68-
name: Backend (Gradle)
54+
name: Backend
6955
runs-on: ubuntu-latest
7056
defaults:
7157
run:
7258
working-directory: backend
7359
steps:
7460
- uses: actions/checkout@v4
7561

76-
- name: Show tree (debug)
62+
- name: Detectar herramienta de build
63+
id: b
7764
run: |
78-
pwd
79-
ls -la
80-
echo "Gradle wrapper?"; if [ -f gradlew ]; then echo "YES"; else echo "NO"; fi
65+
if [ -f "gradlew" ] || [ -f "build.gradle" ] || [ -f "build.gradle.kts" ]; then echo "use_gradle=true" >> $GITHUB_OUTPUT; fi
66+
if [ -f "pom.xml" ]; then echo "use_maven=true" >> $GITHUB_OUTPUT; fi
67+
echo "Gradle? $([[ -f gradlew || -f build.gradle || -f build.gradle.kts ]] && echo YES || echo NO)"
68+
echo "Maven? $([[ -f pom.xml ]] && echo YES || echo NO)"
8169
8270
- name: Setup Java
71+
if: ${{ steps.b.outputs.use_gradle == 'true' || steps.b.outputs.use_maven == 'true' }}
8372
uses: actions/setup-java@v4
8473
with:
8574
distribution: temurin
86-
java-version: 17 # cambia a 21 si tu build.gradle lo exige
75+
java-version: 17 # súbelo a 21 si tu build.gradle/pom lo exige
8776

8877
- uses: gradle/actions/setup-gradle@v3
78+
if: ${{ steps.b.outputs.use_gradle == 'true' }}
8979

90-
- name: Make gradlew executable (if exists)
91-
run: if [ -f gradlew ]; then chmod +x gradlew; fi
80+
- name: Permisos para gradlew
81+
if: ${{ steps.b.outputs.use_gradle == 'true' && hashFiles('backend/gradlew') != '' }}
82+
run: chmod +x gradlew
9283

93-
- name: Build (wrapper if present, else system gradle)
84+
- name: Build (Gradle)
85+
if: ${{ steps.b.outputs.use_gradle == 'true' }}
9486
run: |
9587
if [ -f gradlew ]; then ./gradlew build --no-daemon --stacktrace; \
9688
else gradle build --no-daemon --stacktrace; fi
89+
90+
- name: Build (Maven)
91+
if: ${{ steps.b.outputs.use_maven == 'true' }}
92+
run: mvn -B -DskipTests package
93+
94+
- name: No hay proyecto backend detectable (OK)
95+
if: ${{ steps.b.outputs.use_gradle != 'true' && steps.b.outputs.use_maven != 'true' }}
96+
run: echo "Sin build.gradle/pom.xml en backend: se omite build y el job pasa."

0 commit comments

Comments
 (0)