/build
(或/dist
)文件夹,其中包含在构建期间生成的前端文件(由Gulp生成).此文件夹不在源代码管理下(例如,参见:React.js Starter Kit)/src
可以按原样部署项目中的文件夹(这些源文件用于运行Node.js或ASP.NET vNext服务器)/build
源控件下的文件夹与其余的项目文件一起.此repo仅用于部署目的./build
文件夹的内容(包括.js,.html,.css等公共前端文件)复制到/wwwroot
?与复制所有项目文件(服务器端源代码和前端软件包)相反,默认情况下它是这样做的.D:\home\site\repository
文件夹到D:\home\site\wwwroot
文件夹,然后从那里启动Node.js应用程序.这是必要的一步吗?为什么不从D:\home\site\repository
文件夹启动Node.js(或ASP.NET vNext)应用程序?如果它确实应该被复制到一个单独的文件夹,为什么要放入源文件wwwroot
,也许最好将它们复制到另一个文件夹,在外面wwwroot
?有没有办法以编程方式重新启动Azure Web App,即Kudu或其他类型?
我发现可以使用管理库,但它不适用于我,因为我无法在AD中创建应用程序.
我以前在Azure Web App上有一个Node应用程序,现在是Go应用程序.问题是当我部署时我从Kudu得到这个:
Using cached version of deployment script (command: 'azure -y --no-dot-deployment -r "D:\home\site\repository" -o "D:\home\site\deployments\tools" --node --sitePath "D:\home\site\repository"').
这显然后来抱怨没有找到server/app.js文件.
所以我尝试为我的应用程序生成一个部署脚本azure site deploymentscript --go
.
即使我在应用程序的设置中有GO15VENDOREXPERIMENT = 1,它也在抱怨依赖关系.我的所有依赖项都出现在/ vendor文件夹中.
我将此变量设置在deploy.cmd
由azure site deploymentscript
命令生成的文件中.
仍然抱怨一个依赖关系不存在.请注意,现在它正在搜索本地供应商树,但依赖关系在那里,我可以在Github仓库中看到它,我也在本地看到它.
我有其他的Go应用程序在Azure上部署了很好的销售依赖项,但是这个是一个Node应用程序以前根本就没有工作.
我甚至试图评论依赖性getter deploy.cmd
,因为所有都是本地的,这个步骤不是必需的.但即使这样也行不通,因为go build
失败的抱怨不依赖于依赖.它位于供应商文件夹中,并GO15VENDOREEXPERIMENT
在cmd文件和应用程序应用程序设置中设置为1.
那么我的选择是什么?
我怎么能告诉Kudu使用Go默认部署,也许Azure中的那个可以工作,因为我的其他应用程序没有本地.deployement
和deploy.cmd
文件.
编辑
我刚刚将测试部署到一个全新的Azure Web应用程序,默认情况下该应用程序被检测为Node应用程序.我猜这是因为在根目录中存在一个package.json,我还有一个main.go package main
作为包名.
所以也许只是deploy.cmd
由azure site deploymentscript
那些不是最新的东西产生的东西?(我刚刚更新了我对azure-cli的验证,因为起初我没有--go标志).
为了完整性,这里是Kudu在新创建的应用程序上部署时的输出,得到与Node 1相同的错误:
remote: Resolving dependencies
remote: # cd .; git clone https://github.com/org/mypkg D:\local\Temp\8d3397e1e014401\gopath\src\github.com\org\mypkg …
在Azure App Service中,我知道有一个Kudu调试控制台,如下所示:
可用于在该控制台中触发命令.
但是如果我触发这样的python shell,我发现这个控制台会被卡住:
d:\家\网站\ wwwroot的\ ENV \脚本> python.exe
是否可以在像Heroku这样的天蓝应用服务下使用交互式python shell ?谢谢.
我已经使用 Kudu 构建服务(通过 GitHub 直接连接)设置了我的 aspnet core 2.2 应用程序的持续部署。直到前天都很好,但是UnauthorizedAccessException
当我从昨天开始尝试部署任何东西时就开始了。不过,我的应用程序没有任何变化。知道这里有什么问题吗?
这是详细的异常:
Command: "D:\home\site\deployments\tools\deploy.cmd"
Handling ASP.NET Core Web Application deployment.
System.UnauthorizedAccessException: Attempted to perform an unauthorized operation.
at Internal.Win32.RegistryKey.Win32Error(Int32 errorCode, String str)
at Internal.Win32.RegistryKey.SetValue(String name, String value)
at System.Environment.SetEnvironmentVariableFromRegistry(String variable, String value, Boolean fromMachine)
Failed exitCode=1, command=dotnet restore "D:\home\site\repository\myproject.sln"
at System.Environment.SetEnvironmentVariable(String variable, String value, EnvironmentVariableTarget target)
An error has occurred during web site deployment.
at Microsoft.DotNet.Cli.Utils.EnvironmentProvider.SetEnvironmentVariable(String variable, String value, EnvironmentVariableTarget target)
at Microsoft.DotNet.ShellShim.WindowsEnvironmentPath.AddPackageExecutablePathToUserPath()
at Microsoft.DotNet.Configurer.DotnetFirstTimeUseConfigurer.Configure()
at Microsoft.DotNet.Cli.Program.ConfigureDotNetForFirstTimeUse(IFirstTimeUseNoticeSentinel firstTimeUseNoticeSentinel, IAspNetCertificateSentinel aspNetCertificateSentinel, …
Run Code Online (Sandbox Code Playgroud) 我们目前正在使用基于MVC4/Umbraco的项目,使用Azure网站来托管它.
我们使用SCM_BUILD_ARGS在不同的构建设置之间进行更改,具体取决于我们部署到Azure的哪个站点(Test and Prod).
这是通过在UI中定义应用程序设置来完成的:
SCM_BUILD_ARGS =/p:环境=测试
之前我们使用Bitbucket Integration进行部署,这里的设置就像一个冠军.
我们现在已经切换到使用Git Deployment,在测试通过后从我们的构建服务器推送更改.但是当我们这样做时,我们会得到一个可爱的错误.
"MSB1008:只能指定一个项目."
尝试从Azure上的UI重新部署相同的失败部署.
经过一些试验和错误,我结束了进入deploy.cmd并输出%SCM_BUILD_ARGS%
脚本中的值.它似乎/
从SCM_BUILD_ARGS中删除,但仅在使用Git部署时,而不是Bitbucket Integration或从UI重新部署.
作为解决方法我现在已经添加了一个/
到前面的deploy.cmd脚本%SCM_BUILD_ARGS%
,但这当然会中断重新部署,因为我们//p:Environment=Test
在%SCM_BUILD_ARGS%
插入值时在MSBuild命令中有.
:: 2. Build to the temporary path
IF /I "%IN_PLACE_DEPLOYMENT%" NEQ "1" (
:: Added / to SCM_BUILD_ARGS
%MSBUILD_PATH% "%DEPLOYMENT_SOURCE%\www\www.csproj" [....] /%SCM_BUILD_ARGS%
) ELSE (
%MSBUILD_PATH% "%DEPLOYMENT_SOURCE%\www\www.csproj" [....] /%SCM_BUILD_ARGS%
)
Run Code Online (Sandbox Code Playgroud)
任何人都知道这个问题的更好的解决方案或者它可能是Kudu的一个错误?我们希望从Git和Redeploy部署工作.
我正在使用Azure网站git deploy(通过Kudu),一切都很顺利,直到今天.当我执行新的git push并尝试部署时,我在测试运行时收到此错误消息:
错误:System.IO.FileNotFoundException:无法加载文件或程序集"Microsoft.VisualStudio.QualityTools.UTFResources,Version = 10.1.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a"或其依赖项之一.该系统找不到指定的文件.
在上次成功推送和我开始收到此错误之间,我没有添加或删除我的解决方案中的任何库或其他引用.谷歌搜索没有任何结果.该文件位于我的本地GAC中,但我无法在我的解决方案中的任何位置直接引用它.
重新部署我的解决方案的旧版本 - 在当天早些时候正确部署的版本 - 失败,并显示相同的错误消息.
如果我不知道更好的话,我会认为MS改变了一些东西而且打破了kudu.
有关解决此问题的任何想法,不愿意用Azure打开票证吗?
编辑 - 更多详情:
运行单元测试时失败了.这是我的deploy.cmd的相关部分:
:: 1. Build to the temporary path
IF /I "%IN_PLACE_DEPLOYMENT%" NEQ "1" (
%MSBUILD_PATH% "%DEPLOYMENT_SOURCE%\Payboard.Web\Payboard.Web.csproj" /nologo /verbosity:m /t:Build /t:pipelinePreDeployCopyAllFilesToOneFolder /p:_PackageTempDir="%DEPLOYMENT_TEMP%";AutoParameterizationWebConfigConnectionStrings=false;Configuration=Release /p:SolutionDir="%DEPLOYMENT_SOURCE%\.\\" %SCM_BUILD_ARGS%
) ELSE (
%MSBUILD_PATH% "%DEPLOYMENT_SOURCE%\Payboard.Web\Payboard.Web.csproj" /nologo /verbosity:m /t:Build /p:AutoParameterizationWebConfigConnectionStrings=false;Configuration=Release /p:SolutionDir="%DEPLOYMENT_SOURCE%\.\\" %SCM_BUILD_ARGS%
)
IF !ERRORLEVEL! NEQ 0 (
echo Build failed with ErrorLevel !0!
goto error
)
:: 2. Building test projects
rem echo Building …
Run Code Online (Sandbox Code Playgroud) 我对将 webjobs 部署到 azure 感到困惑。
我正在使用 .net core,因此我在deploy.cmd
文件中手动发布我的网络作业,例如如下所示:
call :ExecuteCmd dotnet publish "%DEPLOYMENT_SOURCE%\My.WebJobs\Mt.WebJobs.csproj" --output "%DEPLOYMENT_TEMP%\App_Data\Jobs\Continuous\MyWebJobs" --configuration Release
然后将 webjob 部署到该deployment_temp
文件夹。之后,KuduSync 启动并同步,如果我查看的DEPLOYMENT_TARGET
话d:\home\site\wwwroot
,我可以看到那里有一个App_Data\Jobs\Continuous\MyWebJobs
文件夹,并且我的所有文件都已正确部署并同步到该文件夹。
但是,当我运行 webjob 时,它报告它正在从完全不同的位置运行 ( D:\local\Temp\jobs\continuous\MyCustomerIO\bp003r3f.h2g
)。当我查看该文件夹时,我看到了大部分部署的 webjob 文件,但其中的一些 JSON 配置文件App_Data...
丢失了。
那么 - 为什么我的网络作业从这里运行?为什么我部署的一些文件丢失了?
现在,即使通过 KUDU 进行 zip 部署返回成功,我也再次面临在 Azure Function App 上使用旧代码的问题。
当然,我希望新代码在大约 30 分钟后加载,而不是立即加载。
该问题已标记为已关闭。
在这种情况下被认为是最佳实践: