1

I don't seem to be able to diagnose why my python based azure function (deployed via github actions) is not appearing in the azure function list. Something subtle is causing it to not be processed

I have successfully deployed my python script using github actions (see pic1). enter image description here

I have been able to successfully see the app files visible within my azure function (see pic2).

enter image description here

And yet I am unable to see my function within the functions list (see pic3). enter image description here

I feel like if I just had the ability to see what or how Azure is processing my files, to see if there's a problem with some configuration OR modules OR something then I would have a starting point. But right now it feels like a blackbox and I don't know what methodology to follow to figure out what's wrong.

I feel like there is something simple missing OR misconfigured, please help

steambun
  • 35
  • 7

1 Answers1

2

I tried the Azure Function Deployment with Github actions and it was successful.

Initially, When I deployed the Function it was not visible, Refer below:-

enter image description here

Make sure your init.py and function.json is inside one directory and other files are outside that directory for the deployment to work successfully, Refer below:-

Reference:- SO Thread answer by jsprovoke

enter image description here

Now, I deployed the Function with Github action and the Function was visible in the Portal refer below:-

Refer my complete github workflow in this Link.

name: Build and deploy Python project to Azure Function App - siliconfunc12

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
  PYTHON_VERSION: '3.10' # set this to the python version to use (supports 3.6, 3.7, 3.8)

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v2

      - name: Setup Python version
        uses: actions/setup-python@v1
        with:
          python-version: ${{ env.PYTHON_VERSION }}

      - name: Create and start virtual environment
        run: |
          python -m venv venv
          source venv/bin/activate

      - name: Install dependencies
        run: pip install -r requirements.txt
        
      # Optional: Add step to run tests here

      - name: Upload artifact for deployment job
        uses: actions/upload-artifact@v2
        with:
          name: python-app
          path: |
            . 
            !venv/

  deploy:
    runs-on: ubuntu-latest
    needs: build
    environment:
      name: 'Production'
      url: ${{ steps.deploy-to-function.outputs.webapp-url }}

    steps:
      - name: Download artifact from build job
        uses: actions/download-artifact@v2
        with:
          name: python-app
          path: .

      - name: 'Deploy to Azure Functions'
        uses: Azure/functions-action@v1
        id: deploy-to-function
        with:
          app-name: 'siliconfunc12'
          slot-name: 'Production'
          package: ${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}
          publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_E640D92BF68849679F8A36682B022D5F }}
          scm-do-build-during-deployment: true
          enable-oryx-build: true

Output:-

enter image description here

enter image description here

Python Function HTTPTrigger visible in Portal like below:-

enter image description here

Add the settings below to run your function app from Zip:-

enter image description here

HTTPTrigger ran successfully like below:-

enter image description here

enter image description here

You can directly run your Function app deployment from Deployment center with Github that will automatically create Github workflow and deploy your Function Trigger to Function app, Refer below:-

enter image description here

SiddheshDesai
  • 3,668
  • 1
  • 2
  • 11
  • Please format the attached workflow properly. Invalid formatting makes a GHA workflow invalid. Looks like a copy/paste issue. You may use https://rhysd.github.io/actionlint/ to fix such issues. Thanks! – Azeem May 18 '23 at 05:31
  • 1
    @Azeem Thank you for your recommendation, I've edited the workflow accordingly. – SiddheshDesai May 18 '23 at 06:24
  • That's awesome - that fixed my problem. Now the timer is just not starting. A different new problem. The first time you create a timer function do you need to do something to activate the timer? { "scriptFile": "__init__.py", "bindings": [ { "name": "extraction_trigger", "type": "timerTrigger", "direction": "in", "schedule": "0 */2 * * * *" } ] } – steambun May 18 '23 at 06:29
  • After the timer trigger runs, It will be activated based on the CRON schedule you provided. Refer this quickstart - https://learn.microsoft.com/en-us/azure/azure-functions/functions-create-scheduled-function and this tutorial - https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-timer?pivots=programming-language-python&tabs=python-v2%2Cin-process and this Github issue on Timer trigger failing to start - https://github.com/Azure/azure-functions-python-worker/issues/224 – SiddheshDesai May 18 '23 at 06:31