diff --git a/.github/workflows/azd-template-validation.yml b/.github/workflows/azd-template-validation.yml new file mode 100644 index 0000000..5f3ef94 --- /dev/null +++ b/.github/workflows/azd-template-validation.yml @@ -0,0 +1,37 @@ +name: AZD Template Validation +on: + schedule: + - cron: '30 1 * * 4' # Every Thursday at 7:00 AM IST (1:30 AM UTC) + workflow_dispatch: + +permissions: + contents: read + id-token: write + pull-requests: write + +jobs: + template_validation: + runs-on: ubuntu-latest + name: azd template validation + environment: production + steps: + - uses: actions/checkout@v4 + + - uses: microsoft/template-validation-action@v0.4.3 + with: + validateAzd: ${{ vars.TEMPLATE_VALIDATE_AZD }} + validateTests: ${{ vars.TEMPLATE_VALIDATE_TESTS }} + useDevContainer: ${{ vars.TEMPLATE_USE_DEV_CONTAINER }} + id: validation + env: + AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }} + AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }} + AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + AZURE_ENV_NAME: ${{ vars.AZURE_ENV_NAME }} + AZURE_LOCATION: ${{ vars.AZURE_LOCATION }} + AZURE_AI_SERVICE_LOCATION: ${{ vars.AZURE_LOCATION }} + AZURE_AI_MODEL_CAPACITY: 1 # keep low to avoid potential quota issues + GITHUB_TOKEN: ${{ secrets.AZD_GITHUB_TOKEN }} + + - name: print result + run: cat ${{ steps.validation.outputs.resultFile }} \ No newline at end of file diff --git a/.github/workflows/azure-dev.yml b/.github/workflows/azure-dev.yml index b7805e0..cd365d8 100644 --- a/.github/workflows/azure-dev.yml +++ b/.github/workflows/azure-dev.yml @@ -1,33 +1,51 @@ -name: AZD Template Validation +name: Azure Dev Deploy + on: workflow_dispatch: permissions: contents: read id-token: write - pull-requests: write jobs: - template_validation: + deploy: runs-on: ubuntu-latest - name: azd template validation - environment: azd-template-gallery + environment: production + env: + AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }} + AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }} + AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + AZURE_ENV_NAME: ${{ vars.AZURE_ENV_NAME }} + AZURE_LOCATION: ${{ vars.AZURE_LOCATION }} + AZURE_DEV_COLLECT_TELEMETRY: ${{ vars.AZURE_DEV_COLLECT_TELEMETRY }} steps: - - uses: actions/checkout@v4 + - name: Checkout Code + uses: actions/checkout@v4 + + - name: Install azd + uses: Azure/setup-azd@v2 - - uses: microsoft/template-validation-action@v0.4.3 + - name: Login to Azure + uses: azure/login@v2 with: - validateAzd: ${{ vars.AZD_VALIDATE }} - useDevContainer: ${{ vars.AZD_USE_DEV_CONTAINER }} - id: validation - env: - 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 }} - AZURE_AI_MODEL_CAPACITY: 1 # keep low to avoid potential quota issues - GITHUB_TOKEN: ${{ secrets.AZD_GITHUB_TOKEN }} + client-id: ${{ secrets.AZURE_CLIENT_ID }} + tenant-id: ${{ secrets.AZURE_TENANT_ID }} + subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + + - name: Login to AZD + shell: bash + run: | + azd auth login \ + --client-id "$AZURE_CLIENT_ID" \ + --federated-credential-provider "github" \ + --tenant-id "$AZURE_TENANT_ID" - - name: print result - run: cat ${{ steps.validation.outputs.resultFile }} \ No newline at end of file + - name: Provision and Deploy + shell: bash + run: | + if ! azd env select "$AZURE_ENV_NAME"; then + azd env new "$AZURE_ENV_NAME" --subscription "$AZURE_SUBSCRIPTION_ID" --location "$AZURE_LOCATION" --no-prompt + fi + azd config set defaults.subscription "$AZURE_SUBSCRIPTION_ID" + azd env set AZURE_AI_SERVICE_LOCATION="$AZURE_LOCATION" + azd up --no-prompt \ No newline at end of file