Azure DevOps - 构建和部署简单的 PHP Web 应用程序

时间:2021-02-01 20:19:10

标签: php azure azure-devops azure-pipelines azure-yaml-pipelines

我正在尝试使用 CI/CD 并按照 this 链接构建和部署一个带有 index.php 文件的简单 php 应用程序。下面是已经配置好的yaml文件,构建管道执行成功。

# PHP
# Test and package your PHP project.
# Add steps that run tests, save build artifacts, deploy, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/php
 
trigger:
- main
 
variables:
 
  # Azure Resource Manager connection created during pipeline creation
  azureSubscription: 'phptestapp-connection'
  
  # Web app name
  webAppName: 'phptestapp'
  
  # Resource group
  resourceGroupName: 'MyResourceGroup'
 
  # Environment name
  environmentName: 'phptestapp'
 
  # Agent VM image name
  vmImageName: 'ubuntu-latest'
  
stages:
- stage: Archive
  displayName: Archive stage
  jobs:  
  - job: Archive
    displayName: Archive
    pool:
      vmImage: $(vmImageName)
    steps:   
    - task: AzureAppServiceSettings@1
      inputs:
        azureSubscription: $(azureSubscription)
        appName: $(webAppName)
        resourceGroupName: $(resourceGroupName)
        appSettings: |
          [
            {
              "name": "SCM_DO_BUILD_DURING_DEPLOYMENT",
              "value": "true"
            }
          ]
    - task: ArchiveFiles@2
      displayName: 'Archive files'
      inputs:
        rootFolderOrFile: '$(System.DefaultWorkingDirectory)'
        includeRootFolder: false
        archiveType: zip
        archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip
        replaceExistingArchive: true
 
    - upload: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip
      artifact: drop
 
- stage: Deploy
  displayName: Deploy stage
  dependsOn: Archive
  condition: succeeded()
  jobs:
  - deployment: Deploy
    displayName: Deploy
    environment: $(environmentName)
    pool: 
      vmImage: $(vmImageName)
    strategy:
      runOnce:
        deploy:
          steps:            
          - task: AzureWebApp@1
            displayName: 'Azure Web App Deploy: PHP Web App'
            inputs:
              azureSubscription: $(azureSubscription)
              appType: webAppLinux
              appName: $(webAppName)
              runtimeStack: 'PHP|7.2'
              package: $(Pipeline.Workspace)/drop/$(Build.BuildId).zip

然而,当我配置和运行发布管道时,它抛出如下异常

> Error: No package found with specified pattern:
> D:\a\r1\a\**\*.zip<br/> Check if the package mentioned in the task is
> published as an artifact in the build or a previous stage and
> downloaded in the current job.

附言在构建管道 yaml 文件中添加以下内容不会产生任何影响

- task: PublishBuildArtifacts@1

这个想法是为一个简单的 PHP 网络应用程序开发 CI/CD,然后将相同的概念实现到 PHP 框架,如 Wordpress/Laravel/Magento2

乐于接受想法和建议

1 个答案:

答案 0 :(得分:0)

尝试更换

- upload: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip
  artifact: drop

- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip'
    ArtifactName: 'drop'
    publishLocation: 'Container'