Azure App Service "Oryx build failed / ZipDeploy failed" in CI
When App Service builds your package server side, Oryx detects the runtime and runs the install/build. If detection fails or a dependency install errors, the ZipDeploy fails and the new package is not promoted.
What this error means
The webapp deploy step fails with "Oryx build failed" or "Deployment Failed, Error: Package deployment using ZIP Deploy failed", with an Oryx log link.
Deployment Failed, Error: Package deployment using ZIP Deploy failed.
Oryx Version: ... Build Operation ID: ...
Error: Couldn't detect a version for the platform 'nodejs' in the repo.Common causes
Oryx cannot detect the runtime or version
Missing package.json/requirements.txt at the deploy root, or no runtime version set, leaves Oryx unable to pick a platform to build for.
The server-side dependency install fails
A build that works locally fails on App Service because of a different platform version or a dependency that cannot install in the Oryx environment.
How to fix it
Set the runtime and ensure manifests are at the root
- Confirm package.json or requirements.txt is at the deployed package root.
- Pin the runtime so Oryx detects a version.
- Redeploy and read the Oryx build log if it still fails.
az webapp config set --name my-app --resource-group rg \
--linux-fx-version "NODE|20-lts"Deploy a prebuilt package and skip Oryx
Build in CI, then disable server-side build so the exact artifact you tested is what runs.
az webapp config appsettings set --name my-app --resource-group rg \
--settings SCM_DO_BUILD_DURING_DEPLOYMENT=falseHow to prevent it
- Keep runtime manifests at the package root so Oryx can detect them.
- Pin the runtime version on the web app.
- Prefer building in CI and deploying a prebuilt, tested package.