I am trying to create a pipeline in order to publish my code in an Azure Function. In order to do that I am using the following as reference: https://learn.microsoft.com/en-us/azure/azure-functions/functions-how-to-azure-devops?tabs=dotnet-core%2Cyaml%2Ccsharp
However I got the following error:
Info: .NET Core SDK/runtime 2.2 and 3.0 are now End of Life(EOL) and have been removed from all hosted agents. If you're using these SDK/runtimes on hosted agents, kindly upgrade to newer versions which are not EOL, or else use UseDotNet task to install the required version.
After struggling a little I got the following Build Pipeline yaml (I comment the code that cause the error):
trigger:
- none
pr:
- none
pool:
vmImage: "windows-latest"
variables:
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
#output: "publish"
#project: "*.csproj"
solution: "**/*.sln"
steps:
- task: NuGetToolInstaller@1
- task: NuGetCommand@2
inputs:
restoreSolution: '$(solution)'
#- task: DotNetCoreCLI@2
# inputs:
# command: publish
# arguments: "--configuration $(buildConfiguration) --output $(output)"
# projects: $(project)
# publishWebProjects: false
# modifyOutputPath: false
# zipAfterPublish: false
- task: VSBuild@1
inputs:
solution: '$(solution)'
msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(Build.ArtifactStagingDirectory)"'
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
- task: ArchiveFiles@2
displayName: "Zip Files"
inputs:
rootFolderOrFile: "$(Build.ArtifactStagingDirectory)"
includeRootFolder: false
archiveFile: "$(System.DefaultWorkingDirectory)/build$(Build.BuildId).zip"
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: "$(System.DefaultWorkingDirectory)/build$(Build.BuildId).zip"
artifactName: "drop"
which generates the following artifact: that contains
and Release Pipeline:
steps:
- task: AzureFunctionApp@1
displayName: 'Azure Function App Deploy'
inputs:
azureSubscription: '<SubscriptionName>'
appType: functionApp
appName: <FunctionApp Name>
deploymentMethod: zipDeploy
the execution of the release pipeline ends as Successful However nothing is published on Azure
Do you know what I am missing?
I believe You are missing the publish step here, you are only building but not publishing. The zip file you have does not look right, after a publish you should be getting a whole bunch of *.dll files
The code you commented out you need to be running after the build step. In an ideal flow it should be.
This should be the ideal flow.
In the Release pipeline you should get that published artifact and then deploy to Azure
Build
- task: UseDotNet@2
displayName: 'Use .NET Core sdk'
inputs:
packageType: 'sdk'
version: '6.0.x'
- task: DotNetCoreCLI@2
displayName: Restore Packages
inputs:
command: restore
projects: '**/*.csproj'
- script: |
dotnet build --configuration Release
workingDirectory: '<path-to-your-project-tobuild>'
displayName: "Build"
- task: DotNetCoreCLI@2
displayName: "Publish"
inputs:
command: publish
arguments: '--configuration Release --output publish_output'
projects: '<path-to-your-project-tobuild>'
publishWebProjects: false
modifyOutputPath: false
zipAfterPublish: false
- task: ArchiveFiles@2
displayName: "Archive files"
inputs:
rootFolderOrFile: "$(System.DefaultWorkingDirectory)/publish_output"
includeRootFolder: false
archiveFile: "$(System.DefaultWorkingDirectory)/build.zip"
- task: PublishBuildArtifacts@1
displayName: "Publish Artifacts"
inputs:
PathtoPublish: '$(System.DefaultWorkingDirectory)/build.zip'
artifactName: 'drop'
and in your Release Pipeline
- task: DownloadBuildArtifacts@0
inputs:
buildType: 'current'
downloadType: 'single'
artifactName: drop
downloadPath: '$(System.ArtifactsDirectory)'
- task: AzureRmWebAppDeployment@4
inputs:
ConnectionType: 'AzureRM'
azureSubscription: '<your-sub>'
appType: 'webApp'
WebAppName: '<your-name>'
packageForLinux: '$(System.ArtifactsDirectory)/**/*.zip'