`useJobToken` verifyConditions omits proxy, so `got` bypasses `HTTPS_PROXY`

Abierto Apto para principiantes
#1,032 0 comentarios 0 reacciones 0 asignados Ver en GitHub

@ar7bd ya está trabajando en esto.

Desde el 28/9/2026.

  • #1033 de @ar7bd — abierto

Evaluación

Dificultad
1/5
Tiempo estimado
Menos de una hora
Aptitud para principiantes
90/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
javascript
Área
api

Línea de trabajo

Empieza en lib/verify.js, en la rama useJobToken, y luego compara su llamada got.get con la ruta PAT y las llamadas got en lib/publish.js. Revisa lib/resolve-config.js para entender cómo se construye el agente proxy. Está terminado cuando verifyConditions usa ese proxy al ejecutarse la autenticación mediante job-token, incluso detrás de HTTP_PROXY o HTTPS_PROXY.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Description

When useJobToken: true is set, verifyConditions fails behind HTTP_PROXY/HTTPS_PROXY before any GitLab API response is received.
got does not honor those env vars by itself. This plugin builds a proxy agent in lib/resolve-config.js (hpagent) and is supposed to pass it as ...proxy on every got call.

The job-token branch in lib/verify.js does not:

if (useJobToken) {
  logger.log("Using Job Token for authentication. Some functionality may be disabled.");
  await got.get(urlJoin(projectApiUrl, "releases"), { headers: { [tokenHeader]: gitlabToken } });
} else {
  await got.get(projectApiUrl, {
    headers: { [tokenHeader]: gitlabToken },
    ...proxy,
  });
}

lib/publish.js already spreads ...proxy on got.post / got.put. Verify dies first, so those never run.

Expected

Job-token verify uses the same proxy agent as the PAT verify path and as publish.

Actual

got.get connects directly to the GitLab host. In an environment where GitLab is only reachable via the proxy (typical Docker runner with git config http.proxy $HTTP_PROXY), this fails with a connect/TLS error such as:

Error [ERR_SOCKET_CLOSED_BEFORE_CONNECTION]: Socket closed before the connection was established
  pluginName: '@semantic-release/gitlab'

Git clone/push still works because git is configured to use the proxy.

Fix

await got.get(urlJoin(projectApiUrl, "releases"), {
  headers: { [tokenHeader]: gitlabToken },
  ...proxy,
});

Patched only that line in @semantic-release/[email protected] and confirmed verifyConditions succeeds with useJobToken: true on GitLab 19.4 behind HTTPS_PROXY.

Environment

  • @semantic-release/gitlab 13.3.3
  • GitLab 19.4.1, Docker executor, HTTP_PROXY/HTTPS_PROXY required to reach the GitLab API
  • useJobToken: true, no GL_TOKEN
Lenguaje dominante
JavaScript
Estrellas
343
Forks
91
Merge medio
4 h 29 min
PR fusionados (30 d)
1

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de semantic-release/gitlab

Todos los issues de semantic-release/gitlab

Issues similares

Más issues de JavaScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.