Buildpacks et auto-détection
Les références historiques des buildpacks et les nouveaux environnements N1 : versions, profils et qualification distincts.
N1 : les environnements du registre actuel
Le relevé du contient 12 capacités N1. Elles couvrent les environnements Node, statique, Python, PHP, Go, JVM, Ruby et Elixir, ainsi que worker, persistance, service et composition. La liste des modules détaille toutes leurs opérations, versions, entrées et dépendances.
JVM sert notamment à Metabase ; Ruby à Discourse et Redmine ; Elixir à Plausible. Les recettes construisent le code client et ses dépendances verrouillées. Une mise à jour de code compatible ne qualifie pas un changement majeur du runtime ni toutes ses options.
Le périmètre historique conserve 14 familles, 22 lignes de langages/variantes et sept profils complémentaires dans la feuille de route. Ces intentions restent distinctes des modules actuels ; elles ne constituent pas 22 environnements certifiés. Les accélérateurs et modes non couverts restent à qualifier.
Les essais locaux initiaux du 5 septembre ne suffisaient pas à qualifier les applications. Les preuves actuelles relient désormais les scénarios publiés à leurs créations, mises à jour et usages. Leur portée ne s’étend pas à une autre version, un plugin ou une migration.
La plateforme construit votre image OCI à partir de votre code source via les Cloud Native Buildpacks. Pour les apps standard (Python/Django, Node, Ruby, Go), la détection automatique fonctionne sans Dockerfile. Pour les apps avec dépendances système particulières ou stack moins courante, ajoutez un Dockerfile à la racine — la plateforme l'utilisera en priorité sur le buildpack auto-détecté.
Référence historique : détection automatique
La détection déjà documentée associe les fichiers du dépôt aux buildpacks ci-dessous. Ce tableau ne qualifie pas les nouvelles versions N1 de la matrice.
| Fichier détecté | Buildpack appliqué |
|---|---|
| requirements.txt, Pipfile, pyproject.toml | Python |
| package.json | Node.js |
| Gemfile | Ruby |
| composer.json | PHP |
| go.mod | Go |
| Cargo.toml | Rust |
| pom.xml, build.gradle | Java |
| mix.exs | Elixir |
| *.csproj, *.fsproj | .NET |
| Dockerfile | Build OCI direct (sans buildpack) |
Référence historique : langages et versions
Ces versions restent la référence des parcours historiques. Les nouvelles versions Node/Python ont uniquement les preuves bornées décrites plus haut ; elles ne remplacent pas automatiquement cette table.
| Langage | Versions supportées | Versions LTS recommandées |
|---|---|---|
| Python | 3.10 → 3.13 | 3.12 |
| Node.js | 18 → 22 | 20 LTS, 22 LTS |
| Ruby | 3.1 → 3.3 | 3.3 |
| PHP | 8.1 → 8.4 | 8.3 |
| Go | 1.21 → 1.23 | 1.23 |
| Rust | stable, 1.75+ | stable |
| Java | 11, 17, 21 | 21 LTS |
| Elixir | 1.15+ | 1.16, 1.17 |
| .NET | 6, 8 | 8 LTS |
Pour fixer une version précise, ajoutez un fichier .python-version, .nvmrc, .ruby-version, .go-version, etc., ou la déclarez dans votre fichier de configuration habituel (package.json engines, Pipfile python_version, etc.).
Override du buildpack
Si la détection automatique ne convient pas, forcez un buildpack précis dans paas.toml :
buildpack = "paketo/python"
Cloud Native Buildpacks
Nous utilisons les Cloud Native Buildpacks (CNB), un standard ouvert maintenu par la CNCF. Cela vous donne :
- Reproductibilité : mêmes inputs, même image, partout
- Cache de couches intelligent, partagé entre les builds
- Sécurité : SBOM (Software Bill of Materials) généré automatiquement, signé
- Portabilité : si vous voulez partir, vos buildpacks fonctionnent ailleurs (CircleCI, GitHub Actions, autres PaaS)
Dockerfile
Si vous avez un Dockerfile, nous l'utilisons à la place du buildpack. C'est utile pour les cas où vous avez besoin d'un contrôle total : binaires natifs, dépendances système exotiques, runtime non standard.
Le Dockerfile reste votre dernier recours, pas le défaut. Les buildpacks sont plus rapides à builder, plus sécurisés à maintenir, et nous savons les faire évoluer pour vous (mise à jour OS, patches sécurité). Avec un Dockerfile, vous reprenez la responsabilité.