66
77jobs :
88 frontend :
9- name : Frontend (Next.js )
9+ name : Frontend (demo )
1010 runs-on : ubuntu-latest
1111 defaults :
1212 run :
13- working-directory : demo # <-- tu app Next.js está en 'demo'
13+ working-directory : demo
1414 steps :
1515 - uses : actions/checkout@v4
1616
17- - uses : actions/setup-node@v4
17+ - name : Show tree (debug)
18+ run : |
19+ pwd
20+ ls -la
21+ echo "Lockfiles:"
22+ ls -la | grep -E "package-lock.json|yarn.lock|pnpm-lock.yaml" || true
23+
24+ - name : Setup Node
25+ uses : actions/setup-node@v4
1826 with :
19- node-version : 20
27+ node-version : 18 # más compatible; si tu proyecto requiere 20, cámbialo a 20
2028 cache : npm
2129 cache-dependency-path : demo/package-lock.json
2230
23- - name : Install deps
31+ - name : Detect package manager
32+ id : pm
2433 run : |
25- if [ -f package-lock.json ]; then
26- npm ci
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
2738 else
28- npm install
39+ echo "mgr= npm" >> $GITHUB_OUTPUT
2940 fi
3041
31- - name : Lint (opcional)
32- run : npm run lint --if-present
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
3357
3458 - name : Build
3559 env :
3660 NEXT_TELEMETRY_DISABLED : 1
37- # Si tu build necesita variables, crea secrets y pásalas aquí.
38- # EJ: NEXT_PUBLIC_API_URL: ${{ secrets.NEXT_PUBLIC_API_URL }}
39- run : npm run build
61+ CI : false # evita que algunos linters detengan el build en CI
62+ 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
4066
4167 backend :
4268 name : Backend (Gradle)
@@ -47,21 +73,24 @@ jobs:
4773 steps :
4874 - uses : actions/checkout@v4
4975
50- - uses : actions/setup-java@v4
76+ - name : Show tree (debug)
77+ run : |
78+ pwd
79+ ls -la
80+ echo "Gradle wrapper?"; if [ -f gradlew ]; then echo "YES"; else echo "NO"; fi
81+
82+ - name : Setup Java
83+ uses : actions/setup-java@v4
5184 with :
5285 distribution : temurin
53- java-version : 17 # usa 17 salvo que tu build.gradle pida 21
86+ java-version : 17 # cambia a 21 si tu build.gradle lo exige
5487
5588 - uses : gradle/actions/setup-gradle@v3
5689
57- - name : Grant execute permission for gradlew (si existe)
58- if : ${{ hashFiles('backend/gradlew') != '' }}
59- run : chmod +x gradlew
60-
61- - name : Build con Gradle Wrapper
62- if : ${{ hashFiles('backend/gradlew') != '' }}
63- run : ./gradlew build --no-daemon
90+ - name : Make gradlew executable (if exists)
91+ run : if [ -f gradlew ]; then chmod +x gradlew; fi
6492
65- - name : Build con Gradle (sin wrapper)
66- if : ${{ hashFiles('backend/gradlew') == '' }}
67- run : gradle build --no-daemon
93+ - name : Build (wrapper if present, else system gradle)
94+ run : |
95+ if [ -f gradlew ]; then ./gradlew build --no-daemon --stacktrace; \
96+ else gradle build --no-daemon --stacktrace; fi
0 commit comments