Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
c3640a6
WIP: Save local changes before switching to int-agentic
Dec 17, 2025
70faaf1
Fix WebSocket reconnect issue and Vite build compatibility
Dec 17, 2025
61a79a4
Merge int-agentic: WebSocket fix and Vite build compatibility
Dec 17, 2025
f4a971f
Merge origin/int-agentic into james-dev
Jan 6, 2026
3465859
update authentication and bicep deployment to use AAD authentication …
Jan 7, 2026
cb86d3e
complete terraform deployment
Jan 7, 2026
8d21e1f
update DEPLOYMENT and Terraform
Jan 7, 2026
4d78333
update DEPLOYMENT and Terraform
Jan 7, 2026
cc67741
Changed AZURE_OPENAI_API_VERSION to use a variable
tjsullivan1 Jan 7, 2026
7fca542
Reverted the OIDC changes on providers.tf
tjsullivan1 Jan 7, 2026
371d9cf
Reverted the OIDC changes on providers.tf
tjsullivan1 Jan 7, 2026
f911913
Removing key vault referene from orchestration workflow
tjsullivan1 Jan 7, 2026
1b146fe
removing key vault reference and openai secret key from infrastructur…
tjsullivan1 Jan 7, 2026
48a4779
changing docker to build off new image
tjsullivan1 Jan 7, 2026
b379a65
changing docker to build off new image
tjsullivan1 Jan 7, 2026
f968dce
changing docker to build off new image
tjsullivan1 Jan 7, 2026
2d0d524
Making backend config optionally remote in the proper way
tjsullivan1 Jan 8, 2026
421a8f6
Reverting backend change, seems to have broken state connection
tjsullivan1 Jan 8, 2026
324fa5b
adding a local provider file so I can have flexible backends
tjsullivan1 Jan 8, 2026
06e61d9
upgrade version of agent-framework and allow mcp in internal communic…
Jan 8, 2026
24707ee
Merge branch 'james-dev' of https://github.com/microsoft/OpenAIWorksh…
Jan 8, 2026
ce41fb2
Updated to work with both local and remote state
tjsullivan1 Jan 8, 2026
923e8f8
optimize reflection agent code and remove workflow reflection agent
Jan 8, 2026
db269ec
Merge branch 'james-dev' of https://github.com/microsoft/OpenAIWorksh…
Jan 8, 2026
a40610d
add github workflow
Jan 9, 2026
0605e60
update github workflow to use repo level variables
Jan 9, 2026
40542cb
update github workflow to use repo level variables
Jan 9, 2026
7b0776a
update github workflow to use repo level variables
Jan 9, 2026
50f2357
update github workflow to use repo level variables
Jan 9, 2026
393d44d
update test cases & test timeout & excluce MCP test bc mcp is deploye…
Jan 9, 2026
d582c36
move test to after deployment
Jan 9, 2026
ef5ba68
move test to after deployment
Jan 9, 2026
1c2d6fd
fix api version
Jan 9, 2026
a59ac4d
fix api version
Jan 9, 2026
926d65b
fix test run
Jan 9, 2026
66127c0
fix: Use placeholder image for Container Apps initial deployment
Jan 9, 2026
5becdb1
fix: Remove pull_request triggers from Docker workflows
Jan 9, 2026
55a2891
feat: Add james-dev to destroy-infrastructure condition
Jan 9, 2026
aeb5316
feat: Update Bicep for feature parity with Terraform
Jan 9, 2026
b80b119
docs: enhance README with Mermaid diagrams and enterprise deployment …
Jan 9, 2026
31b1b2e
docs: enhance README with Mermaid diagrams and enterprise deployment …
Jan 9, 2026
d7ec1f1
Updated deployment to reference tfvars file for local file/iteration …
tjsullivan1 Jan 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,9 @@
"ghcr.io/devcontainers/features/azure-cli:1": {},
"ghcr.io/devcontainers-extra/features/uv:1": {},
"ghcr.io/devcontainers/features/github-cli:1": {},
"ghcr.io/devcontainers/features/docker-in-docker:2": {}
"ghcr.io/devcontainers/features/terraform:1": {},
"ghcr.io/devcontainers/features/docker-in-docker:2": {},
"ghcr.io/devcontainers/features/powershell:1": {}
},
"secrets": {
"AZURE_OPENAI_ENDPOINT": {
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/destroy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ jobs:
terraform_destroy:
name: Terraform Destroy
runs-on: ubuntu-latest
environment: ${{ inputs.environment || 'dev' }}
# environment: ${{ inputs.environment || 'dev' }} # Commented out to use repo-level variables
permissions:
id-token: write
contents: read
Expand Down Expand Up @@ -58,7 +58,7 @@ jobs:

terraform init -backend-config="resource_group_name=${TFSTATE_RG}" \
-backend-config="key=${TFSTATE_KEY}" -backend-config="storage_account_name=${TFSTATE_ACCOUNT}" \
-backend-config="container_name=${TFSTATE_CONTAINER}"
-backend-config="container_name=${TFSTATE_CONTAINER}" -backend-config="use_oidc=true" -backend-config="use_azuread_auth=true"

terraform destroy -auto-approve \
-var project_name=${{ github.event.repository.name }} \
Expand Down
79 changes: 79 additions & 0 deletions .github/workflows/docker-application.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
name: Build and Push Docker Image for Backend Application

on:
# Only run via workflow_call from orchestrate.yml or manual dispatch
# Do not run automatically on pull_request - orchestrate.yml handles the full pipeline
workflow_call:
inputs:
environment:
type: string
required: true

workflow_dispatch:
inputs:
environment:
description: Target environment
type: choice
options: [dev, integration, prod]
default: dev

env:
IMAGE_NAME: backend-app
PROJECT_SUBPATH: agentic_ai/
IMAGE_TAG: ${{ inputs.environment && format('{0}-latest', inputs.environment) || 'latest' }}


jobs:
build:
name: Build & Push Backend Image
runs-on: ubuntu-latest
# environment: ${{ inputs.environment || 'dev' }} # Commented out to use repo-level variables
permissions:
id-token: write
contents: read

steps:
- uses: actions/checkout@v4

- name: Azure OIDC Login
uses: azure/login@v2
with:
client-id: ${{ vars.AZURE_CLIENT_ID }}
tenant-id: ${{ vars.AZURE_TENANT_ID }}
subscription-id: ${{ vars.AZURE_SUBSCRIPTION_ID }}

- name: Determine ACR Name
id: acr
run: |
# Construct ACR name matching Terraform pattern: {project}{env}acr{iteration}
PROJECT="${{ vars.PROJECT_NAME || 'OpenAIWorkshop' }}"
ENV="${{ inputs.environment || 'dev' }}"
ITERATION="${{ vars.ITERATION || '002' }}"
ACR_NAME="${PROJECT}${ENV}acr${ITERATION}"
echo "name=${ACR_NAME}" >> $GITHUB_OUTPUT
echo "server=${ACR_NAME}.azurecr.io" >> $GITHUB_OUTPUT
echo "Using ACR: ${ACR_NAME}"

- name: Login to Azure Container Registry
run: |
# Get ACR access token using the OIDC-authenticated Azure CLI session
ACR_TOKEN=$(az acr login --name ${{ steps.acr.outputs.name }} --expose-token --query accessToken -o tsv)
echo "$ACR_TOKEN" | docker login ${{ steps.acr.outputs.server }} --username 00000000-0000-0000-0000-000000000000 --password-stdin

- name: Build and Push Image
run: |
cd ${{ env.PROJECT_SUBPATH }}
ACR_SERVER="${{ steps.acr.outputs.server }}"

# Build with both SHA tag and environment tag
docker build \
-t "${ACR_SERVER}/${{ env.IMAGE_NAME }}:${{ github.sha }}" \
-t "${ACR_SERVER}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}" \
-t "${ACR_SERVER}/${{ env.IMAGE_NAME }}:latest" \
-f applications/Dockerfile .

# Push all tags
docker push "${ACR_SERVER}/${{ env.IMAGE_NAME }}" --all-tags

echo "βœ… Pushed: ${ACR_SERVER}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}"
echo "ACR: ${{ steps.acr.outputs.name }}"
64 changes: 0 additions & 64 deletions .github/workflows/docker-fastapi.yml

This file was deleted.

95 changes: 54 additions & 41 deletions .github/workflows/docker-mcp.yml
Original file line number Diff line number Diff line change
@@ -1,64 +1,77 @@
# This is a basic workflow to help you get started with Actions
name: Build and Push Docker Image for MCP Service

name: Build and Push Docker Image for MCP

# Controls when the action will run.
on:
# Triggers the workflow on push or pull request events but only for the main branch
pull_request:
branches: [ main ]

# Only run via workflow_call from orchestrate.yml or manual dispatch
# Do not run automatically on pull_request - orchestrate.yml handles the full pipeline
workflow_call:
inputs:
environment:
type: string
required: true

# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
inputs:
environment:
description: Target environment
type: choice
options: [dev, integration, prod]
default: dev

env:
PROJECT_NAME: aoaiwkshp-mcp
PROJECT_SUBPATH: mcp/
SPECIFIC_RELEASE_TAG: ${{ inputs.environment && format('{0}-latest', inputs.environment) || vars.SPECIFIC_RELEASE_TAG || '' }}
IMAGE_NAME: mcp-service
PROJECT_SUBPATH: mcp/
IMAGE_TAG: ${{ inputs.environment && format('{0}-latest', inputs.environment) || 'latest' }}


# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
name: Build & Push MCP Image
runs-on: ubuntu-latest
# Only run if the required variables exist
if: vars.REGISTRY_LOGIN_SERVER != '' && vars.REGISTRY_LOGIN_SERVER != null
# environment: ${{ inputs.environment || 'dev' }} # Commented out to use repo-level variables
permissions:
id-token: write
contents: read

# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2
- uses: docker/login-action@v3
- uses: actions/checkout@v4

- name: Azure OIDC Login
uses: azure/login@v2
with:
registry: ${{ vars.REGISTRY_LOGIN_SERVER }}
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
client-id: ${{ vars.AZURE_CLIENT_ID }}
tenant-id: ${{ vars.AZURE_TENANT_ID }}
subscription-id: ${{ vars.AZURE_SUBSCRIPTION_ID }}

- name: Build registry prefix
id: prefix
- name: Determine ACR Name
id: acr
run: |
if [[ "${{ vars.REGISTRY_LOGIN_SERVER }}" == *"docker.io"* ]]; then
echo "prefix=${{ vars.REGISTRY_LOGIN_SERVER }}/${{ secrets.REGISTRY_USERNAME }}/${{ env.PROJECT_NAME }}" >> $GITHUB_OUTPUT
else
echo "prefix=${{ vars.REGISTRY_LOGIN_SERVER }}/${{ env.PROJECT_NAME }}" >> $GITHUB_OUTPUT
fi

# Construct ACR name matching Terraform pattern: {project}{env}acr{iteration}
PROJECT="${{ vars.PROJECT_NAME || 'OpenAIWorkshop' }}"
ENV="${{ inputs.environment || 'dev' }}"
ITERATION="${{ vars.ITERATION || '002' }}"
ACR_NAME="${PROJECT}${ENV}acr${ITERATION}"
echo "name=${ACR_NAME}" >> $GITHUB_OUTPUT
echo "server=${ACR_NAME}.azurecr.io" >> $GITHUB_OUTPUT
echo "Using ACR: ${ACR_NAME}"

- run: |
if [ -z "${{ env.SPECIFIC_RELEASE_TAG }}" ]; then
docker build ${{ env.PROJECT_SUBPATH }} -t ${{ steps.prefix.outputs.prefix }}:${{ github.sha }} -t ${{ steps.prefix.outputs.prefix }}:latest
else
docker build ${{ env.PROJECT_SUBPATH }} -t ${{ steps.prefix.outputs.prefix }}:${{ env.SPECIFIC_RELEASE_TAG }} -t ${{ steps.prefix.outputs.prefix }}:latest
fi
- name: Login to Azure Container Registry
run: |
# Get ACR access token using the OIDC-authenticated Azure CLI session
ACR_TOKEN=$(az acr login --name ${{ steps.acr.outputs.name }} --expose-token --query accessToken -o tsv)
echo "$ACR_TOKEN" | docker login ${{ steps.acr.outputs.server }} --username 00000000-0000-0000-0000-000000000000 --password-stdin

- run: |
docker push ${{ steps.prefix.outputs.prefix }} --all-tags
- name: Build and Push Image
run: |
ACR_SERVER="${{ steps.acr.outputs.server }}"

# Build with both SHA tag and environment tag
docker build ${{ env.PROJECT_SUBPATH }} \
-t "${ACR_SERVER}/${{ env.IMAGE_NAME }}:${{ github.sha }}" \
-t "${ACR_SERVER}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}" \
-t "${ACR_SERVER}/${{ env.IMAGE_NAME }}:latest"

# Push all tags
docker push "${ACR_SERVER}/${{ env.IMAGE_NAME }}" --all-tags

echo "βœ… Pushed: ${ACR_SERVER}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}"
echo "ACR: ${{ steps.acr.outputs.name }}"
Loading