node.js - 无法将新的 Azure Functions 部署到 Linux 应用程序

标签 node.js linux azure azure-functions

我正在尝试将新创建的 Azure Function 部署到 Linux Azure Function 应用程序。由于某种原因,即使该功能和应用程序是新创建的,这仍然会失败。我尝试过使用 azure cli、VS Code 和 Github Actions,但总是失败。当我将相同的功能部署到 Windows Functions 应用程序时,一切都很顺利。以下是错误输出:

Successfully parsed SCM credential from publish-profile format.
Using SCM credential for authentication, GitHub Action will not perform resource validation.
Successfully acquired app settings from function app (with SCM credential)!
Will archive . into /home/runner/work/_temp/temp_web_package_2443264159027716.zip as function app content
Will use Kudu https:///api/zipdeploy to deploy since publish-profile is detected.
Setting SCM_DO_BUILD_DURING_DEPLOYMENT in Kudu container to true
Update using Client.updateAppSettingViaKudu
Response with status code 204
App setting SCM_DO_BUILD_DURING_DEPLOYMENT propagated to Kudu container
Setting ENABLE_ORYX_BUILD in Kudu container to false
Update using Client.updateAppSettingViaKudu
Response with status code 204
App setting ENABLE_ORYX_BUILD propagated to Kudu container
Package deployment using ZIP Deploy initiated.
Updating submodules.
Preparing deployment for commit id '00497852-0'.
PreDeployment: context.CleanOutputPath False
PreDeployment: context.OutputPath /home/site/wwwroot
Repository path is /tmp/zipdeploy/extracted
Running oryx build...
Command: oryx build /tmp/zipdeploy/extracted -o /home/site/wwwroot --platform nodejs --platform-version ~16
Operation performed by Microsoft Oryx, https://github.com/Microsoft/Oryx
You can report issues at https://github.com/Microsoft/Oryx/issues

Oryx Version: 0.2.20210120.1, Commit: 66c7820d7df527aaffabd2563a49ad57930999c9, ReleaseTagName: 20210120.1

Build Operation ID: |fobbjx9Jh14=.7ba5fe28_
Repository Commit : 00497852-0566-46df-b53b-a3eec6c1e567

Detecting platforms...
Detected following platforms:
nodejs: 16.14.2

Source directory : /tmp/zipdeploy/extracted
Destination directory: /home/site/wwwroot

Using Node version:
v16.14.2

Using Npm version:
8.5.0

Running 'npm install --unsafe-perm'...

up to date, audited 129 packages in 896ms

9 packages are looking for funding
run npm fund for details

found 0 vulnerabilities

Running 'npm run build'...

<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="0f636a6e6b7c6d6a6e7c7b7c4f3e213f213f" rel="noreferrer noopener nofollow">[email protected]</a> build
tsc

/tmp/zipdeploy/extracted/node_modules/.bin/tsc: 1: /tmp/zipdeploy/extracted/node_modules/.bin/tsc: ../typescript/bin/tsc: not found
/tmp/zipdeploy/extracted/node_modules/.bin/tsc: 1: /tmp/zipdeploy/extracted/node_modules/.bin/tsc: ../typescript/bin/tsc: not found\n/opt/Kudu/Scripts/starter.sh oryx build /tmp/zipdeploy/extracted -o /home/site/wwwroot --platform nodejs --platform-version ~16

Generating summary of Oryx build
Deployment Log file does not exist in /tmp/oryx-build.log
The logfile at /tmp/oryx-build.log is empty. Unable to fetch the summary of build
Deployment Failed. deployer = GITHUB_ZIP_DEPLOY deploymentPath = Functions App ZipDeploy. Extract zip. Remote build.
Error: Failed to deploy web package to App Service.
Error: Execution Exception (state: PublishContent) (step: Invocation)
Error: When request Azure resource at PublishContent, zipDeploy : Failed to use /home/runner/work/temp/temp_web_package2443264159027716.zip as ZipDeploy content
Error: Package deployment using ZIP Deploy failed. Refer logs for more details.
Error: Deployment Failed!

有人知道如何解决这个问题吗?我需要确保我的应用程序是在服务器上构建的,据我所知,使用 Windows 操作系统是不可能的。这是这个设置:“azureFunctions.scmDoBuildDuringDeployment”:true

最佳答案

在 VS Code 中创建了 Azure Node JS Function App,在 Azure 门户中创建了 Linux Function App。 检查了这些选项,例如 VS Code 部署、CLI:

  1. VS Code 部署输出:
10:28:37 AM krishnodejsfunapp: Starting deployment...
10:28:41 AM krishnodejsfunapp: Creating zip package...
10:28:41 AM krishnodejsfunapp: Uploading zip package to storage container...
10:28:41 AM krishnodejsfunapp: Zip package size: 1.88 kB
10:28:47 AM krishnodejsfunapp: Deployment successful.
10:28:47 AM krishnodejsfunapp: Started postDeployTask "npm install (functions)".
10:28:59 AM krishnodejsfunapp: Syncing triggers...
10:29:04 AM krishnodejsfunapp: Querying triggers...
10:29:09 AM krishnodejsfunapp: HTTP Trigger Urls:
HttpTrigger1: https://krishnodejsfunapp.azurewebsites.net/api/httptrigger1

enter image description here

<强>2。使用 CLI 部署到第二个 Linux Function App:

您可以引用one我使用 Azure CLI cmdlet 部署 Function App 的解决方案。

对于当前的 Function App 部署:

az login
az account set --subscription subs-id
az functionapp config appsettings set --name KrishPy02LinuxFunApp --resource-group HariTestRG --settings "SCM_DO_BUILD_DURING_DEPLOYMENT=true"

它将提供来自该函数应用程序的配置设置值的 JSON 格式输出。

powershell Compress-Archive C:\Users\Hari\source\repos\KrishPyFunApp305 C:\Users\Hari\source\repos\KrishPyFunApp305.zip

az functionapp deployment source config-zip -g HariTestRG -n KrishPy02LinuxFunApp --src "C:/Users/Hari/source/repos/KrishPyFunApp305.zip"

注意:

  1. 对于 Function 的 zip 部署,我们需要在 Azure Portal Function App SCM_DO_BUILD_DURING_DEPLOYMENT=true 中启用配置设置,如本 MS Doc 中指定的那样。 .
  2. 对于应用服务,部署前在应用程序设置配置中将 WEBSITE_WEBDEPLOY_USE_SCM 设置为 true。

如果通过 Azure DevOps 进行部署,请参阅 MS Q& A 中的类似问题论坛。

关于node.js - 无法将新的 Azure Functions 部署到 Linux 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74195407/

相关文章:

azure - 2016年如何在SQL Azure上实现 session 管理?

mysql - Waterline ORM 删除列并转换为 mysql 的 myisam?

multithreading - Node.js C++ 插件 : Multiple callbacks from different thread

javascript - 如何在 RT 上添加插件和使用一些外部模块/文件

linux - 有没有办法使 linux CLI IO 重定向持久化?

c# - Azure Functions - 使用 appsettings.json

mysql - 使用sequelize根据express.js中的路由连接mysql数据库

linux - 警告 : fgets(): SSL operation failed with code 1. OpenSSL 错误消息

linux - 动态 Bash 脚本(即顶部)

azure - 如何从azure AD中的应用程序注册中查找资源组名称