Skip to content

Commit

Permalink
Add azd template (#14)
Browse files Browse the repository at this point in the history
  • Loading branch information
justinyoo authored May 21, 2024
1 parent 98fa1c4 commit 0a2c038
Show file tree
Hide file tree
Showing 41 changed files with 2,960 additions and 42 deletions.
56 changes: 56 additions & 0 deletions .azdo/pipelines/azure-dev.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# Run when commits are pushed to mainline branch (main or master)
# Set this to the mainline branch you are using
trigger:
- main
- master

# Azure Pipelines workflow to deploy to Azure using azd
# To configure required secrets and service connection for connecting to Azure, simply run `azd pipeline config --provider azdo`
# Task "Install azd" needs to install setup-azd extension for azdo - https://marketplace.visualstudio.com/items?itemName=ms-azuretools.azd
# See below for alternative task to install azd if you can't install above task in your organization

pool:
vmImage: ubuntu-latest

steps:
- task: setup-azd@0
displayName: Install azd

# If you can't install above task in your organization, you can comment it and uncomment below task to install azd
# - task: Bash@3
# displayName: Install azd
# inputs:
# targetType: 'inline'
# script: |
# curl -fsSL https://aka.ms/install-azd.sh | bash

# azd delegate auth to az to use service connection with AzureCLI@2
- pwsh: |
azd config set auth.useAzCliAuth "true"
displayName: Configure AZD to Use AZ CLI Authentication.
- task: AzureCLI@2
displayName: Provision Infrastructure
inputs:
azureSubscription: azconnection
scriptType: bash
scriptLocation: inlineScript
inlineScript: |
azd provision --no-prompt
env:
AZURE_SUBSCRIPTION_ID: $(AZURE_SUBSCRIPTION_ID)
AZURE_ENV_NAME: $(AZURE_ENV_NAME)
AZURE_LOCATION: $(AZURE_LOCATION)

- task: AzureCLI@2
displayName: Deploy Application
inputs:
azureSubscription: azconnection
scriptType: bash
scriptLocation: inlineScript
inlineScript: |
azd deploy --no-prompt
env:
AZURE_SUBSCRIPTION_ID: $(AZURE_SUBSCRIPTION_ID)
AZURE_ENV_NAME: $(AZURE_ENV_NAME)
AZURE_LOCATION: $(AZURE_LOCATION)
44 changes: 44 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
{
"name": "Azure Developer CLI",
"image": "mcr.microsoft.com/devcontainers/typescript-node:18-bookworm",
"features": {
"ghcr.io/azure/azure-dev/azd:latest": {},
"ghcr.io/devcontainers/features/azure-cli:latest": {
"extensions": "apic-extension,staticwebapp"
},
"ghcr.io/devcontainers/features/common-utils:latest": {},
"ghcr.io/devcontainers/features/docker-in-docker:latest": {},
"ghcr.io/devcontainers/features/github-cli:latest": {},
"ghcr.io/devcontainers/features/node:1": {},
"ghcr.io/devcontainers/features/powershell:latest": {}
},
"overrideFeatureInstallOrder": [
"ghcr.io/devcontainers/features/common-utils"
],
"customizations": {
"vscode": {
"extensions": [
"GitHub.vscode-github-actions",
"ms-azuretools.azure-dev",
"ms-azuretools.vscode-azurefunctions",
"ms-azuretools.vscode-azurestaticwebapps",
"ms-azuretools.vscode-bicep",
"ms-azuretools.vscode-docker",
"ms-vscode.vscode-node-azure-pack",
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode",
"ms-vscode.azurecli",
"ms-vscode.js-debug",
"ms-vscode.powershell"
]
}
},
"forwardPorts": [
4280, 5173
],
"onCreateCommand": "/bin/bash ./.devcontainer/on-create.sh > ~/on-create.log",
"remoteUser": "vscode",
"hostRequirements": {
"memory": "8gb"
}
}
17 changes: 17 additions & 0 deletions .devcontainer/on-create.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
## Install additional apt packages
sudo apt-get update \
&& sudo apt-get install -y dos2unix libsecret-1-0 xdg-utils \
&& sudo apt-get clean -y && sudo rm -rf /var/lib/apt/lists/*

## Configure git
git config --global pull.rebase false
git config --global core.autocrlf input

## AZURE BICEP CLI ##
az bicep install

## AZURE FUNCTIONS CORE TOOLS ##
npm i -g azure-functions-core-tools@4 --unsafe-perm true

## AZURE STATIC WEB APPS CLI ##
npm install -g @azure/static-web-apps-cli
15 changes: 15 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# EditorConfig is awesome: https://EditorConfig.org

# top-most EditorConfig file
root = true

[*]
indent_style = space
indent_size = 4
end_of_line = crlf
charset = utf-8
trim_trailing_whitespace = false
insert_final_newline = false

[*.{bicep,yml,yaml}]
indent_size = 2
104 changes: 104 additions & 0 deletions .github/workflows/azure-dev.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
name: AZD Deploy

on:
workflow_dispatch:
push:
# Run when commits are pushed to mainline branch (main or master)
# Set this to the mainline branch you are using
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:
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_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }}
AZD_INITIAL_ENVIRONMENT_CONFIG: ${{ secrets.AZD_INITIAL_ENVIRONMENT_CONFIG }}

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup node.js
uses: actions/setup-node@v4
with:
node-version: 'lts/Iron'

- name: Install azd
uses: Azure/[email protected]

- name: Log in with Azure Dev CLI (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: Login to Azure CLI (Federated Credentials)
if: ${{ env.AZURE_CLIENT_ID != '' }}
uses: Azure/login@v2
with:
client-id: ${{ env.AZURE_CLIENT_ID }}
subscription-id: ${{ env.AZURE_SUBSCRIPTION_ID }}
tenant-id: ${{ env.AZURE_TENANT_ID }}

- name: Log in with Azure Dev CLI (Client Credentials)
if: ${{ env.AZURE_CREDENTIALS != '' }}
run: |
$info = $Env:AZURE_CREDENTIALS | ConvertFrom-Json -AsHashtable;
Write-Host "::add-mask::$($info.clientSecret)"
azd auth login `
--client-id "$($info.clientId)" `
--client-secret "$($info.clientSecret)" `
--tenant-id "$($info.tenantId)"
shell: pwsh
env:
AZURE_CREDENTIALS: ${{ env.AZURE_CREDENTIALS }}

- name: Login to Azure CLI (Client Credentials)
if: ${{ env.AZURE_CREDENTIALS != '' }}
uses: Azure/login@v2
with:
creds: ${{ env.AZURE_CREDENTIALS }}

- name: Provision Infrastructure
if: ${{ env.AZURE_CLIENT_ID != '' || env.AZURE_CREDENTIALS != '' }}
run: azd provision --no-prompt
env:
AZURE_ENV_NAME: ${{ env.AZURE_ENV_NAME }}
AZURE_LOCATION: ${{ env.AZURE_LOCATION }}
AZURE_SUBSCRIPTION_ID: ${{ env.AZURE_SUBSCRIPTION_ID }}
AZD_INITIAL_ENVIRONMENT_CONFIG: ${{ env.AZD_INITIAL_ENVIRONMENT_CONFIG }}

- name: Build artifact
shell: bash
run: |
npm install
npm run build
- name: Deploy Application
if: ${{ env.AZURE_CLIENT_ID != '' || env.AZURE_CREDENTIALS != '' }}
run: azd deploy --no-prompt
env:
AZURE_ENV_NAME: ${{ env.AZURE_ENV_NAME }}
AZURE_LOCATION: ${{ env.AZURE_LOCATION }}
AZURE_SUBSCRIPTION_ID: ${{ env.AZURE_SUBSCRIPTION_ID }}
AZD_INITIAL_ENVIRONMENT_CONFIG: ${{ env.AZD_INITIAL_ENVIRONMENT_CONFIG }}
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -350,3 +350,4 @@ dist-ssr
*.njsproj
*.sln
*.sw?
.azure
Loading

0 comments on commit 0a2c038

Please sign in to comment.