当前位置: 首页 > 知识库问答 >
问题:

如何从Azure DevOps中的文件夹(而不是zip)部署WebApp

焦苏燕
2023-03-14

我无法让DevOps使用文件夹进行部署,它向我显示以下错误:

[错误]错误:未找到具有指定模式的包:d:\a\1\a*。deploy.cmd
检查任务中提到的包是作为构建中的工件发布的,还是作为先前阶段发布并在当前作业中下载的。

Azure App Service Deploy任务文档说明了有关Package参数的以下内容:

包的文件路径,或者包含由MSBuild生成的应用服务内容的文件夹的路径,或者压缩zip或war文件的路径。

这是我的发布任务:

  - task: DotNetCoreCLI@2
    inputs:
      command: publish
      publishWebProjects: false
      arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
      zipAfterPublish: false
      modifyOutputPath: true
      projects: |
        src/Company/Project.csproj 

和我的部署任务:

  - task: AzureRmWebAppDeployment@4
    inputs:
      ConnectionType: 'PublishProfile'
      PublishProfilePath: '$(System.DefaultWorkingDirectory)/src/Company/Properties/PublishProfiles/WebDeploy.pubxml'
      PublishProfilePassword: '$(password)'
      Package: '$(Build.ArtifactStagingDirectory)/Company'

为什么它要查找部署.cmd?我做错了什么?

共有2个答案

富锦
2023-03-14

请尝试

  - task: AzureRmWebAppDeployment@4
    inputs:
      ConnectionType: 'PublishProfile'
      PublishProfilePath: '$(System.DefaultWorkingDirectory)/src/Company/Properties/PublishProfiles/WebDeploy.pubxml'
      PublishProfilePassword: '$(password)'
      Package: '$(Build.ArtifactStagingDirectory)/Company/*'

不同之处在于输入。

洪昊然
2023-03-14

错误:未找到具有指定模式的包: d:\a\1\a*.部署.cmd

从错误消息来看,此问题的根本原因可能是路径中没有此类文件(xxx.deploy.cmd)。

“Dotnet发布”任务不会生成此文件。

要解决此问题,您需要添加一个 “Dotnet构建”任务 。此任务将生成必要的文件(例如 deploy.cmd):

同时,您还需要在arguments字段中添加配置参数。

/p:DeployOnBuild=true /p:WebPublishMethod=package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)

这是一个例子:

- task: DotNetCoreCLI@2
  displayName: Build
  inputs:
    projects: '**/*.csproj'
    arguments: '/p:DeployOnBuild=true /p:WebPublishMethod=package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)'

- task: DotNetCoreCLI@2
  displayName: Publish
  inputs:
    command: publish
....

然后,将添加 xxx.

希望这有所帮助。

 类似资料:
  • 我正在通过Intellij IDEA Tomcat集成测试Web应用程序(Apache Wicket Based)。在那里,我注意到web应用程序认为它在tomcat的bin文件夹中运行。另外,当我调用时,它返回。但是当我在tomcat中手动部署相同的web应用程序时,它工作正常。如何在Intellij IDEA中解决这个问题?

  • 这是我的全部剧本。除了最后2行之外,所有的内容都用于查找压缩的PDF文件并移动它们。 在第一部分中,脚本检查文件夹中每个pdf文件的前几个字节。如果它们以“pk*”开头,它们是zip文件,并被移动到zipped文件夹中。对于每个PDF/ZIP文件,在它旁边的文件夹中有一个关联的HL7文件。 这些也需要移动到同一个文件夹。从那里,zip文件需要解压缩并重新定位到“unzipped” 所以我需要找到一

  • 下面是我在powershell中的脚本 我有几个*.zip文件,我想解压缩到一个特定的文件夹中。问题是,7zip创建名为*.zip的子文件夹,并将文件提取到该文件夹中。 例如,我有a.zip,b.zip和c.zip文件,我想把它们解压缩到构建文件夹中。现在,在我的命令之后,它们被解压缩到: 构建/c/(这里是c.zip文件) 我希望它们都在builds/(这里是a、b、c文件)中,并带有完整的目录

  • 我在为Liferay创建portlet时遇到了困难。我有标准安装,Liferay门户位于中,插件SDK位于中。 我已经在liferay_home/plugins/portlet/my portlet中放置了新的portlet应用程序。从那里我运行,我可以看到WAR文件已成功组装并复制到。 然而,在运行的Liferay Portal instancel中,我没有看到刚刚复制到部署文件夹的portle

  • 我有一个followgradle任务,它负责包装。它在其中生成一个zip文件。但是,作为最终发行版的一部分,我正在尝试在zip文件中创建一个空文件夹调用日志。 上面的代码不起作用,我已经试过了 然后复制 问题是,如果我运行gradleclean包,它会清除导致日志文件夹未创建的构建文件夹。有没有人能解决在我们试图创建的zip发行版中创建空文件夹的问题?

  • 我只想从s3 bucket inside文件夹下载最新文件。实际上,文件夹中有多个文件夹和文件。但我只需要下载最新日期的文件,并通过从多个文件夹中选择将其上载到一个文件夹中。我指的是stackoverflow源代码中的代码。 下面是s3桶的结构: 所以基本上,我想从文件夹(文件夹_1)内的s3 bucket下载最新文件,而不是从文件夹(文件夹_12、文件夹_13、文件夹_14)内下载最新文件。 我