-
Notifications
You must be signed in to change notification settings - Fork 8
Feature/OIDC acr migration #1001
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -97,7 +97,7 @@ jobs: | |||||
| - name: Azure Login | ||||||
| uses: azure/login@v3 | ||||||
| with: | ||||||
| client-id: ${{ secrets.ESSENTIALCSHARPDEV_CLIENT_ID }} | ||||||
| client-id: ${{ secrets.AZURE_CLIENT_ID }} | ||||||
| tenant-id: ${{ secrets.ESSENTIALCSHARP_APPIDENTITY_TENANT_ID }} | ||||||
| subscription-id: ${{ secrets.ESSENTIALCSHARP_SUBSCRIPTION_ID }} | ||||||
|
|
||||||
|
|
@@ -113,45 +113,38 @@ jobs: | |||||
| docker image ls -a | ||||||
|
|
||||||
| - name: Log in to container registry | ||||||
| uses: docker/login-action@v4 | ||||||
| with: | ||||||
| registry: ${{ vars.DEVCONTAINER_REGISTRY }} | ||||||
| username: ${{ secrets.ESSENTIALCSHARP_ACR_USERNAME }} | ||||||
| password: ${{ secrets.ESSENTIALCSHARP_ACR_PASSWORD }} | ||||||
| run: | | ||||||
| REGISTRY="${{ vars.DEVCONTAINER_REGISTRY }}" | ||||||
| az acr login --name "${REGISTRY%.azurecr.io}" | ||||||
|
|
||||||
| - name: Push Image to Container Registry | ||||||
| run: docker push --all-tags ${{ vars.DEVCONTAINER_REGISTRY }}/essentialcsharpweb | ||||||
|
|
||||||
| - name: Create and Deploy to Container App | ||||||
| - name: Configure Container App Identity and Registry | ||||||
| uses: azure/CLI@v3 | ||||||
| env: | ||||||
| CONTAINER_APP_NAME: ${{ vars.CONTAINER_APP_NAME }} | ||||||
| RESOURCEGROUP: ${{ vars.RESOURCEGROUP }} | ||||||
| CONTAINER_REGISTRY: ${{ vars.DEVCONTAINER_REGISTRY }} | ||||||
| CONTAINER_APP_ENVIRONMENT: ${{ vars.CONTAINER_APP_ENVIRONMENT }} | ||||||
| ACR_USERNAME: ${{ secrets.ESSENTIALCSHARP_ACR_USERNAME }} | ||||||
| ACR_PASSWORD: ${{ secrets.ESSENTIALCSHARP_ACR_PASSWORD }} | ||||||
| with: | ||||||
| inlineScript: | | ||||||
| az config set extension.use_dynamic_install=yes_without_prompt | ||||||
| az containerapp up -n $CONTAINER_APP_NAME -g $RESOURCEGROUP --image $CONTAINER_REGISTRY/essentialcsharpweb:${{ github.sha }} --environment $CONTAINER_APP_ENVIRONMENT --registry-server $CONTAINER_REGISTRY --ingress external --target-port 8080 --registry-username $ACR_USERNAME --registry-password $ACR_PASSWORD | ||||||
| # Assumes container app already exists (provisioned by Terraform) | ||||||
| az extension add --name containerapp --upgrade | ||||||
| az containerapp identity assign --name $CONTAINER_APP_NAME --resource-group $RESOURCEGROUP --user-assigned ${{ secrets.WEB_UAMI_RESOURCE_ID }} | ||||||
| az containerapp registry set --name $CONTAINER_APP_NAME --resource-group $RESOURCEGROUP --server $CONTAINER_REGISTRY --identity ${{ secrets.WEB_UAMI_RESOURCE_ID }} | ||||||
|
|
||||||
| - name: Assign Managed Identity to Container App and Set Secrets and Environment Variables | ||||||
| uses: azure/CLI@v3 | ||||||
| env: | ||||||
| CONTAINER_APP_NAME: ${{ vars.CONTAINER_APP_NAME }} | ||||||
| RESOURCEGROUP: ${{ vars.RESOURCEGROUP }} | ||||||
| CONTAINER_REGISTRY: ${{ vars.DEVCONTAINER_REGISTRY }} | ||||||
| CONTAINER_APP_ENVIRONMENT: ${{ vars.CONTAINER_APP_ENVIRONMENT }} | ||||||
| KEYVAULTURI: ${{ secrets.ESSENTIALCSHARP_KEYVAULT_URI }} | ||||||
| MANAGEDIDENTITYID: ${{ secrets.ESSENTIALCSHARP_APPIDENTITY_ID }} | ||||||
| ACR_USERNAME: ${{ secrets.ESSENTIALCSHARP_ACR_USERNAME }} | ||||||
| ACR_PASSWORD: ${{ secrets.ESSENTIALCSHARP_ACR_PASSWORD }} | ||||||
| AZURECLIENTID: ${{ secrets.IDENTITY_CLIENT_ID }} | ||||||
| MANAGEDIDENTITYID: ${{ secrets.WEB_UAMI_RESOURCE_ID }} | ||||||
| AZURECLIENTID: ${{ secrets.WEB_UAMI_CLIENT_ID }} | ||||||
| TRYDOTNET_ORIGIN: ${{ vars.TRYDOTNET_ORIGIN }} | ||||||
| with: | ||||||
| inlineScript: | | ||||||
| az containerapp identity assign -n ${{ vars.CONTAINER_APP_NAME }} -g ${{ vars.RESOURCEGROUP }} --user-assigned ${{ vars.CONTAINER_APP_IDENTITY }} | ||||||
| az containerapp secret set -n $CONTAINER_APP_NAME -g $RESOURCEGROUP --secrets github-clientid=keyvaultref:$KEYVAULTURI/secrets/authentication-github-clientid,identityref:$MANAGEDIDENTITYID \ | ||||||
| github-clientsecret=keyvaultref:$KEYVAULTURI/secrets/authentication-github-clientsecret,identityref:$MANAGEDIDENTITYID msft-clientid=keyvaultref:$KEYVAULTURI/secrets/authentication-microsoft-clientid,identityref:$MANAGEDIDENTITYID \ | ||||||
| msft-clientsecret=keyvaultref:$KEYVAULTURI/secrets/authentication-microsoft-clientsecret,identityref:$MANAGEDIDENTITYID emailsender-apikey=keyvaultref:$KEYVAULTURI/secrets/authmessagesender-apikey,identityref:$MANAGEDIDENTITYID \ | ||||||
|
|
@@ -163,7 +156,9 @@ jobs: | |||||
| ai-vectordeployment=keyvaultref:$KEYVAULTURI/secrets/AIOptions--VectorGenerationDeploymentName,identityref:$MANAGEDIDENTITYID ai-chatdeployment=keyvaultref:$KEYVAULTURI/secrets/AIOptions--ChatDeploymentName,identityref:$MANAGEDIDENTITYID \ | ||||||
| ai-systemprompt=keyvaultref:$KEYVAULTURI/secrets/AIOptions--SystemPrompt,identityref:$MANAGEDIDENTITYID \ | ||||||
| postgres-vectorstore-connectionstring=keyvaultref:$KEYVAULTURI/secrets/ConnectionStrings--PostgresVectorStore,identityref:$MANAGEDIDENTITYID | ||||||
| az containerapp update --name $CONTAINER_APP_NAME --resource-group $RESOURCEGROUP --replace-env-vars Authentication__github__clientId=secretref:github-clientid Authentication__github__clientSecret=secretref:github-clientsecret \ | ||||||
| az containerapp update --name $CONTAINER_APP_NAME --resource-group $RESOURCEGROUP \ | ||||||
| --image $CONTAINER_REGISTRY/essentialcsharpweb:${{ github.sha }} \ | ||||||
| --replace-env-vars Authentication__github__clientId=secretref:github-clientid Authentication__github__clientSecret=secretref:github-clientsecret \ | ||||||
| Authentication__microsoft__clientId=secretref:msft-clientid Authentication__microsoft__clientSecret=secretref:msft-clientsecret AuthMessageSender__ApiKey=secretref:emailsender-apikey AuthMessageSender__SecretKey=secretref:emailsender-secret \ | ||||||
| AuthMessageSender__SendFromName=secretref:emailsender-name AuthMessageSender__SendFromEmail=secretref:emailsender-email ConnectionStrings__EssentialCSharpWebContextConnection=secretref:connectionstring ASPNETCORE_ENVIRONMENT=Staging \ | ||||||
| AZURE_CLIENT_ID=$AZURECLIENTID HCaptcha__SiteKey=secretref:captcha-sitekey HCaptcha__SecretKey=secretref:captcha-secretkey APPLICATIONINSIGHTS_CONNECTION_STRING=secretref:appinsights-connectionstring \ | ||||||
|
|
@@ -186,15 +181,15 @@ jobs: | |||||
| needs: [deploy-development] | ||||||
| concurrency: | ||||||
| group: deploy-production | ||||||
| cancel-in-progress: true | ||||||
| cancel-in-progress: false | ||||||
|
||||||
| cancel-in-progress: false | |
| cancel-in-progress: true |
Copilot
AI
Apr 22, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The step name says it assigns a managed identity, but the identity assignment was moved to the prior step. Rename this step to reflect what it now does (setting Key Vault-backed secrets and updating Container App env vars/image) to avoid confusion during ops/debugging.
| - name: Assign Managed Identity to Container App and Set Secrets and Environment Variables | |
| - name: Set Key Vault-backed Secrets and Update Container App Environment Variables and Image |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The step name says it assigns a managed identity, but the identity assignment was moved to the prior step. Rename this step to reflect what it now does (setting Key Vault-backed secrets and updating Container App env vars/image) to avoid confusion during ops/debugging.