diff --git a/.github/workflows/azure-dev.yaml b/.github/workflows/azure-dev.yaml new file mode 100644 index 00000000..4cc9a3c8 --- /dev/null +++ b/.github/workflows/azure-dev.yaml @@ -0,0 +1,67 @@ +name: Deploy with azd + +on: + workflow_dispatch: + push: + branches: + - main + +# GitHub Actions workflow to deploy to Azure using azd +# To configure required secrets for connecting to Azure, simply run `azd pipeline config` + +# Set up permissions for deploying with secretless Azure federated credentials +# https://learn.microsoft.com/en-us/azure/developer/github/connect-from-azure?tabs=azure-portal%2Clinux#set-up-azure-login-with-openid-connect-authentication +permissions: + id-token: write + contents: read + +jobs: + build: + runs-on: ubuntu-latest + env: + # azd required + AZURE_CLIENT_ID: ${{ vars.AZURE_CLIENT_ID }} + AZURE_TENANT_ID: ${{ vars.AZURE_TENANT_ID }} + AZURE_SUBSCRIPTION_ID: ${{ vars.AZURE_SUBSCRIPTION_ID }} + AZURE_ENV_NAME: ${{ vars.AZURE_ENV_NAME }} + AZURE_LOCATION: ${{ vars.AZURE_LOCATION }} + # project specific + DEPLOY_AZURE_OPENAI: ${{ vars.DEPLOY_AZURE_OPENAI }} + AZURE_OPENAI_CHAT_MODEL: ${{ vars.AZURE_OPENAI_CHAT_MODEL }} + AZURE_OPENAI_CHAT_DEPLOYMENT: ${{ vars.AZURE_OPENAI_CHAT_DEPLOYMENT }} + AZURE_OPENAI_CHAT_DEPLOYMENT_VERSION: ${{ vars.AZURE_OPENAI_CHAT_DEPLOYMENT_VERSION }} + AZURE_OPENAI_CHAT_DEPLOYMENT_CAPACITY: ${{ vars.AZURE_OPENAI_CHAT_DEPLOYMENT_CAPACITY }} + AZURE_OPENAI_EMBED_MODEL: ${{ vars.AZURE_OPENAI_EMBED_MODEL }} + AZURE_OPENAI_EMBED_DEPLOYMENT: ${{ vars.AZURE_OPENAI_EMBED_DEPLOYMENT }} + AZURE_OPENAI_EMBED_DEPLOYMENT_VERSION: ${{ vars.AZURE_OPENAI_EMBED_DEPLOYMENT_VERSION }} + AZURE_OPENAI_EMBED_DEPLOYMENT_CAPACITY: ${{ vars.AZURE_OPENAI_EMBED_DEPLOYMENT_CAPACITY }} + AZURE_OPENAI_EMBED_DIMENSIONS: ${{ vars.AZURE_OPENAI_EMBED_DIMENSIONS }} + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Install azd + uses: Azure/setup-azd@v1.0.0 + + - name: Install Nodejs + uses: actions/setup-node@v4 + with: + node-version: 20 + + - name: Log in with Azure (Federated Credentials) + if: ${{ env.AZURE_CLIENT_ID != '' }} + run: | + azd auth login ` + --client-id "$Env:AZURE_CLIENT_ID" ` + --federated-credential-provider "github" ` + --tenant-id "$Env:AZURE_TENANT_ID" + shell: pwsh + + - name: Provision Infrastructure + run: azd provision --no-prompt + env: + AZD_INITIAL_ENVIRONMENT_CONFIG: ${{ secrets.AZD_INITIAL_ENVIRONMENT_CONFIG }} + + - name: Deploy Application + run: azd deploy --no-prompt diff --git a/azure.yaml b/azure.yaml index 1893bc3c..cd48df0a 100644 --- a/azure.yaml +++ b/azure.yaml @@ -1,7 +1,7 @@ # yaml-language-server: $schema=https://raw.githubusercontent.com/Azure/azure-dev/main/schemas/v1.0/azure.yaml.json -name: azure-rag-postgres-python +name: rag-postgres-openai-python metadata: - template: azure-rag-postgres-python@0.0.1 + template: rag-postgres-openai-python@0.0.1 services: web: project: ./src @@ -32,3 +32,15 @@ hooks: run: ./scripts/setup_postgres_database.sh;./scripts/setup_postgres_azurerole.sh;./scripts/setup_postgres_seeddata.sh interactive: true continueOnError: false +pipeline: + variables: + - DEPLOY_AZURE_OPENAI + - AZURE_OPENAI_CHAT_MODEL + - AZURE_OPENAI_CHAT_DEPLOYMENT + - AZURE_OPENAI_CHAT_DEPLOYMENT_VERSION + - AZURE_OPENAI_CHAT_DEPLOYMENT_CAPACITY + - AZURE_OPENAI_EMBED_MODEL + - AZURE_OPENAI_EMBED_DEPLOYMENT + - AZURE_OPENAI_EMBED_DEPLOYMENT_VERSION + - AZURE_OPENAI_EMBED_DEPLOYMENT_CAPACITY + - AZURE_OPENAI_EMBED_DIMENSIONS