Azure Function app when deployed thru GitHub Actions Wokflow do not show the functions in the function app

Venkat Ambati 0 Reputation points
2025-03-07T21:10:13.8033333+00:00

Azure Function app when Deployed thru CICD with GitHub actions workflow, will not display the function in the function app, however the same solution deployed with Visual Studio Publish profile do show all the function in the function app.

Here is the log for host folder in Kudu, which did not recognize the functions.

2025-03-07T20:10:51.188 [Information] 0 functions found (Custom)

  • 2025-03-07T20:10:51.189 [Information] 0 functions loaded

2025-03-07T20:10:53.298 [Information] Host lock lease acquired by instance ID '82e23cc3cd92ae0c65e2cb2296583539'.

2025-03-07T20:11:18.921 [Information] Loading functions metadata

2025-03-07T20:11:18.924 [Information] Reading functions metadata (Custom)

2025-03-07T20:11:18.924 [Information] 0 functions found (Custom)

2025-03-07T20:11:18.924 [Information] 0 functions loaded

2025-03-07T20:11:18.924 [Information] Loading functions metadata

2025-03-07T20:11:18.925 [Information] Reading functions metadata (Custom)

2025-03-07T20:11:18.925 [Information] 0 functions found (Custom)

2025-03-07T20:11:18.925 [Information] 0 functions loaded

Here is the functions.metadata file which has the definition for all the 4 functions.

[

{

"name": "ReceiveShippoNotifications",

"scriptFile": "func-WarehouseBoxSys.dll",

"entryPoint": "func_WarehouseBoxSys.ReceiveShippoNotifications.Run",

"language": "dotnet-isolated",

"properties": {

  "IsCodeless": false

},

"bindings": [

  {

    "name": "req",

    "direction": "In",

    "type": "httpTrigger",

    "authLevel": "Function",

    "methods": [

      "get",

      "post"

    ],

    "properties": {}

  },

  {

    "name": "$return",

    "type": "http",

    "direction": "Out"

  }

]

},

{

"name": "RetryNotificationsInFailedQueue",

"scriptFile": "func-WarehouseBoxSys.dll",

"entryPoint": "func_WarehouseBoxSys.RetryNotificationsInFailedQueue.Run",

"language": "dotnet-isolated",

"properties": {

  "IsCodeless": false

},

"bindings": [

  {

    "name": "message",

    "direction": "In",

    "type": "queueTrigger",

    "queueName": "%FailedQueueName%",

    "connection": "AzureWebJobsStorage",

    "properties": {

      "supportsDeferredBinding": "True"

    }

  }

]

},

{

"name": "RetryNotificationsInPoisonQueue",

"scriptFile": "func-WarehouseBoxSys.dll",

"entryPoint": "func_WarehouseBoxSys.RetryNotificationsInPoisonQueue.Run",

"language": "dotnet-isolated",

"properties": {

  "IsCodeless": false

},

"bindings": [

  {

    "name": "message",

    "direction": "In",

    "type": "queueTrigger",

    "queueName": "%PoisonQueueName%",

    "connection": "AzureWebJobsStorage",

    "properties": {

      "supportsDeferredBinding": "True"

    }

  }

]

},

{

"name": "UpdateShippoTrackingStatus",

"scriptFile": "func-WarehouseBoxSys.dll",

"entryPoint": "func_WarehouseBoxSys.UpdateShippoTrackingStatus.Run",

"language": "dotnet-isolated",

"properties": {

  "IsCodeless": false

},

"bindings": [

  {

    "name": "message",

    "direction": "In",

    "type": "queueTrigger",

    "queueName": "%NotificationQueueName%",

    "connection": "AzureWebJobsStorage",

    "properties": {

      "supportsDeferredBinding": "True"

    }

  }

]

}

]

Here is the Function action in CICD pipeline

`- name: List output directory`

run: ls -R '${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}/build'

- name: 'Deploy Azure Functions Action'

uses: Azure/functions-action@v1.5.1

id : WarehouseBoxsysFunctions

with:

app-name: ${{ env.AZURE_FUNCTIONAPP_NAME }}

package: ${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}/build

publish-profile: ${{ secrets.AZURE_FUNCTIONAPP_VAL_PUBLISH_PROFILE }}

# Enable build action from Kudu when the package is deployed onto the function app. This will temporarily change the SCM_DO_BUILD_DURING_DEPLOYMENT setting for this deployment. To bypass this and use the existing settings from your function app, please set this to an empty string ''. To enable remote build for your project, please set this and 'enable-oryx-build' both to 'true'. By default, GitHub Action respects the packages resolved in GitHub workflow, disabling the redundant build action from Kudu endpoint. (default: 'false').

#scm-do-build-during-deployment: false

# Use Oryx Build from Kudu when the package is deployed onto the function app. (Linux functions only). This will temporarily change the ENABLE_ORYX_BUILD setting from this deployment. To bypass this and use the existing settings from your function app, please set this to an empty string ''. To enable remote build for your project, please set this and 'scm-do-build-during-deployment' both to 'true'. By default, GitHub Action respects the packages resolved in GitHub workflow, disabling the redundant build action from Kudu endpoint. (default: 'false').

#enable-oryx-build: false

remote-build: true

Azure Functions
Azure Functions
An Azure service that provides an event-driven serverless compute platform.
5,526 questions
{count} votes

1 answer

Sort by: Most helpful
  1. RithwikBojja 790 Reputation points Microsoft External Staff
    2025-03-12T05:20:49.5933333+00:00

    Hi @Venkat Ambati,

    I am able to deploy and functions are shown in Overview section by following below approach:

    Firstly, created functions and later deployed to GitHub using below commands:

    
    cd "Function App folder path"
    
    git init
    
    git add .
    
    git commit -m "first commit"
    
    git remote add origin https://github.com/Name/Repository.git
    
    git push -u origin main
    
    

    enter image description here

    Then while creating the function app, In deployment action, Enable Continuous deployment and give organization, repo and branch details as below:

    enter image description here

    Then in Deployment Center, click on Build/Deploy Logs :

    enter image description here

    Then wait for some time for the function to deploy:

    enter image description here

    Workflow file:

    
    name: Build and deploy dotnet core app to Azure Function App - test12325
    
    on:
    
      push:
    
        branches:
    
          - main
    
      workflow_dispatch:
    
    env:
    
      AZURE_FUNCTIONAPP_PACKAGE_PATH: '.' # set this to the path to your web app project, defaults to the repository root
    
      DOTNET_VERSION: '8.0.x' # set this to the dotnet version to use
    
    jobs:
    
      build-and-deploy:
    
        runs-on: windows-latest
    
        steps:
    
          - name: 'Checkout GitHub Action'
    
            uses: actions/checkout@v4
    
          - name: Setup DotNet ${{ env.DOTNET_VERSION }} Environment
    
            uses: actions/setup-dotnet@v1
    
            with:
    
              dotnet-version: ${{ env.DOTNET_VERSION }}
    
          - name: 'Resolve Project Dependencies Using Dotnet'
    
            shell: pwsh
    
            run: |
    
              pushd './${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}'
    
              dotnet build --configuration Release --output ./output
    
              popd
    
          - name: 'Run Azure Functions Action'
    
            uses: Azure/functions-action@v1
    
            id: fa
    
            with:
    
              app-name: 'test12325'
    
              slot-name: 'Production'
    
              package: '${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}/output'
    
              publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_4391F28A09AE484F8E0AA996C24084AF }}
    
    

    Functions are shown:

    enter image description here

    Check the deployment status :

    enter image description here

    By following the above approach, I am able to deploy and work with my functions. even after using above approach if you still face the issue, then i would suggest you check with code and packages, as the above process works.

    Hope this helps.

    If the answer is helpful, please click Accept Answer and kindly upvote it. If you have any further questions about this answer, please click Comment.

    0 comments No comments

Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.