javi-forge 1.23.0 → 1.23.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -174,7 +174,7 @@ Developer workflow:
174
174
  │ ├── commit-msg # Valida mensaje sin AI attribution
175
175
  │ └── pre-push # CI simulation en Docker
176
176
  └── docker/
177
- └── *.Dockerfile # Se generan automáticamente
177
+ └── *.Dockerfile # Incluidos para cada stack (fallback: se regeneran si faltan)
178
178
 
179
179
  lib/ # Dependencia requerida (copiar junto con .ci-local/)
180
180
  ├── common.sh # Funciones compartidas (Bash)
@@ -193,7 +193,7 @@ Editar `lib/common.sh` (detección de stack) o `setup_ci_commands()` en `ci-loca
193
193
 
194
194
  ### Docker image custom
195
195
 
196
- Editar los Dockerfiles en `.ci-local/docker/` después de la primera ejecución.
196
+ Editar los Dockerfiles en `.ci-local/docker/` (incluidos por stack).
197
197
 
198
198
  ## FAQ
199
199
 
@@ -177,7 +177,6 @@ RUN apt-get update && apt-get install -y git curl unzip && rm -rf /var/lib/apt/l
177
177
  RUN useradd -m -s /bin/bash runner
178
178
  USER runner
179
179
  WORKDIR /home/runner/work
180
- ENV GRADLE_USER_HOME=/home/runner/.gradle
181
180
  ENTRYPOINT ["/bin/bash", "-c"]
182
181
  '@
183
182
  }
@@ -207,8 +206,7 @@ ENTRYPOINT ["/bin/bash", "-c"]
207
206
  @'
208
207
  FROM golang:1.23-bookworm@sha256:167053a2bb901972bf2c1611f8f52c44d5fe7e762e5cab213708d82c421614db
209
208
  RUN apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/*
210
- RUN go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.62.0 && \
211
- mv /root/go/bin/golangci-lint /usr/local/bin/
209
+ RUN go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.62.0 && mv /root/go/bin/golangci-lint /usr/local/bin/
212
210
  RUN useradd -m -s /bin/bash runner
213
211
  USER runner
214
212
  WORKDIR /home/runner/work
@@ -174,7 +174,6 @@ RUN apt-get update && apt-get install -y git curl unzip && rm -rf /var/lib/apt/l
174
174
  RUN useradd -m -s /bin/bash runner
175
175
  USER runner
176
176
  WORKDIR /home/runner/work
177
- ENV GRADLE_USER_HOME=/home/runner/.gradle
178
177
  ENTRYPOINT ["/bin/bash", "-c"]
179
178
  DOCKERFILE
180
179
  ;;
@@ -204,8 +203,7 @@ DOCKERFILE
204
203
  cat > "$docker_dir/$DOCKERFILE" << 'DOCKERFILE'
205
204
  FROM golang:1.23-bookworm@sha256:167053a2bb901972bf2c1611f8f52c44d5fe7e762e5cab213708d82c421614db
206
205
  RUN apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/*
207
- RUN go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.62.0 && \
208
- mv /root/go/bin/golangci-lint /usr/local/bin/
206
+ RUN go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.62.0 && mv /root/go/bin/golangci-lint /usr/local/bin/
209
207
  RUN useradd -m -s /bin/bash runner
210
208
  USER runner
211
209
  WORKDIR /home/runner/work
@@ -0,0 +1,6 @@
1
+ FROM ubuntu:24.04@sha256:c4a8d5503dfb2a3eb8ab5f807da5bc69a85730fb49b5cfca2330194ebcc41c7b
2
+ RUN apt-get update && apt-get install -y git curl && rm -rf /var/lib/apt/lists/*
3
+ RUN useradd -m -s /bin/bash runner
4
+ USER runner
5
+ WORKDIR /home/runner/work
6
+ ENTRYPOINT ["/bin/bash", "-c"]
@@ -0,0 +1,7 @@
1
+ FROM golang:1.23-bookworm@sha256:167053a2bb901972bf2c1611f8f52c44d5fe7e762e5cab213708d82c421614db
2
+ RUN apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/*
3
+ RUN go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.62.0 && mv /root/go/bin/golangci-lint /usr/local/bin/
4
+ RUN useradd -m -s /bin/bash runner
5
+ USER runner
6
+ WORKDIR /home/runner/work
7
+ ENTRYPOINT ["/bin/bash", "-c"]
@@ -0,0 +1,7 @@
1
+ ARG JAVA_VERSION=21
2
+ FROM eclipse-temurin:${JAVA_VERSION}-jdk-noble
3
+ RUN apt-get update && apt-get install -y git curl unzip && rm -rf /var/lib/apt/lists/*
4
+ RUN useradd -m -s /bin/bash runner
5
+ USER runner
6
+ WORKDIR /home/runner/work
7
+ ENTRYPOINT ["/bin/bash", "-c"]
@@ -0,0 +1,7 @@
1
+ ARG JAVA_VERSION=21
2
+ FROM eclipse-temurin:${JAVA_VERSION}-jdk-noble
3
+ RUN apt-get update && apt-get install -y git curl unzip && rm -rf /var/lib/apt/lists/*
4
+ RUN useradd -m -s /bin/bash runner
5
+ USER runner
6
+ WORKDIR /home/runner/work
7
+ ENTRYPOINT ["/bin/bash", "-c"]
@@ -0,0 +1,7 @@
1
+ ARG JAVA_VERSION=21
2
+ FROM eclipse-temurin:${JAVA_VERSION}-jdk-noble
3
+ RUN apt-get update && apt-get install -y git curl unzip && rm -rf /var/lib/apt/lists/*
4
+ RUN useradd -m -s /bin/bash runner
5
+ USER runner
6
+ WORKDIR /home/runner/work
7
+ ENTRYPOINT ["/bin/bash", "-c"]
@@ -0,0 +1,7 @@
1
+ FROM python:3.12-slim@sha256:401f6e1a67dad31a1bd78e9ad22d0ee0a3b52154e6bd30e90be696bb6a3d7461
2
+ RUN apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/*
3
+ RUN pip install --no-cache-dir pytest ruff pylint poetry
4
+ RUN useradd -m -s /bin/bash runner
5
+ USER runner
6
+ WORKDIR /home/runner/work
7
+ ENTRYPOINT ["/bin/bash", "-c"]
@@ -0,0 +1,7 @@
1
+ FROM rust:1.83-slim@sha256:540c902e99c384163b688bbd8b5b8520e94e7731b27f7bd0eaa56ae1960627ab
2
+ RUN apt-get update && apt-get install -y git pkg-config libssl-dev && rm -rf /var/lib/apt/lists/*
3
+ RUN rustup component add clippy rustfmt
4
+ RUN useradd -m -s /bin/bash runner
5
+ USER runner
6
+ WORKDIR /home/runner/work
7
+ ENTRYPOINT ["/bin/bash", "-c"]
@@ -38,6 +38,14 @@ export function getDockerfileContent(stack) {
38
38
  "RUN apt-get update && apt-get install -y git curl unzip && rm -rf /var/lib/apt/lists/*",
39
39
  "RUN useradd -m -s /bin/bash runner",
40
40
  "USER runner",
41
+ // No GRADLE_USER_HOME override (audit R4-001): on noble the
42
+ // `ubuntu` user owns uid 1000, so `useradd -m runner` lands at
43
+ // uid 1001 and /home/runner is 0750 runner:runner. Pinning
44
+ // GRADLE_USER_HOME=/home/runner/.gradle hard-fails the TS
45
+ // runtime path, which runs as the HOST uid (ENV-1, typically
46
+ // 1000) and cannot create that dir. Without the env both paths
47
+ // work off $HOME: shell path (--user runner) → /home/runner;
48
+ // host-uid path → getpwuid(1000) → /home/ubuntu.
41
49
  "WORKDIR /home/runner/work",
42
50
  'ENTRYPOINT ["/bin/bash", "-c"]',
43
51
  ].join("\n");
@@ -143,10 +151,22 @@ export async function ensureImage(options) {
143
151
  path.join(path.dirname(fileURLToPath(import.meta.url)), "../../ci-local/docker");
144
152
  dockerfilePath = path.join(dockerDir, `${stack}.Dockerfile`);
145
153
  contextDir = dockerDir;
146
- // Write Dockerfile if it doesn't exist yet (first run)
147
154
  if (!(await fs.pathExists(dockerfilePath))) {
148
- await fs.ensureDir(dockerDir);
149
- await fs.writeFile(dockerfilePath, getDockerfileContent(stack), "utf-8");
155
+ if (dockerfilesDir) {
156
+ // Caller-provided generation dir (dev / project-local flow):
157
+ // first-run generation is expected — write the canonical content.
158
+ await fs.ensureDir(dockerDir);
159
+ await fs.writeFile(dockerfilePath, getDockerfileContent(stack), "utf-8");
160
+ }
161
+ else {
162
+ // PKG-002: the package bundles a Dockerfile for EVERY stack, so a
163
+ // miss here means a corrupted/incomplete install. Writing into the
164
+ // install dir would EACCES on root-owned global installs and mask
165
+ // the real problem — fail closed with a clear message instead.
166
+ throw new Error(`bundled Dockerfile "${stack}.Dockerfile" is missing from ` +
167
+ `"${dockerDir}" — the javi-forge installation looks corrupted; ` +
168
+ "reinstall the package (or pass an explicit dockerfilesDir)");
169
+ }
150
170
  }
151
171
  }
152
172
  // Staleness check: compare Dockerfile hash with the one embedded in the image label
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "javi-forge",
3
- "version": "1.23.0",
3
+ "version": "1.23.1",
4
4
  "description": "Project scaffolding and AI-ready CI bootstrap",
5
5
  "type": "module",
6
6
  "bin": {