1

I am using GitHub to deploy a streamlit app into Azure web app. I discovered the workflow file that is created under the .github/workflows folder as part of the CI/CD pipeline.

In it, I modified it to add some extra commands to upgrade pip and install wheel before the dependencies. But when deploying to Azure web app it doesn't follow it.

Is it Azure or am I missing out on something here? (I commented out the install for libgl)

Here is my workflow file:

# Docs for the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy
# More GitHub Actions for Azure: https://github.com/Azure/actions
# More info on Python, GitHub Actions, and Azure App Service: https://aka.ms/python-webapps-actions

name: Build and deploy Python app to Azure Web App - axxxxxxxxx

on:
  push:
    branches:
      - master
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2
        with:
          submodules: true

      - name: Set up Python version
        uses: actions/setup-python@v1
        with:
          python-version: '3.9'

      - name: Create and start virtual environment
        run: |
          python -m venv venv
          source venv/bin/activate
      
      # - name: Install libgl1
      #   run: |
      #     sudo apt-get update
      #     sudo apt-get install -y libgl1-mesa-dev
      #     sudo apt-get install -y libglib2.0-0
      
      - name: Upgrade pip
        run: python -m pip install --upgrade pip

      - name: Install wheel and setuptools
        run: pip install -U wheel setuptools
      
      - name: Install dependencies
        run: pip install -r requirements.txt
        
      # Optional: Add step to run tests here (PyTest, Django test suites, etc.)
      
      - name: Upload artifact for deployment jobs
        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-webapp.outputs.webapp-url }}

    steps:
      - name: Download artifact from build job
        uses: actions/download-artifact@v2
        with:
          name: python-app
          path: .
          
      - name: 'Deploy to Azure Web App'
        uses: azure/webapps-deploy@v2
        id: deploy-to-webapp
        with:
          app-name: 'axxxxxxxxxxxxxxxx'
          slot-name: 'Production'
          publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_xxxxxxxxxxxxxxxxxxxxxxxxxxx }}

I had tried

1 Answer 1

2

I tried deploying Streamlit app in Azure with Github Actions and it was successful.

There are certain pre-requisites that you need to follow before deploying Streamlit app, Refer below:-

According to my SO answer

1) For streamlit to work, Create Azure Web app with Runtime set to 3.10 and above, With SKU set to B1.

enter image description here

2) In the Settings of Azure Web app > Configuration> General Settings > Select HTTPS Only to OFF > And add the startup command below( you can add this startup command later after the deployment from github actions and load your website again):-

enter image description here

python -m streamlit run app.py --server.port 8000 --server.address 0.0.0.0

enter image description here

Even if you keep HTTPS only to Off you can browse your website with Https.

3) Then I selected Deployment Center connected to my Github repository and started the deployment like below:-

enter image description here

When I clicked Save, The github action deployment got triggered in my github repository:-

enter image description here

My Github workflow script:-

You can find my complete workflow script here

name: Build and deploy Python app to Azure Web App - valleywebapp98

on:
  push:
    branches:
      - master
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2

      - name: Set up Python version
        uses: actions/setup-python@v1
        with:
          python-version: '3.10'

      - name: Create and start virtual environment
        run: |
          python -m venv venv
          source venv/bin/activate
      
      - name: Install dependencies
        run: pip install -r requirements.txt
        
      
      - name: Upload artifact for deployment jobs
        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-webapp.outputs.webapp-url }}

    steps:
      - name: Download artifact from build job
        uses: actions/download-artifact@v2
        with:
          name: python-app
          path: .
          
      - name: 'Deploy to Azure Web App'
        uses: azure/webapps-deploy@v2
        id: deploy-to-webapp
        with:
          app-name: 'valleywebapp98'
          slot-name: 'Production'
          publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_CCB79104830649D193337DBF9ABC1AE9 }}

Output:-

enter image description here

enter image description here

Sign up to request clarification or add additional context in comments.

2 Comments

My streamlit app works fine. Its deployed in B3 with Python 3.10. The problem its it doesn't follow the instructions described in the CI/CD workflow.
Specifically the instruction to update pip and previously when libgl installation was uncommented, even that instruction.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.