Skip to content

Commit f2a1256

Browse files
committed
simplify workflow
1 parent 1a333e4 commit f2a1256

1 file changed

Lines changed: 60 additions & 132 deletions

File tree

.github/workflows/docker-container-sampleagent-python.yml

Lines changed: 60 additions & 132 deletions
Original file line numberDiff line numberDiff line change
@@ -31,173 +31,101 @@ jobs:
3131
with:
3232
creds: ${{ secrets.AZURE_CREDENTIALS }}
3333

34-
- name: Check and Create Resource Group
35-
id: check-rg
34+
- name: Create Resource Group if needed
3635
run: |
37-
echo "Checking if Resource Group exists..."
38-
RG_EXISTS=$(az group exists --name ${{ env.AZURE_RESOURCE_GROUP }})
39-
40-
if [ "$RG_EXISTS" = "false" ]; then
41-
echo "Resource Group does not exist. Creating..."
42-
az group create \
43-
--name ${{ env.AZURE_RESOURCE_GROUP }} \
44-
--location eastus
45-
echo "rg_created=true" >> $GITHUB_OUTPUT
46-
echo "✅ Resource Group created: ${{ env.AZURE_RESOURCE_GROUP }}"
47-
else
48-
echo "✅ Resource Group already exists: ${{ env.AZURE_RESOURCE_GROUP }}"
49-
echo "rg_created=false" >> $GITHUB_OUTPUT
36+
if ! az group exists --name ${{ env.AZURE_RESOURCE_GROUP }} --output tsv | grep -q true; then
37+
echo "Creating Resource Group..."
38+
az group create --name ${{ env.AZURE_RESOURCE_GROUP }} --location eastus
5039
fi
5140
52-
- name: Check and Create Azure Container Registry
53-
id: check-acr
41+
- name: Create ACR if needed
5442
run: |
55-
echo "Checking if ACR exists..."
56-
ACR_EXISTS=$(az acr list --resource-group ${{ env.AZURE_RESOURCE_GROUP }} --query "[?name=='${{ env.ACR_NAME }}'].name" -o tsv)
57-
58-
if [ -z "$ACR_EXISTS" ]; then
59-
echo "ACR does not exist. Creating..."
43+
if ! az acr show --name ${{ env.ACR_NAME }} &> /dev/null; then
44+
echo "Creating ACR..."
6045
az acr create \
6146
--resource-group ${{ env.AZURE_RESOURCE_GROUP }} \
6247
--name ${{ env.ACR_NAME }} \
6348
--sku Basic \
6449
--admin-enabled true
65-
echo "acr_created=true" >> $GITHUB_OUTPUT
66-
else
67-
echo "ACR already exists: ${{ env.ACR_NAME }}"
68-
echo "acr_created=false" >> $GITHUB_OUTPUT
6950
fi
7051
71-
- name: Get ACR Login Server
72-
id: acr-login-server
73-
run: |
74-
ACR_LOGIN_SERVER=$(az acr show --name ${{ env.ACR_NAME }} --resource-group ${{ env.AZURE_RESOURCE_GROUP }} --query loginServer -o tsv)
75-
echo "login_server=$ACR_LOGIN_SERVER" >> $GITHUB_OUTPUT
76-
echo "ACR Login Server: $ACR_LOGIN_SERVER"
77-
7852
- name: Login to Azure Container Registry
7953
run: |
80-
# Get ACR token and login to Docker
81-
TOKEN=$(az acr login --name ${{ env.ACR_NAME }} --expose-token --output tsv --query accessToken)
82-
echo $TOKEN | docker login ${{ steps.acr-login-server.outputs.login_server }} -u 00000000-0000-0000-0000-000000000000 --password-stdin
54+
az acr login --name ${{ env.ACR_NAME }}
8355
8456
- name: Build Docker Image
8557
run: |
86-
docker build -t ${{ steps.acr-login-server.outputs.login_server }}/${{ env.IMAGE_NAME }}:${{ github.sha }} \
87-
-t ${{ steps.acr-login-server.outputs.login_server }}/${{ env.IMAGE_NAME }}:latest \
58+
docker build -t ${{ env.ACR_NAME }}.azurecr.io/${{ env.IMAGE_NAME }}:${{ github.sha }} \
59+
-t ${{ env.ACR_NAME }}.azurecr.io/${{ env.IMAGE_NAME }}:latest \
8860
-f python/agent-framework/sample-agent/Dockerfile \
8961
python/agent-framework/sample-agent
9062
9163
- name: Push Docker Image to ACR
9264
run: |
93-
docker push ${{ steps.acr-login-server.outputs.login_server }}/${{ env.IMAGE_NAME }}:${{ github.sha }}
94-
docker push ${{ steps.acr-login-server.outputs.login_server }}/${{ env.IMAGE_NAME }}:latest
95-
96-
echo "image_tag=${{ steps.acr-login-server.outputs.login_server }}/${{ env.IMAGE_NAME }}:${{ github.sha }}" >> $GITHUB_ENV
97-
echo "image_latest=${{ steps.acr-login-server.outputs.login_server }}/${{ env.IMAGE_NAME }}:latest" >> $GITHUB_ENV
65+
docker push ${{ env.ACR_NAME }}.azurecr.io/${{ env.IMAGE_NAME }}:${{ github.sha }}
66+
docker push ${{ env.ACR_NAME }}.azurecr.io/${{ env.IMAGE_NAME }}:latest
9867
99-
- name: Check and Create Container App Environment
100-
id: check-env
68+
- name: Create Container App Environment if needed
10169
run: |
102-
echo "Checking if Container App Environment exists..."
103-
ENV_EXISTS=$(az containerapp env list --resource-group ${{ env.AZURE_RESOURCE_GROUP }} --query "[?name=='${{ env.CONTAINER_APP_ENV }}'].name" -o tsv)
104-
105-
if [ -z "$ENV_EXISTS" ]; then
106-
echo "Container App Environment does not exist. Creating..."
70+
if ! az containerapp env show --name ${{ env.CONTAINER_APP_ENV }} --resource-group ${{ env.AZURE_RESOURCE_GROUP }} &> /dev/null; then
71+
echo "Creating Container App Environment..."
10772
az containerapp env create \
10873
--name ${{ env.CONTAINER_APP_ENV }} \
10974
--resource-group ${{ env.AZURE_RESOURCE_GROUP }} \
11075
--location eastus
111-
echo "env_created=true" >> $GITHUB_OUTPUT
112-
else
113-
echo "Container App Environment already exists: ${{ env.CONTAINER_APP_ENV }}"
114-
echo "env_created=false" >> $GITHUB_OUTPUT
11576
fi
11677
117-
- name: Check if Container App Exists
118-
id: check-app
78+
- name: Deploy to Azure Container App
11979
run: |
120-
echo "Checking if Container App exists..."
121-
APP_EXISTS=$(az containerapp list --resource-group ${{ env.AZURE_RESOURCE_GROUP }} --query "[?name=='${{ env.CONTAINER_APP_NAME }}'].name" -o tsv)
122-
123-
if [ -z "$APP_EXISTS" ]; then
124-
echo "app_exists=false" >> $GITHUB_OUTPUT
125-
echo "Container App does not exist. Will create."
80+
if az containerapp show --name ${{ env.CONTAINER_APP_NAME }} --resource-group ${{ env.AZURE_RESOURCE_GROUP }} &> /dev/null; then
81+
echo "Updating existing Container App..."
82+
az containerapp update \
83+
--name ${{ env.CONTAINER_APP_NAME }} \
84+
--resource-group ${{ env.AZURE_RESOURCE_GROUP }} \
85+
--image ${{ env.ACR_NAME }}.azurecr.io/${{ env.IMAGE_NAME }}:${{ github.sha }} \
86+
--set-env-vars \
87+
PORT=3978 \
88+
AZURE_OPENAI_ENDPOINT=${{ secrets.AZURE_OPENAI_ENDPOINT }} \
89+
AZURE_OPENAI_DEPLOYMENT=${{ secrets.AZURE_OPENAI_DEPLOYMENT }} \
90+
AZURE_OPENAI_API_VERSION=${{ secrets.AZURE_OPENAI_API_VERSION }} \
91+
AZURE_OPENAI_API_KEY=${{ secrets.AZURE_OPENAI_API_KEY }} \
92+
USE_AGENTIC_AUTH=true \
93+
ENABLE_OBSERVABILITY=true \
94+
PYTHON_ENVIRONMENT=production
12695
else
127-
echo "app_exists=true" >> $GITHUB_OUTPUT
128-
echo "Container App exists. Will update."
96+
echo "Creating new Container App..."
97+
az containerapp create \
98+
--name ${{ env.CONTAINER_APP_NAME }} \
99+
--resource-group ${{ env.AZURE_RESOURCE_GROUP }} \
100+
--environment ${{ env.CONTAINER_APP_ENV }} \
101+
--image ${{ env.ACR_NAME }}.azurecr.io/${{ env.IMAGE_NAME }}:${{ github.sha }} \
102+
--registry-server ${{ env.ACR_NAME }}.azurecr.io \
103+
--target-port 3978 \
104+
--ingress external \
105+
--min-replicas 1 \
106+
--max-replicas 3 \
107+
--cpu 0.5 \
108+
--memory 1.0Gi \
109+
--env-vars \
110+
PORT=3978 \
111+
AZURE_OPENAI_ENDPOINT=${{ secrets.AZURE_OPENAI_ENDPOINT }} \
112+
AZURE_OPENAI_DEPLOYMENT=${{ secrets.AZURE_OPENAI_DEPLOYMENT }} \
113+
AZURE_OPENAI_API_VERSION=${{ secrets.AZURE_OPENAI_API_VERSION }} \
114+
AZURE_OPENAI_API_KEY=${{ secrets.AZURE_OPENAI_API_KEY }} \
115+
USE_AGENTIC_AUTH=true \
116+
ENABLE_OBSERVABILITY=true \
117+
PYTHON_ENVIRONMENT=production
129118
fi
130119
131-
- name: Create Container App
132-
if: steps.check-app.outputs.app_exists == 'false'
133-
run: |
134-
echo "Creating Container App..."
135-
az containerapp create \
136-
--name ${{ env.CONTAINER_APP_NAME }} \
137-
--resource-group ${{ env.AZURE_RESOURCE_GROUP }} \
138-
--environment ${{ env.CONTAINER_APP_ENV }} \
139-
--image ${{ env.image_latest }} \
140-
--target-port 3978 \
141-
--ingress external \
142-
--transport auto \
143-
--allow-insecure true \
144-
--registry-server ${{ steps.acr-login-server.outputs.login_server }} \
145-
--cpu 0.5 \
146-
--memory 1.0Gi \
147-
--min-replicas 1 \
148-
--max-replicas 3 \
149-
--env-vars \
150-
PORT=3978 \
151-
AZURE_OPENAI_API_KEY=secretref:azure-openai-key \
152-
AZURE_OPENAI_ENDPOINT=${{ secrets.AZURE_OPENAI_ENDPOINT }} \
153-
AZURE_OPENAI_DEPLOYMENT=${{ secrets.AZURE_OPENAI_DEPLOYMENT }} \
154-
AZURE_OPENAI_API_VERSION=${{ secrets.AZURE_OPENAI_API_VERSION }} \
155-
USE_AGENTIC_AUTH=true \
156-
ENABLE_OBSERVABILITY=true \
157-
ENABLE_A365_OBSERVABILITY_EXPORTER=false \
158-
PYTHON_ENVIRONMENT=production \
159-
ENABLE_OTEL=true \
160-
ENABLE_SENSITIVE_DATA=false
161-
162-
# Add secrets
163-
az containerapp secret set \
164-
--name ${{ env.CONTAINER_APP_NAME }} \
165-
--resource-group ${{ env.AZURE_RESOURCE_GROUP }} \
166-
--secrets azure-openai-key=${{ secrets.AZURE_OPENAI_API_KEY }}
167-
168-
- name: Update Container App
169-
if: steps.check-app.outputs.app_exists == 'true'
170-
run: |
171-
echo "Updating Container App with new image..."
172-
az containerapp update \
173-
--name ${{ env.CONTAINER_APP_NAME }} \
174-
--resource-group ${{ env.AZURE_RESOURCE_GROUP }} \
175-
--image ${{ env.image_latest }}
176-
177120
- name: Get Container App URL
178-
id: app-url
179121
run: |
180-
APP_URL=$(az containerapp show \
122+
FQDN=$(az containerapp show \
181123
--name ${{ env.CONTAINER_APP_NAME }} \
182124
--resource-group ${{ env.AZURE_RESOURCE_GROUP }} \
183-
--query properties.configuration.ingress.fqdn -o tsv)
184-
echo "app_url=https://$APP_URL" >> $GITHUB_OUTPUT
185-
echo "Container App URL: https://$APP_URL"
186-
187-
- name: Display Deployment Summary
188-
run: |
189-
echo "✅ Deployment Complete!"
190-
echo "========================"
191-
echo "Resource Group: ${{ env.AZURE_RESOURCE_GROUP }}"
192-
echo "Container Registry: ${{ steps.acr-login-server.outputs.login_server }}"
193-
echo "Container App: ${{ env.CONTAINER_APP_NAME }}"
194-
echo "App URL: ${{ steps.app-url.outputs.app_url }}"
195-
echo "Health Endpoint: ${{ steps.app-url.outputs.app_url }}/api/health"
196-
echo "Messages Endpoint: ${{ steps.app-url.outputs.app_url }}/api/messages"
197-
echo "========================"
198-
199-
- name: Azure Logout
200-
if: always()
201-
run: |
202-
az logout
125+
--query properties.configuration.ingress.fqdn \
126+
--output tsv)
127+
echo "🚀 Container App deployed successfully!"
128+
echo "🌐 URL: https://$FQDN"
129+
echo "📍 Health: https://$FQDN/api/health"
130+
echo "📨 Messages: https://$FQDN/api/messages"
203131

0 commit comments

Comments
 (0)