Bump Microsoft.Identity.Client from 4.37.0 to 4.61.3 in /ToppingsApi/ToppingsApi #120
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: 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' |