Skip to content

Bump Microsoft.Identity.Client from 4.37.0 to 4.61.3 in /ToppingsApi/ToppingsApi #120

Bump Microsoft.Identity.Client from 4.37.0 to 4.61.3 in /ToppingsApi/ToppingsApi

Bump Microsoft.Identity.Client from 4.37.0 to 4.61.3 in /ToppingsApi/ToppingsApi #120

Workflow file for this run

name: Toppings API
on:
push:
branches: [ main ]
paths-ignore:
- '!.github/workflows/toppings-api.yaml'
- 'Infrastructure/**'
- 'docs/**'
- '*.md'
pull_request:
branches: [ main ]
paths-ignore:
- '!.github/workflows/toppings-api.yaml'
- 'Infrastructure/**'
- 'docs/**'
- '*.md'
workflow_dispatch:
env:
version: "0.0.${{ github.run_number }}"
dotnet_version: "5.0.x"
HELM_EXPERIMENTAL_OCI: 1
jobs:
build:
environment: Dev-Staging
runs-on: ubuntu-latest
env:
azure_creds: '{"clientId":"${{ secrets.AZURE_CLIENT_ID }}","clientSecret":"${{ secrets.AZURE_CLIENT_SECRET }}","subscriptionId":"${{ secrets.AZURE_SUBSCRIPTION_ID }}","tenantId":"${{ secrets.AZURE_TENANT_ID }}"}'
outputs:
acr_login_server: ${{ steps.get_acr.outputs.login_server }}
steps:
- uses: actions/checkout@v2
- name: Setup .NET 5.0
uses: actions/setup-dotnet@v1
with:
dotnet-version: ${{ env.dotnet_version }}
- name: Restore local dotnet tool
run: dotnet tool restore
- name: dotnet build
run: dotnet build -c Release
working-directory: ToppingsApi
- name: dotnet test
run: dotnet test -c Release --no-build --collect:"XPlat Code Coverage" --logger trx
working-directory: ToppingsApi
- name: ReportGenerator
uses: danielpalme/[email protected]
with:
reports: '**/coverage.cobertura.xml' # REQUIRED # The coverage reports that should be parsed (separated by semicolon). Globbing is supported.
targetdir: 'coveragereport' # REQUIRED # The directory where the generated report should be saved.
reporttypes: 'HtmlInline;Cobertura' # The output formats and scope (separated by semicolon) Values: Badges, Clover, Cobertura, CsvSummary, Html, HtmlChart, HtmlInline, HtmlInline_AzurePipelines, HtmlInline_AzurePipelines_Dark, HtmlSummary, JsonSummary, Latex, LatexSummary, lcov, MarkdownSummary, MHtml, PngChart, SonarQube, TeamCitySummary, TextSummary, Xml, XmlSummary
tag: '${{ github.run_number }}_${{ github.run_id }}' # Optional tag or build version.
- name: Upload coverage report artifact
uses: actions/[email protected]
with:
name: CoverageReport
path: coveragereport
- name: Ensure SQL Script is up-to-date
shell: pwsh
run: |
dotnet ef migrations script --idempotent --no-build --no-color --configuration Release --project ToppingsApi/ToppingsApi/ToppingsApi.csproj --output ToppingsApi/ToppingsApi/Migrations/DBFull.sql
$status = $(git status --porcelain)
return $status.Length
env:
"ConnectionStrings:AppsDatabase": "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=app-db;Integrated Security=true;"
- uses: actions/upload-artifact@v2
#if: github.event_name != 'pull_request'
with:
name: DBFull.sql
path: ToppingsApi/ToppingsApi/Migrations/DBFull.sql
- name: dotnet publish
run: dotnet publish -c Release --no-build
working-directory: ToppingsApi
- id: get_acr
if: github.event_name != 'pull_request'
name: Get ACR Info
uses: ./.github/actions/get-acr
with:
resource_group: Demo-Global
azure_creds: ${{ env.azure_creds }}
# https://docs.microsoft.com/azure/container-registry/container-registry-auth-service-principal
- name: Docker Login ACR
if: github.event_name != 'pull_request'
run: docker login ${{ steps.get_acr.outputs.login_server }} --username ${{ secrets.AZURE_CLIENT_ID }} --password ${{ secrets.AZURE_CLIENT_SECRET }}
- name: Build and Push Docker image
if: github.event_name != 'pull_request'
run: |
docker build . --tag ${{ steps.get_acr.outputs.login_server }}/toppings-api:${{ env.version }}
docker push --all-tags ${{ steps.get_acr.outputs.login_server }}/toppings-api
working-directory: ToppingsApi/ToppingsApi
- name: Package Helm Chart
run: helm package toppings-api --version ${{ env.version }}
working-directory: ToppingsApi/helm
- name: Helm Registry Login
if: github.event_name != 'pull_request'
run: echo ${{ secrets.AZURE_CLIENT_SECRET }} | helm registry login ${{ steps.get_acr.outputs.login_server }} --username ${{ secrets.AZURE_CLIENT_ID }} --password-stdin --debug
working-directory: ToppingsApi/helm
- name: Push Helm Chart
if: github.event_name != 'pull_request'
run: helm push toppings-api-${{ env.version }}.tgz oci://${{ steps.get_acr.outputs.login_server }}/helm
working-directory: ToppingsApi/helm
deploy-dev:
if: github.event_name != 'pull_request'
needs: build
environment: Dev-Deploy
concurrency: ToppingsApi-Dev-Deploy
runs-on: ubuntu-latest
env:
cluster-name: Demo-Dev-aks
cluster-rg: Demo-Dev
steps:
- name: Azure Login
uses: azure/login@v1
with:
creds: '{"clientId":"${{ secrets.AZURE_CLIENT_ID }}","clientSecret":"${{ secrets.AZURE_CLIENT_SECRET }}","subscriptionId":"${{ secrets.AZURE_SUBSCRIPTION_ID }}","tenantId":"${{ secrets.AZURE_TENANT_ID }}"}'
- name: Log into AKS
run: az aks get-credentials --name ${{ env.cluster-name }} --resource-group ${{ env.cluster-rg }} --overwrite-existing
- name: Helm ACR login
run: echo ${{ secrets.AZURE_CLIENT_SECRET }} | helm registry login ${{ needs.build.outputs.acr_login_server }} --username ${{ secrets.AZURE_CLIENT_ID }} --password-stdin
- name: Download Helm Chart
run: helm pull oci://${{ needs.build.outputs.acr_login_server }}/helm/toppings-api --version ${{ env.version }}
- name: Helm Upgrade
run: helm upgrade toppings-release ./toppings-api-${{ env.version }}.tgz --atomic --install --version ${{ env.version }} --set image.tag=${{ env.version }} --set image.repository=${{ needs.build.outputs.acr_login_server }}/toppings-api --wait
deploy-dev-sql:
if: github.event_name != 'pull_request'
needs: [build, deploy-dev]
environment: Dev-Deploy
concurrency: Sql-Dev-Deploy
#Windows is required for azure/sql-action@v1
runs-on: windows-latest
env:
resource_group: Demo-Dev
sql_server: demodevsql
database: app-db
steps:
#TODO: Remove this once the actions are in their own repo
- uses: actions/checkout@v2
- uses: actions/download-artifact@v2
with:
name: DBFull.sql
- name: Azure Login
uses: azure/login@v1
with:
creds: '{"clientId":"${{ secrets.AZURE_CLIENT_ID }}","clientSecret":"${{ secrets.AZURE_CLIENT_SECRET }}","subscriptionId":"${{ secrets.AZURE_SUBSCRIPTION_ID }}","tenantId":"${{ secrets.AZURE_TENANT_ID }}"}'
- id: get_key_vault
name: Get Key Vault
shell: pwsh
run: |
$keyVaultName = $(az keyvault list --resource-group "${{ env.resource_group }}" --query [0].name --output tsv)
echo "::set-output name=name::$keyVaultName"
- uses: Azure/get-keyvault-secrets@v1
id: key_vault
with:
keyvault: ${{ steps.get_key_vault.outputs.name }}
secrets: "sqlAdminUsername,sqlAdminPassword"
- id: get_connection_string
name: Get DB Connection String
shell: pwsh
run: |
$connectionString = $(az sql db show-connection-string --name "${{ env.database }}" --server "${{ env.sql_server }}" --client ado.net --output tsv)
$connectionString = $connectionString -replace "<username>", "${{ steps.key_vault.outputs.sqlAdminUsername }}"
$connectionString = $connectionString -replace "<password>", "${{ steps.key_vault.outputs.sqlAdminPassword }}"
$connectionString = $connectionString -replace "Database=", "Initial Catalog="
$connectionString = $connectionString -replace "User ID=", "User Id="
echo "::set-output name=connection_string::$connectionString"
- uses: azure/sql-action@v1
with:
server-name: ${{ env.sql_server }}.database.windows.net
connection-string: ${{ steps.get_connection_string.outputs.connection_string }}
sql-file: './DBFull.sql'