13
votes

I created a build definition in vsts with npm build and then I copy the build folder to the drop location.

The build pipeline is working fine

Then I created the release definition and it downloads the files correctly also:

2018-08-10T16:29:18.5241580Z Downloading artifact drop from: https://xx.visualstudio.com//_apis/resources/Containers/711976?itemPath=drop&isShallow=true&api-version=4.1-preview.4
2018-08-10T16:29:18.5252684Z Downloading drop/s/build/asset-manifest.json to D:\a\r1\a\InnovationInABox-CI\drop\s\build\asset-manifest.json
2018-08-10T16:29:18.5253850Z Downloaded drop/s/build/asset-manifest.json to D:\a\r1\a\InnovationInABox-CI\drop\s\build\asset-manifest.json
2018-08-10T16:29:18.5338277Z Downloading drop/s/build/favicon.png to D:\a\r1\a\InnovationInABox-CI\drop\s\build\favicon.png
2018-08-10T16:29:18.5338720Z Downloaded drop/s/build/favicon.png to D:\a\r1\a\InnovationInABox-CI\drop\s\build\favicon.png
2018-08-10T16:29:19.5191236Z Downloading drop/s/build/index.html to D:\a\r1\a\InnovationInABox-CI\drop\s\build\index.html
2018-08-10T16:29:19.5191520Z Downloaded drop/s/build/index.html to D:\a\r1\a\InnovationInABox-CI\drop\s\build\index.html
2018-08-10T16:29:19.5195415Z Downloading drop/s/build/manifest.json to D:\a\r1\a\InnovationInABox-CI\drop\s\build\manifest.json
2018-08-10T16:29:19.5195775Z Downloaded drop/s/build/manifest.json to D:\a\r1\a\InnovationInABox-CI\drop\s\build\manifest.json
2018-08-10T16:29:19.5198280Z Downloading drop/s/build/service-worker.js to D:\a\r1\a\InnovationInABox-CI\drop\s\build\service-worker.js
2018-08-10T16:29:19.5198598Z Downloaded drop/s/build/service-worker.js to D:\a\r1\a\InnovationInABox-CI\drop\s\build\service-worker.js
2018-08-10T16:29:19.5704236Z Downloading drop/s/build/css/ionicons.min.css to D:\a\r1\a\InnovationInABox-CI\drop\s\build\css\ionicons.min.css
2018-08-10T16:29:19.5725284Z Downloaded drop/s/build/css/ionicons.min.css to D:\a\r1\a\InnovationInABox-CI\drop\s\build\css\ionicons.min.css
2018-08-10T16:29:19.5833575Z Downloading drop/s/build/iconfont/iconfont.svg to D:\a\r1\a\InnovationInABox-CI\drop\s\build\iconfont\iconfont.svg
2018-08-10T16:29:19.5868415Z Downloading drop/s/build/fonts/ionicons.eot to D:\a\r1\a\InnovationInABox-CI\drop\s\build\fonts\ionicons.eot
2018-08-10T16:29:19.5901623Z Downloading drop/s/build/fonts/ionicons.svg to D:\a\r1\a\InnovationInABox-CI\drop\s\build\fonts\ionicons.svg
2018-08-10T16:29:19.5922072Z Downloaded drop/s/build/iconfont/iconfont.svg to D:\a\r1\a\InnovationInABox-CI\drop\s\build\iconfont\iconfont.svg
2018-08-10T16:29:19.5967502Z Downloading drop/s/build/iconfont/iconfont.ttf to D:\a\r1\a\InnovationInABox-CI\drop\s\build\iconfont\iconfont.ttf
2018-08-10T16:29:19.5990580Z Downloaded drop/s/build/fonts/ionicons.eot to D:\a\r1\a\InnovationInABox-CI\drop\s\build\fonts\ionicons.eot
2018-08-10T16:29:19.6014585Z Downloading drop/s/build/iconfont/iconfont.eot to D:\a\r1\a\InnovationInABox-CI\drop\s\build\iconfont\iconfont.eot
2018-08-10T16:29:19.6041800Z Downloaded drop/s/build/iconfont/iconfont.ttf to D:\a\r1\a\InnovationInABox-CI\drop\s\build\iconfont\iconfont.ttf
2018-08-10T16:29:19.6082471Z Downloading drop/s/build/fonts/ionicons.woff to D:\a\r1\a\InnovationInABox-CI\drop\s\build\fonts\ionicons.woff
2018-08-10T16:29:19.6355639Z Downloading drop/s/build/fonts/ionicons.ttf to D:\a\r1\a\InnovationInABox-CI\drop\s\build\fonts\ionicons.ttf
2018-08-10T16:29:19.6356035Z Downloaded drop/s/build/fonts/ionicons.svg to D:\a\r1\a\InnovationInABox-CI\drop\s\build\fonts\ionicons.svg
2018-08-10T16:29:19.6609672Z Downloaded drop/s/build/iconfont/iconfont.eot to D:\a\r1\a\InnovationInABox-CI\drop\s\build\iconfont\iconfont.eot
2018-08-10T16:29:19.6614749Z Downloading drop/s/build/images/icons/icon-128x128.png to D:\a\r1\a\InnovationInABox-CI\drop\s\build\images\icons\icon-128x128.png
2018-08-10T16:29:19.6649976Z Downloaded drop/s/build/images/icons/icon-128x128.png to D:\a\r1\a\InnovationInABox-CI\drop\s\build\images\icons\icon-128x128.png
2018-08-10T16:29:19.6691472Z Downloaded drop/s/build/fonts/ionicons.woff to D:\a\r1\a\InnovationInABox-CI\drop\s\build\fonts\ionicons.woff
2018-08-10T16:29:19.6715380Z Downloading drop/s/build/images/icons/icon-144x144.png to D:\a\r1\a\InnovationInABox-CI\drop\s\build\images\icons\icon-144x144.png
2018-08-10T16:29:19.6721599Z Downloaded drop/s/build/fonts/ionicons.ttf to D:\a\r1\a\InnovationInABox-CI\drop\s\build\fonts\ionicons.ttf
2018-08-10T16:29:19.6730634Z Downloaded drop/s/build/images/icons/icon-144x144.png to D:\a\r1\a\InnovationInABox-CI\drop\s\build\images\icons\icon-144x144.png
2018-08-10T16:29:19.6925986Z Downloading drop/s/build/images/icons/icon-192x192.png to D:\a\r1\a\InnovationInABox-CI\drop\s\build\images\icons\icon-192x192.png
2018-08-10T16:29:19.6932585Z Downloaded drop/s/build/images/icons/icon-192x192.png to D:\a\r1\a\InnovationInABox-CI\drop\s\build\images\icons\icon-192x192.png
2018-08-10T16:29:19.7051155Z Downloading drop/s/build/images/icons/icon-384x384.png to D:\a\r1\a\InnovationInABox-CI\drop\s\build\images\icons\icon-384x384.png
2018-08-10T16:29:19.7068272Z Downloaded drop/s/build/images/icons/icon-384x384.png to D:\a\r1\a\InnovationInABox-CI\drop\s\build\images\icons\icon-384x384.png
2018-08-10T16:29:19.7128194Z Downloading drop/s/build/static/css/main.1338bde0.css to D:\a\r1\a\InnovationInABox-CI\drop\s\build\static\css\main.1338bde0.css
2018-08-10T16:29:19.7136566Z Downloading drop/s/build/images/icons/icon-72x72.png to D:\a\r1\a\InnovationInABox-CI\drop\s\build\images\icons\icon-72x72.png
2018-08-10T16:29:19.7139811Z Downloaded drop/s/build/images/icons/icon-72x72.png to D:\a\r1\a\InnovationInABox-CI\drop\s\build\images\icons\icon-72x72.png
2018-08-10T16:29:19.7210596Z Downloaded drop/s/build/static/css/main.1338bde0.css to D:\a\r1\a\InnovationInABox-CI\drop\s\build\static\css\main.1338bde0.css
2018-08-10T16:29:19.7331736Z Downloading drop/s/build/static/js/1.f6d2865a.chunk.js to D:\a\r1\a\InnovationInABox-CI\drop\s\build\static\js\1.f6d2865a.chunk.js
2018-08-10T16:29:19.7336557Z Downloaded drop/s/build/static/js/1.f6d2865a.chunk.js to D:\a\r1\a\InnovationInABox-CI\drop\s\build\static\js\1.f6d2865a.chunk.js
2018-08-10T16:29:19.7384208Z Downloading drop/s/build/static/js/2.194ad0ec.chunk.js to D:\a\r1\a\InnovationInABox-CI\drop\s\build\static\js\2.194ad0ec.chunk.js
2018-08-10T16:29:19.7388897Z Downloaded drop/s/build/static/js/2.194ad0ec.chunk.js to D:\a\r1\a\InnovationInABox-CI\drop\s\build\static\js\2.194ad0ec.chunk.js
2018-08-10T16:29:19.7493081Z Downloading drop/s/build/images/icons/icon-512x512.png to D:\a\r1\a\InnovationInABox-CI\drop\s\build\images\icons\icon-512x512.png
2018-08-10T16:29:19.7505060Z Downloaded drop/s/build/images/icons/icon-512x512.png to D:\a\r1\a\InnovationInABox-CI\drop\s\build\images\icons\icon-512x512.png
2018-08-10T16:29:19.7521694Z Downloading drop/s/build/images/icons/icon-96x96.png to D:\a\r1\a\InnovationInABox-CI\drop\s\build\images\icons\icon-96x96.png
2018-08-10T16:29:19.7524304Z Downloaded drop/s/build/images/icons/icon-96x96.png to D:\a\r1\a\InnovationInABox-CI\drop\s\build\images\icons\icon-96x96.png
2018-08-10T16:29:19.7531569Z Downloading drop/s/build/images/icons/icon-152x152.png to D:\a\r1\a\InnovationInABox-CI\drop\s\build\images\icons\icon-152x152.png
2018-08-10T16:29:19.7544109Z Downloading drop/s/build/iconfont/iconfont.woff to D:\a\r1\a\InnovationInABox-CI\drop\s\build\iconfont\iconfont.woff
2018-08-10T16:29:19.7561190Z Downloaded drop/s/build/images/icons/icon-152x152.png to D:\a\r1\a\InnovationInABox-CI\drop\s\build\images\icons\icon-152x152.png
2018-08-10T16:29:19.7583131Z Downloaded drop/s/build/iconfont/iconfont.woff to D:\a\r1\a\InnovationInABox-CI\drop\s\build\iconfont\iconfont.woff
2018-08-10T16:29:19.7615220Z Downloading drop/s/build/static/js/4.0230ee4e.chunk.js to D:\a\r1\a\InnovationInABox-CI\drop\s\build\static\js\4.0230ee4e.chunk.js
2018-08-10T16:29:19.7620680Z Downloaded drop/s/build/static/js/4.0230ee4e.chunk.js to D:\a\r1\a\InnovationInABox-CI\drop\s\build\static\js\4.0230ee4e.chunk.js
2018-08-10T16:29:19.8139663Z Downloading drop/s/build/static/media/sign.adf5846b.jpg to D:\a\r1\a\InnovationInABox-CI\drop\s\build\static\media\sign.adf5846b.jpg
2018-08-10T16:29:19.8209000Z Downloaded drop/s/build/static/media/sign.adf5846b.jpg to D:\a\r1\a\InnovationInABox-CI\drop\s\build\static\media\sign.adf5846b.jpg
2018-08-10T16:29:19.8445251Z Downloading drop/s/build/static/media/uk.bc48afcc.svg to D:\a\r1\a\InnovationInABox-CI\drop\s\build\static\media\uk.bc48afcc.svg
2018-08-10T16:29:19.8451360Z Downloaded drop/s/build/static/media/uk.bc48afcc.svg to D:\a\r1\a\InnovationInABox-CI\drop\s\build\static\media\uk.bc48afcc.svg
2018-08-10T16:29:19.9315367Z Downloading drop/s/build/static/media/france.bcd389de.svg to D:\a\r1\a\InnovationInABox-CI\drop\s\build\static\media\france.bcd389de.svg
2018-08-10T16:29:19.9316203Z Downloading drop/s/build/static/media/spain.6a9dc11f.svg to D:\a\r1\a\InnovationInABox-CI\drop\s\build\static\media\spain.6a9dc11f.svg
2018-08-10T16:29:19.9316588Z Downloaded drop/s/build/static/media/france.bcd389de.svg to D:\a\r1\a\InnovationInABox-CI\drop\s\build\static\media\france.bcd389de.svg
2018-08-10T16:29:19.9317287Z Downloaded drop/s/build/static/media/spain.6a9dc11f.svg to D:\a\r1\a\InnovationInABox-CI\drop\s\build\static\media\spain.6a9dc11f.svg
2018-08-10T16:29:19.9430066Z Downloading drop/s/build/static/media/italy.604345b4.svg to D:\a\r1\a\InnovationInABox-CI\drop\s\build\static\media\italy.604345b4.svg
2018-08-10T16:29:19.9430433Z Downloaded drop/s/build/static/media/italy.604345b4.svg to D:\a\r1\a\InnovationInABox-CI\drop\s\build\static\media\italy.604345b4.svg
2018-08-10T16:29:20.0800791Z Downloading drop/s/build/static/js/3.06bbf4d1.chunk.js to D:\a\r1\a\InnovationInABox-CI\drop\s\build\static\js\3.06bbf4d1.chunk.js
2018-08-10T16:29:20.0801318Z Downloaded drop/s/build/static/js/3.06bbf4d1.chunk.js to D:\a\r1\a\InnovationInABox-CI\drop\s\build\static\js\3.06bbf4d1.chunk.js
2018-08-10T16:29:20.0962282Z Downloading drop/s/build/static/js/0.cdfd5bd5.chunk.js to D:\a\r1\a\InnovationInABox-CI\drop\s\build\static\js\0.cdfd5bd5.chunk.js
2018-08-10T16:29:20.0962659Z Downloaded drop/s/build/static/js/0.cdfd5bd5.chunk.js to D:\a\r1\a\InnovationInABox-CI\drop\s\build\static\js\0.cdfd5bd5.chunk.js
2018-08-10T16:29:20.1118659Z Downloading drop/s/build/static/js/main.03f3e98f.js to D:\a\r1\a\InnovationInABox-CI\drop\s\build\static\js\main.03f3e98f.js
2018-08-10T16:29:20.1541007Z Downloaded drop/s/build/static/js/main.03f3e98f.js to D:\a\r1\a\InnovationInABox-CI\drop\s\build\static\js\main.03f3e98f.js
2018-08-10T16:29:20.1566610Z Downloading drop/s/build/static/media/china.4e4d59b7.svg to D:\a\r1\a\InnovationInABox-CI\drop\s\build\static\media\china.4e4d59b7.svg
2018-08-10T16:29:20.1569167Z Downloaded drop/s/build/static/media/china.4e4d59b7.svg to D:\a\r1\a\InnovationInABox-CI\drop\s\build\static\media\china.4e4d59b7.svg
2018-08-10T16:29:21.1552541Z Total Files: 35, Processed: 35, Skipped: 0, Failed: 0, Download time: 3.288 secs, Download size: 1.320MB
2018-08-10T16:29:21.1844380Z Successfully downloaded artifacts to D:\a\r1\a/InnovationInABox-CI
2018-08-10T16:29:21.1897267Z ##[section]Finishing: Download artifact - InnovationInABox-CI

But the next step, is to deploy to an Azure web app: but I get this error:

2018-08-10T16:29:21.8347426Z Got connection details for Azure App Service:'uiapp'
2018-08-10T16:29:24.0708659Z ##[error]Error: No package found with specified pattern: D:\a\r1\a\**\*.zip
2018-08-10T16:29:26.8772211Z Successfully updated deployment History at https://xxx.scm.azurewebsites.net/api/deployments/81533918564296
2018-08-10T16:29:26.8855771Z ##[section]Finishing: Deploy Azure App Service

How can I copy all those files from the build folder (which are not in a .zip file) to Azure webapp?

10

10 Answers

15
votes

In my case (build .sln with c# project from azure git) the build was saving the package in D:\a\1\a\ folder (instead of r1\a) and I wasn't able to edit the build steps in the UI so I edited the newly added azure-pipelines.yml file and added one more task at the very end:

- task: PublishBuildArtifacts@1

This copies the .zip package to a "drop" location (r1/a) which the Release Pipeline expects.

​And now the Release Pipeline is finding the file in r1/a folder.

13
votes

If you are using "Azure App Service Deploy" task, set the "Package or folder" path to: $(System.DefaultWorkingDirectory)\InnovationInABox-CI\drop\s\build. enter image description here

9
votes

For anyone else experiencing this problem using Azure DevOps, it's useful to turn on debug mode. For your release, define the pipeline variable System.Debug with value true. That gave me this output which was much more useful: enter image description here

Now at least I know it's on my target VM and the path is probably wrong.

1
votes

You can't use wildcards for folder names unfortunately, only for file names. If you're using a 'Copy Files' build task you can put this value in 'Source Folder':
D:\a\r1\a\

and this value in 'Contents':
**\*.zip

Or you can put the full file directories with *.zip. Good luck.

0
votes

First i think you should add artifacts1 then attach it to the packages2

0
votes

In my case (react app deployed as static content to app service) I needed to add a step to archive the build directory before publishing it:

- task: ArchiveFiles@2
  inputs:
    rootFolderOrFile: '$(System.DefaultWorkingDirectory)/build' 
    includeRootFolder: false 
    archiveType: 'zip'
    archiveFile: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip'

- publish: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip
  artifact: '$(Build.BuildId)'

0
votes

Per Azure official document for setting up Pipelines (YAML files) for Node.js, Javascript apps from this link https://docs.microsoft.com/en-us/azure/devops/pipelines/ecosystems/javascript?view=azure-devops&tabs=code

  1. Configure the YAML file as below:
trigger:
- master

pool:
  vmImage: 'ubuntu-latest'

steps:
- task: NodeTool@0
  inputs:
    versionSpec: '10.x'
  displayName: 'Install Node.js'

- script: |
    npm install
    npm run build
  displayName: 'npm install and build'

- task: CopyFiles@2
  inputs:
    Contents: 'build/**' # Pull the build directory (React)
    TargetFolder: '$(Build.ArtifactStagingDirectory)'

- task: PublishBuildArtifacts@1
  inputs: 
    pathtoPublish: $(Build.ArtifactStagingDirectory) # dist or build files
    ArtifactName: 'www' # output artifact named www
  1. On the latest version of Azure Devops, edit Release under Pipeline. Note that Build section has been taken off in the latest version (as of June 2020), so some older answers/docs was not working. enter image description here

  2. Click on Deploy Azure App Services and on the right panel click on ...(Expand Folder) for Package or folder Option enter image description here

  3. Under Linked Artifacts => MyProject (Build) => www, select dist folder. enter image description here

Save this and then create release, this should solve the error [error]Error: No package found with the specified pattern: D:\a\r1\a\**\*.zip<br/>

0
votes

I used the below task in Azure DevOps release yaml pipeline for deployment of azure function app and set the package to $(System.DefaultWorkingDirectory) and it worked for me.

- task: AzureFunctionApp@1
                inputs:
                  azureSubscription: XXXXXXXXX
                  appType: 'functionApp'
                  appName: 'funcapp-test'
                  package: '$(System.DefaultWorkingDirectory)'
                  appSettings: 
                  deploymentMethod: 'auto'
0
votes

In my case I use azure template but change vmImage: "windows-latest", When I check logs, find out build command didn't run so I figure out I should change default script of install and build to separate script

trigger:
- main

pool:
  vmImage: 'windows-latest'

variables:
  buildFolder: 'build'

steps:
- task: NodeTool@0
  inputs:
    versionSpec: '10.x'
  displayName: 'Install Node.js'

- script: |
    npm install
  displayName: 'npm install'

- script: |
    npm run build
  displayName: 'npm build'

- task: CopyFiles@2
  inputs:
    contents: 'build/**'
    targetFolder: '$(Build.ArtifactStagingDirectory)'
    cleanTargetFolder: true

- task: ArchiveFiles@2
  inputs:
    rootFolderOrFile: $(Build.ArtifactStagingDirectory)
    archiveType: 'zip'
    archiveFile: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip'
    includeRootFolder: false

- task: PublishBuildArtifacts@1
  inputs:
    pathtoPublish: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip'
    artifactName: 'drop'
    publishLocation: 'Container'
0
votes

Just went through this again. What worked for me was modifying "Package or folder" to use Agent.ReleaaseDirectory. Screenshot below, may it save someone else the angst.

enter image description here