Skip to content

Test Appconfig Samples #5

Test Appconfig Samples

Test Appconfig Samples #5

name: "Test Appconfig Samples"
on:
workflow_dispatch:
inputs:
Location:
description: 'Test Resource Group Location'
required: true
default: 'eastus'
permissions:
id-token: write
jobs:
testSamples:
runs-on: ubuntu-latest
steps:
- name: Harden Runner
uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0
with:
egress-policy: audit
- uses: actions/checkout@v2
with:
fetch-depth: 1
ref: main
- name: Azure Login
uses: azure/login@v2
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: Prepare resource name
shell: bash
run: |
RESOURCE_GROUP="rg-sdk-samples-test-$(uuidgen | cut -c 1-8)"
echo "RESOURCE_GROUP=$RESOURCE_GROUP" >> $GITHUB_ENV
RESOURCE_NAME="appconfig-$(uuidgen | cut -c 1-8)"
echo "RESOURCE_NAME=$RESOURCE_NAME" >> $GITHUB_ENV
- name: Create resource
run: |
az group create -g ${{ env.RESOURCE_GROUP }} -l ${{ github.event.inputs.Location }}
az appconfig create -g ${{ env.RESOURCE_GROUP}} -n ${{ env.RESOURCE_NAME }} -l ${{ github.event.inputs.Location }}
APPCONFIG_CONNECTION_STRING=$(az appconfig credential list -n ${{ env.RESOURCE_NAME }} -g ${{ env.RESOURCE_GROUP}} --query "[?name=='Primary'].connectionString" -o tsv)
echo "APPCONFIG_CONNECTION_STRING=$APPCONFIG_CONNECTION_STRING" >> $GITHUB_ENV
az keyvault create -g ${{ env.RESOURCE_GROUP}} -n ${{ env.RESOURCE_NAME }} -l ${{ github.event.inputs.Location }}
KEYVAULT_URI=$(az keyvault show -n ${{ env.RESOURCE_NAME }} --query "properties.vaultUri" -o tsv)
echo "KEYVAULT_URI=$KEYVAULT_URI" >> $GITHUB_ENV
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '20.x'
- name: Install package
working-directory: 'sdk/appconfiguration/app-configuration/samples/v1-beta/typescript'
run: |
npm install -g typescript
npm install -g ts-node
package_name="@azure/app-configuration"
echo "---------1"
input_string=$(npm info "$package_name" time)
echo "---------2"
IFS=$'\n' read -rd '' -a lines <<< "$input_string"
echo "---------3"
for ((i=${#lines[@]}-1; i>=0; i--)); do
line="${lines[i]}"
if [[ $line == *"alpha"* ]]; then
continue
fi
if [[ $line == *":"* ]]; then
echo "Found package version: $line"
if [[ $line == *"beta"* ]]; then
npm install "$package_name@next"
else
npm install "$package_name@latest"
fi
break
fi
done
echo "---------4"
npm install
- name: Run samples
timeout-minutes: 30
working-directory: 'sdk/appconfiguration/app-configuration/samples/v1-beta/typescript/src'
run: |
ignore_list=(
"secretReference"
)
echo "APPCONFIG_CONNECTION_STRING=$APPCONFIG_CONNECTION_STRING" > ".env";
echo "KEYVAULT_URI=$KEYVAULT_URI" >> ".env";
for file in $(find . -maxdepth 1 -name "*.ts"); do
echo -e "\n\n"
skip=false
for ignore in "${ignore_list[@]}"; do
if [[ "$file" == *"$ignore"* ]]; then
skip=true
break
fi
done
if [ "$skip" = true ]; then
echo "Skipping $file Sample =============================="
continue
fi
echo "Running $file Sample: =================================="
ts-node "$file"
sleep 5
done
- name: Clean up resource
if: always()
shell: bash
run: |
echo "Deleting appconfig ${{ env.RESOURCE_NAME }}..."
az appconfig delete -g ${{ env.RESOURCE_GROUP}} -n ${{ env.RESOURCE_NAME }} -y
az appconfig purge -n ${{ env.RESOURCE_NAME }} -y
echo "Deleting keyvault ${{ env.RESOURCE_NAME }}..."
az keyvault delete -g ${{ env.RESOURCE_GROUP}} -n ${{ env.RESOURCE_NAME }}
az keyvault purge -n ${{ env.RESOURCE_NAME }}
echo "Delete ${{ env.RESOURCE_GROUP }} group..."
az group delete -g ${{ env.RESOURCE_GROUP }} -y