簡體   English   中英

CI-CD Azure devops 用於 function 應用程序部署

[英]CI-CD Azure devops for function app deployment

我的 Function 應用程序名稱:

 my_func_dev_app

我在項目中擁有的功能

func_dev
func_prd

將 func_dev 推送到 my_func_dev_app

將 func_prd 推送到 my_func_prd_app

但它正在將 func_dev 和 func_prd 推到 my_func_de_app

我的應用程序文件夾結構

 (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_app 並忽略 func_prd

怎么修? 將 func_dev 推送到 my_func_dev_app 並忽略 func_prd

為了解決這個問題,你可以把你的兩個項目的package分別放入zip。

在 ArchiveFiles 任務中,您需要指定一個特定的項目。

例如:

對於func_dev項目: $(Build.ArtifactStagingDirectory)/myapp_function/func_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'

那么你只能package這個項目對應function這個app名稱。

如果您想在一個管道中同時將兩個項目部署到相應的 function 應用程序中,您可以使用相同的方法將 package 兩個項目分開為 zip。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM