'Azure yml Deployment successful. artifact is published , but not consumed. unable to access apis
I am trying to deploy a simple spring boot application via the Azure Yml pipeline. the deployment is successful but the URL only shows the default Microsoft webpage and says I need to deploy the code. in the pipeline, my artifact is published, but not consumed. the artifact is packaged as .jar file. app service uses zip deployment. i don't know how to make sure the artifact is packaged as zip , not jar.
trigger:
- master
variables:
azureSubscription: 'xxxxxxx'
webAppName: 'yyyyyyy'
stages:
- stage: BuildApplication
jobs:
- job: Build
pool:
vmImage: ubuntu-latest
steps:
- task: Maven@3
inputs:
mavenPomFile: 'pom.xml'
mavenOptions: '-Xmx3072m'
javaHomeOption: 'JDKVersion'
jdkVersionOption: '1.8'
jdkArchitectureOption: 'x64'
publishJUnitResults: true
testResultsFiles: '**/surefire-reports/TEST-*.xml'
goals: 'package'
- task: CopyFiles@2
inputs:
targetFolder: '$(Build.ArtifactStagingDirectory)'
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'drop'
publishLocation: 'Container'
- stage: DeployApplication
jobs:
- job: Deploy
pool:
vmImage: ubuntu-latest
steps:
- task: DownloadBuildArtifacts@1
inputs:
buildType: 'current'
downloadType: 'single'
artifactName: 'drop'
downloadPath: '$(System.ArtifactsDirectory)'
- task: AzureRmWebAppDeployment@4
displayName: 'Azure Web App Deploy: webApp'
inputs:
ConnectionType: 'AzureRM'
azureSubscription: $(azureSubscription)
appType: 'webApp'
WebAppName: $(webAppName)
packageForLinux: '$(System.ArtifactsDirectory)/**/*.zip'
Solution 1:[1]
You could add one more task on your BuildApplication stage to zip your output of the build step.
For example you could use the Archive files task and specify the folder on which the .jar files are located. You should change the rootFolderOrFile variable. The zip output will be located on $(Build.ArtifactStagingDirectory)' with the name '$(Build.BuildId).zip
As you publish your ArtifactStagingDirectory inside this folder your BuildId.zip will contain your files. The deployment step should work without additional changes.
- task: ArchiveFiles@2
inputs:
rootFolderOrFile: '$(Build.ArtifactStagingDirectory)'
includeRootFolder: true
archiveType: 'zip'
archiveFile: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip'
replaceExistingArchive: true
Solution 2:[2]
Well if your application is maven based, you should get jar/war file.
- step1:- Rename the file as ROOT.war/ROOT.jar.
- step2:- change deploy webapp task as below.
packageForLinux: '$(System.ArtifactsDirectory)/**/*.war'
packageForLinux: '$(System.ArtifactsDirectory)/**/*.jar'
based on your artifact output.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | GeralexGR |
| Solution 2 |
