Skip to content

Workflow file for this run

# Docs for the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy
# More GitHub Actions for Azure: https://github.com/Azure/actions
name: Build and Deploy Flask ML API to Azure Container Instances
on:
push:
branches:
- main
paths:
- 'api/api.py'
workflow_dispatch:
jobs:
build-and-push:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
# Set up Python environment and install dependencies
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.11'
- name: Cache Python dependencies
uses: actions/cache@v3
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
# Build and push the Docker image
- name: Az CLI Login
uses: docker/login-action@v2
with:
registry: flaskapi123.azurecr.io
username: ${{ secrets.ACR_USERNAME }}
password: ${{ secrets.ACR_PASSWORD }}
- name: Build and push Docker image to ACR
uses: docker/build-push-action@v3
with:
push: true
tags: flaskapi123.azurecr.io/my-flask-api:${{ github.sha }}
deploy-to-aci:
runs-on: ubuntu-latest
needs: build-and-push
steps:
- name: Azure Login
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
slot-name: 'production'
- name: Deploy to Azure Container Instances
run: |
az container create \
--resource-group Flask-api \
--name flaskapi123 \
--image flaskapi123.azurecr.io/my-flask-api:${{ github.sha }} \
--ports 5000 \
--registry-login-server flaskapi123.azurecr.io \
--registry-username ${{ secrets.ACR_USERNAME }} \
--registry-password ${{ secrets.ACR_PASSWORD }}