摘要
我试图将一个MVC5 Web应用程序部署到Azure。我需要以编程方式设置WEBSITE_NODE_DEFAULT_VERSION,以确保所有配置都以原子方式包含在回购中。当我尝试在.deployment
或deploy.cmd
中设置该应用设置/ env变量时,它会被部署忽略。为什么?在Azure(Kudu)部署期间以编程方式设置应用程序设置/ env变量
背景
我的web应用程序使用亭子的客户端库,以及一个简单的脚本一饮而尽放置最小化库的目标文件夹。我的cshtml文件然后从目标文件夹中使用它们。
根据this comment,我从Azure中删除了部署脚本(.deployment
和deploy.cmd
),并调整它以安装bower。
然后下载您的自定义部署脚本。如果你转到https://.scm.azurewebsites.net,然后点击工具 - >下载自定义部署脚本或从D:\ home \ deployment \ tools下载它
我的研究表明npm是默认情况下在Azure Web应用程序部署中可用,并且bower包是预先安装的,但gulp不是。所以,我需要3个自定义命令添加到部署脚本:
- NPM安装(需要作出提供一整套)
- 凉亭安装(拉下客户端库)
- 一饮而尽(管道客户端 - 边库)
每this question,我面临的问题是,使用的节点(因此npm)是旧版本。 npm install
命令导致文件名太长,这是旧版npm中的一个已知问题。
每this set of Kudu runtime settings,我试图设置WEBSITE_NODE_DEFAULT_VERSION
到6.7.0(在这个问题的时间最晚),因为这将确保最新的NPM也运行。
这是我的问题发生的地方。在运行npm install
之前,我在npm install
之前添加了一行(我试过在等号周围没有空格的变体,包括引号,setlocal
等)。前后的输出始终为4.4.7。
我在.deployment
也试过,无济于事。我甚至尝试改变位置(有时在command = deploy.cmd
之前,有时在之后)。
从我可以破译脱净,至少我的一个方法上面应该工作... 为什么我不能设置部署脚本这个程序设置/环境变量?
更新
据this question,我不能在.deployment文件中设置的应用程序设置。这与网上的其他文章不同,但它仍不能解释为什么SET不在deploy.cmd文件中工作。
文件
.deployment
[config]
;Change node version to change npm version to avoid long-file-name situations
WEBSITE_NODE_DEFAULT_VERSION = 6.7.0
command = deploy.cmd
deploy.cmd
(REDACTED - default stuff)
echo :: 4. NPM Install (borrowing from https://stackoverflow.com/questions/39480274/how-do-i-run-gulp-js-in-my-asp-net-core-project-when-deploying-to-azure-using-gi)
IF EXIST "%DEPLOYMENT_TARGET%\package.json" (
:: Set the node version. Tried this in .deployment, but that didn't work.
:: HELP! Why isn't this working???
echo %WEBSITE_NODE_DEFAULT_VERSION% before set
:: Output: "4.4.7 before set"
SET WEBSITE_NODE_DEFAULT_VERSION=6.7.0
echo %WEBSITE_NODE_DEFAULT_VERSION% after set
:: Output: "4.4.7 after set"
pushd "%DEPLOYMENT_TARGET%"
call :ExecuteCmd npm install
IF !ERRORLEVEL! NEQ 0 goto error
popd
)
echo :: 5. Bower Install (borrowing from https://stackoverflow.com/a/28591913/1876622)
IF EXIST "%DEPLOYMENT_TARGET%\bower.json" (
pushd "%DEPLOYMENT_TARGET%"
call :ExecuteCmd bower install
IF !ERRORLEVEL! NEQ 0 goto error
popd
)
echo :: 6. Run Gulp (borrowed from https://blogs.msdn.microsoft.com/azureossds/2016/08/12/run-npm-bower-composer-gulp-grunt-in-azure-app-services-during-deployment/)
IF EXIST "%DEPLOYMENT_TARGET%\gulpfile.js" (
pushd "%DEPLOYMENT_TARGET%"
call :ExecuteCmd gulp
IF !ERRORLEVEL! NEQ 0 goto error
popd
)