我有一个CI管道(YAML),它构建了一个将部署到现有Azure函数中的存储库。CI管道正在做它的工作。然而,在完成之后,我转到Function App -> App files ->我可以看到azure-pipeline.yml包含在那里(或者我认为它包含在构建过程中)。我试过使用路径和排除,但他们不工作。我的问题是,如何只排除azure-pipeline.yml,以便在管道构建完成后,azure-pipeline.yml不在Function App的App文件中。下面是我的YAML
trigger:
branches:
include:
- master
paths:
exclude:
- README.md
- azure-pipelines.yml
variables:
# Azure Resource Manager connection created during pipeline creation
azureSubscription: 'DevOps-Test'
# Function app name
functionAppName: 'test'
# Agent VM image name
vmImageName: 'vs2017-win2016'
# Working Directory
workingDirectory: '$(System.DefaultWorkingDirectory)/'
stages:
- stage: Build
displayName: Build stage
jobs:
- job: Build
displayName: Build
pool:
vmImage: $(vmImageName)
steps:
- powershell: |
if (Test-Path "extensions.csproj") {
dotnet build extensions.csproj --output ./$(workingDirectory)/bin
}
displayName: 'Build extensions'
- task: ArchiveFiles@2
displayName: 'Archive files'
inputs:
rootFolderOrFile: $(workingDirectory)
includeRootFolder: false
archiveType: zip
archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip
replaceExistingArchive: true
- publish: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip
artifact: drop
- task: DownloadBuildArtifacts@0
inputs:
buildType: 'current'
downloadType: 'single'
artifactName: 'drop'
downloadPath: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip'
- task: AzureFunctionApp@1
displayName: 'Azure functions app deploy'
inputs:
azureSubscription: '$(azureSubscription)'
appType: functionApp
appName: $(functionAppName)
package: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip'
字符串
3条答案
按热度按时间sauutmhj1#
以下语法意味着文件
README.md
或azure-pipelines.yml
不会触发构建。这并不意味着工作目录中排除了文件README.md
或azure-pipelines.yml
。字符串
我注意到您尝试归档文件夹
$(workingDirectory)
,并在变量中定义了workingDirectory
,实际上是$(System.DefaultWorkingDirectory)/
。System.DefaultWorkingDirectory
是下载源代码文件的代理上的本地路径。显然,文件
README.md
和azure-pipelines.yml
在源代码中,因此它们也被存档。您可以在ArchiveFiles task
之前添加CopyFiles task
,以便使用匹配模式将所需文件从源文件夹复制到目标文件夹,然后归档目标文件夹。举例来说:型
e0bqpujr2#
看这里
字符串
你在这里生产你的输出
./$(workingDirectory)/bin
,但你压缩了rootFolderOrFile: $(workingDirectory)
。请将其更改为rootFolderOrFile: $(workingDirectory)/bin
。编辑
请在调用存档前添加此
型
因此,您将从文件夹中删除它们,您以后存档。
rqdpfwrv3#
若要从Azure Function YAML DevOps管道中的zip存档中排除多个文件夹,您可以修改PowerShell脚本以在存档过程之前删除要排除的所有文件夹。以下是您的操作方法:
1.创建一个PowerShell脚本来删除要排除的多个文件夹。将此脚本保存到存储库中。我们称之为“RemoveFolders.ps1”。
字符串
1.在YAML DevOps管道中,在ArchiveFiles任务之前添加PowerShell任务以执行“RemoveFolders.ps1”脚本。
型
1.删除文件夹后,继续执行ArchiveFiles任务以创建zip存档。
型
将
<path_to_folder_1>
、<path_to_folder_2>
、<path_to_folder_3>
等替换为要排除的文件夹的实际路径。通过使用PowerShell脚本删除多个文件夹,当ArchiveFiles任务运行时,这些文件夹将从zip存档中排除。您可以根据需要向PowerShell脚本中的
$folders
数组添加任意多个文件夹路径,以从存档中排除多个文件夹。请确保根据您的项目结构调整脚本和文件夹路径,这应该会成功地从Azure Function YAML DevOps管道中的zip存档中排除指定的文件夹。