Fix flag #29
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Production deployment | |
on: | |
push: | |
branches: | |
- 'main' | |
permissions: | |
id-token: write | |
jobs: | |
setup: | |
name: Setup | |
runs-on: ubuntu-latest | |
steps: | |
# Checkout code from repo | |
- name: Checkout code from main branch | |
uses: actions/checkout@v4 | |
# Setup Node.js | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '18.x' | |
## Build function | |
- name: 'Resolve Project Dependencies Using Npm' | |
shell: bash | |
run: | | |
pushd './function' | |
npm install | |
npm run build --if-present | |
npm run test --if-present | |
rm -r ./dist/**/*.map | |
cp -r ./host.json ./package.json ./node_modules ./dist | |
rm -r ./dist/node_modules/@types/ | |
rm -r ./dist/node_modules/typescript/ | |
pushd './dist' | |
mkdir dist | |
mv ./src ./dist/ | |
zip -r ../deploy.zip ./* | |
popd | |
popd | |
# Upload build artifact | |
- name: Upload build artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: function | |
path: ./function/deploy.zip | |
infra: | |
name: Deploy infrastructure to Azure | |
runs-on: ubuntu-latest | |
environment: production | |
steps: | |
# Checkout code from repo | |
- name: Checkout code from main branch | |
uses: actions/checkout@v4 | |
# Login to Azure | |
- name: Authenticate to Azure | |
uses: azure/login@v2 | |
with: | |
client-id: ${{ secrets.AZURE_CLIENT_ID }} | |
tenant-id: ${{ secrets.AZURE_TENANT_ID }} | |
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} | |
- id: date | |
run: echo " date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT | |
# Deploy infrastructure | |
- name: Run ARM deployment | |
uses: azure/arm-deploy@v2 | |
with: | |
subscriptionId: ${{ secrets.AZURE_SUBSCRIPTION }} | |
resourceGroupName: ${{ secrets.AZURE_RG_NAME }} | |
template: ./arm/resources.json | |
deploymentName: GitHubActions${{ steps.date.outputs.date }} | |
parameters: environment=PROD | |
deployFunction: | |
name: Deploy function to Azure | |
runs-on: windows-latest | |
environment: production | |
needs: [setup, infra] | |
steps: | |
# Download build artifact | |
- name: Download build artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: function | |
# Login to Azure | |
- name: Authenticate to Azure | |
uses: azure/login@v2 | |
with: | |
client-id: ${{ secrets.AZURE_CLIENT_ID }} | |
tenant-id: ${{ secrets.AZURE_TENANT_ID }} | |
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} | |
# Deploy function | |
- name: Deploy function | |
uses: azure/functions-action@v1 | |
id: fa | |
with: | |
app-name: ${{ vars.FUNCTION_APP_NAME }} | |
slot-name: production | |
package: deploy.zip | |
deployDocumentation: | |
name: Deploy documentation site to Azure | |
runs-on: ubuntu-latest | |
environment: production | |
needs: [setup, infra] | |
steps: | |
# Checkout code from repo | |
- name: Checkout code from production branch | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
lfs: false | |
- name: Login to Azure | |
uses: azure/login@v2 | |
with: | |
client-id: ${{ secrets.AZURE_CLIENT_ID }} | |
tenant-id: ${{ secrets.AZURE_TENANT_ID }} | |
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} | |
- name: Retrieve secrets from Key Vault | |
uses: azure/CLI@v1 | |
with: | |
inlineScript: | | |
algoliaAppId=$(az keyvault secret show --name "ALGOLIA-APP-ID" --vault-name "${{ secrets.AZURE_KV_NAME }}" --query "value" -o tsv) | |
echo "ALGOLIA_APP_ID="$algoliaAppId >> "$GITHUB_ENV" | |
algoliaIndexName=$(az keyvault secret show --name "ALGOLIA-INDEX-NAME" --vault-name "${{ secrets.AZURE_KV_NAME }}" --query "value" -o tsv) | |
echo "ALGOLIA_INDEX_NAME="$algoliaIndexName >> "$GITHUB_ENV" | |
AlgoliaSearchApiKey=$(az keyvault secret show --name "ALGOLIA-SEARCH-API-KEY" --vault-name "${{ secrets.AZURE_KV_NAME }}" --query "value" -o tsv) | |
echo "ALGOLIA_SEARCH_API_KEY="$AlgoliaSearchApiKey >> "$GITHUB_ENV" | |
- name: Build And Deploy | |
id: builddeploy | |
uses: Azure/static-web-apps-deploy@v1 | |
with: | |
azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }} | |
repo_token: ${{ secrets.GITHUB_TOKEN }} # Used for Github integrations (i.e. PR comments) | |
action: "upload" | |
###### Repository/Build Configurations - These values can be configured to match your app requirements. ###### | |
# For more information regarding Static Web App workflow configurations, please visit: https://aka.ms/swaworkflowconfig | |
app_location: "/docs" # App source code path | |
app_build_command: npm run build | |
api_location: "" # Api source code path - optional | |
output_location: "build" # Built app content directory - optional | |
###### End of Repository/Build Configurations ###### | |
env: | |
ALGOLIA_APP_ID: ${{ env.ALGOLIA_APP_ID }} | |
ALGOLIA_INDEX_NAME: ${{ env.ALGOLIA_INDEX_NAME }} | |
ALGOLIA_SEARCH_API_KEY: ${{ env.ALGOLIA_SEARCH_API_KEY }} | |