用于功能应用程序部署的CI-CD Azure devops

用于功能应用程序部署的CI-CD Azure devops,azure,azure-devops,azure-functions,azure-pipelines,Azure,Azure Devops,Azure Functions,Azure Pipelines,我的功能应用程序名称: my_func_dev_app 我在项目中的功能 func_dev func_prd 将func_dev推送到我的func_dev应用程序 将func_prd推到我的func_prd应用程序 但它将func_dev和func_prd都推到了我的func_de_应用程序上 我的应用程序文件夹结构 (folder)myapp_function (folder)func_dev --__init__.py -- function

我的功能应用程序名称:

 my_func_dev_app
我在项目中的功能

func_dev
func_prd
将func_dev推送到我的func_dev应用程序

将func_prd推到我的func_prd应用程序

但它将func_dev和func_prd都推到了我的func_de_应用程序上

我的应用程序文件夹结构

 (folder)myapp_function
 (folder)func_dev  --__init__.py
                   -- function.json
             
  (folder)func_prd  --__init__.py
                    -- function.json
  task.py
多级管道:

#pipelines1
trigger:
- '*'

stages:
- stage: 'Build'
  displayName: 'Build the web application'
  jobs: 
  - job: 'Build'
    displayName: 'Build job'
    pool:
      name: 'onprem_agent'

    steps:

    - task: CopyFiles@2
      displayName: 'Copy Files to: $(Build.ArtifactStagingDirectory)'
      inputs:
        SourceFolder: '$(Build.SourcesDirectory)'
        Contents: |
          **/*
          !.git/**
        OverWrite: true
        CleanTargetFolder: true
        TargetFolder: '$(Build.ArtifactStagingDirectory)'
    
    - task: ArchiveFiles@2
      displayName: "Archive files"
      inputs:
        rootFolderOrFile: '$(Build.ArtifactStagingDirectory)/myapp_function'
        includeRootFolder: false
        archiveFile: '$(Build.ArtifactStagingDirectory)/build$(Build.BuildId).zip'

    - task: PublishBuildArtifacts@1
      inputs:
        PathtoPublish: '$(Build.ArtifactStagingDirectory)'
        ArtifactName: 'myapp_function'


- stage: 'DEV_AZURE'
  displayName: 'Az DEV Deploy'
  dependsOn: Build
  condition: |
    and
    (
      succeeded(),
      eq(variables['Build.SourceBranchName'], variables['releaseBranchName'])
    )
  jobs:
  - deployment: Deploy
    environment: dev
    variables:
    - group: Release
    strategy:
      runOnce:
        deploy:
          steps:
          - download: current
            artifact: myapp_function
            displayName: Downloading artifacts
          
          - task: AzureFunctionApp@1
            inputs:
              azureSubscription: CI-CD
              appType: functionAppLinux
              appName: my_func_dev_app
              package: '$(Pipeline.Workspace)/myapp_function/*.zip'
              deployToSlotOrASE: true
              resourceGroupName: my-rg
              slotName: PRODUCTION
            displayName: 'Deploying dev'
如何修复?将func_dev推到my_func_dev_应用程序并忽略func_prd

如何修复?将func_dev推到my_func_dev_应用程序并忽略func_prd

为了解决这个问题,您可以将两个项目分别打包到zip中

在ArchiveFiles任务中,需要指定特定的项目

例如:

对于func\u dev项目:
$(Build.artifactstagindirectory)/myapp\u function/func\u dev

- task: ArchiveFiles@2
  displayName: "Archive files"
  inputs:
    rootFolderOrFile: '$(Build.ArtifactStagingDirectory)/myapp_function/func_dev'
    includeRootFolder: false
    archiveFile: '$(Build.ArtifactStagingDirectory)/build$(Build.BuildId)-func_dev.zip'
然后您只能打包与函数app name对应的项目


如果要同时将两个项目部署到一个管道中相应的功能应用程序,您可以使用相同的方法将这两个项目分别打包为zip。

我为不同的功能应用程序提供了相同的源文件。.单独打包会消耗更多的存储空间作为工件,并且需要更长的时间来构建。.有解决方案吗?将相同的源文件共享到不同的应用程序服务