You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
feat: add build_args to docker-push and a node-version workflow - #209
Deux ajouts pour qu'une image Node.js ne contienne plus de version de Node en dur, sans que docker-push-v4 ait la moindre notion de Node :
docker-push-v4 (et docker-experiment-v2) acceptent des build args génériques (build_args), utiles à n'importe quel repo ;
un nouveau workflow réutilisable, node-version-v1, lit la version majeure de engines.node dans package.json.
Les deux sont facultatifs : les repos existants ne voient aucun changement. Premier utilisateur : sencrop/sencrop-bali-api#5821 (migration npm → pnpm).
What
docker-push-v4 / docker-experiment-v2
Nouvelle entrée build_args (vide par défaut), un KEY=value par ligne, transmise à docker/build-push-action. docker-experiment-v2 la transmet à docker-push-v4.
node-version-v1
Output major : la première version numérique de engines.node (24 pour ^24.15.0 ou 24.x). C'est la règle qu'applique déjà devenv : poste de dev, CI et image suivent la même majeure.
Entrée working_directory pour un package.json ailleurs qu'à la racine.
Échoue avec une annotation si engines.node est absent ou ne contient aucune version.
Checkout partiel : seul package.json est récupéré.
ARG NODE_VERSION
FROM node:${NODE_VERSION}-bookworm
Le tag de la majeure (node:24-bookworm) désigne toujours la dernière 24.x publiée sur Docker Hub. Une version exacte résolue depuis nodejs.org (avec actions/setup-node) pourrait précéder de quelques heures la publication de son image, et faire échouer le build entre-temps.
README : sections docker-push (build args) et Node version.
Validation
Chaîne complète testée et validée sur sencrop/sencrop-bali-api#5821 par le build expérimental (run 36846137635, détails) : node-version-v1 → major=24 → build_args → FROM node:24-bookworm → push ECR.
Reste à faire
Annuler le commit chore: pin docker-push-v4 on this branch…avant le merge : docker-experiment-v2 y appelle docker-push-v4 sur cette branche, pour tester la chaîne complète depuis le build expérimental de sencrop/sencrop-bali-api#5821.
cdelfabbro
changed the title
feat(docker-push): resolve the Node.js version from a project file
feat(docker-push): pass the Node.js version of the project to the build
Oct 1, 2026
cdelfabbro
changed the title
feat(docker-push): pass the Node.js version of the project to the build
feat: add build_args to docker-push and a node-version workflow
Oct 1, 2026
The default working_directory produces the non-cone sparse-checkout pattern ./package.json. Non-cone mode interprets this as a gitignore-style pattern, where the leading ./ does not match the repository-relative path package.json; the default invocation can therefore omit the file and fail in the read step. Emit package.json explicitly for the root case.
Copilot (review du 01/10) : le motif ./package.json du checkout partiel par défaut. Corrigé dans 1b972ab.
C'est confirmé avec git 2.55 en mode non-cone : ./package.json ne récupère aucun fichier, donc l'appel par défaut aurait échoué. Sans / initial, package.json récupère au contraire tous les package.json du repo, à n'importe quelle profondeur.
Le motif est désormais ancré à la racine : /package.json, ou /<working_directory>/package.json. Vérifié en local : seul le fichier attendu est récupéré.
Le step de lecture n'utilise plus working-directory:, qui échouait avant le script quand le dossier manquait. Il vérifie lui-même que le fichier existe, et affiche une erreur explicite qui rappelle le format attendu (chemin relatif, sans ./).
✅ Testé et validé sur sencrop/sencrop-bali-api#5821, avec le build expérimental (run 36846137635). Pour ce test, experiment.yml (bali) et docker-experiment-v2 (cette branche) étaient pinnés sur feat/docker-push-node-version.
Étape
Résultat
node-version-v1
checkout partiel /package.json, major=24 lu dans ^24.15.0 (7 s)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
IA;DR
Deux ajouts pour qu'une image Node.js ne contienne plus de version de Node en dur, sans que
docker-push-v4ait la moindre notion de Node :docker-push-v4(etdocker-experiment-v2) acceptent des build args génériques (build_args), utiles à n'importe quel repo ;node-version-v1, lit la version majeure deengines.nodedanspackage.json.Les deux sont facultatifs : les repos existants ne voient aucun changement. Premier utilisateur : sencrop/sencrop-bali-api#5821 (migration npm → pnpm).
What
docker-push-v4/docker-experiment-v2build_args(vide par défaut), unKEY=valuepar ligne, transmise àdocker/build-push-action.docker-experiment-v2la transmet àdocker-push-v4.node-version-v1major: la première version numérique deengines.node(24pour^24.15.0ou24.x). C'est la règle qu'applique déjà devenv : poste de dev, CI et image suivent la même majeure.working_directorypour unpackage.jsonailleurs qu'à la racine.engines.nodeest absent ou ne contient aucune version.package.jsonest récupéré.Utilisation
Le tag de la majeure (
node:24-bookworm) désigne toujours la dernière 24.x publiée sur Docker Hub. Une version exacte résolue depuis nodejs.org (avecactions/setup-node) pourrait précéder de quelques heures la publication de son image, et faire échouer le build entre-temps.README : sections
docker-push(build args) etNode version.Validation
Chaîne complète testée et validée sur sencrop/sencrop-bali-api#5821 par le build expérimental (run 36846137635, détails) :
node-version-v1→major=24→build_args→FROM node:24-bookworm→ push ECR.Reste à faire
chore: pin docker-push-v4 on this branch…avant le merge :docker-experiment-v2y appelledocker-push-v4sur cette branche, pour tester la chaîne complète depuis le build expérimental de sencrop/sencrop-bali-api#5821.