Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
f5728f7
Merge pull request #512 from microsoft/dev
Roopan-Microsoft Dec 8, 2025
0f98e04
Added banner in readme for archival
Rafi-Microsoft Dec 9, 2025
1a7855d
Merge pull request #513 from Rafi-Microsoft/psl-dkm-retire
Prajwal-Microsoft Dec 9, 2025
c31e882
docs: Remove unmaintained repository warning
Prajwal-Microsoft Dec 12, 2025
49fbd3f
Merge pull request #515 from microsoft/revert-retirement
Roopan-Microsoft Dec 12, 2025
38151c9
pipelines creation initial version v1
Rafi-Microsoft Dec 15, 2025
c31425c
removed linux reference
Rafi-Microsoft Dec 15, 2025
ebfd02f
fix v1
Rafi-Microsoft Dec 15, 2025
793bbb4
fix v2
Rafi-Microsoft Dec 15, 2025
e947d3e
post deployment fix
Rafi-Microsoft Dec 16, 2025
0daefc5
post dep fix v2
Rafi-Microsoft Dec 16, 2025
56ffec8
post dep fix v3
Rafi-Microsoft Dec 16, 2025
d6a39cb
pipeline fix v1
Rafi-Microsoft Dec 16, 2025
39fd71a
pipeline fix v2
Rafi-Microsoft Dec 16, 2025
14c9d00
fix v3
Rafi-Microsoft Dec 16, 2025
bd19179
fix v4
Rafi-Microsoft Dec 16, 2025
9cfa334
updated ai location
Rafi-Microsoft Dec 16, 2025
2f2fdfd
fix v5
Rafi-Microsoft Dec 16, 2025
bfd953c
added open ai location param
Rafi-Microsoft Dec 17, 2025
aa6108d
added docker logs
Rafi-Microsoft Dec 17, 2025
910ebc3
docker issue fix v1
Rafi-Microsoft Dec 17, 2025
cb4cfd1
post dep fix v1
Rafi-Microsoft Dec 17, 2025
34eeea2
fix v3
Rafi-Microsoft Dec 17, 2025
7750aa4
updated tokens
Rafi-Microsoft Dec 18, 2025
da53491
added exp and waf support
Rafi-Microsoft Dec 18, 2025
59fb40e
fix v1
Rafi-Microsoft Dec 18, 2025
601b650
code cleanup
Rafi-Microsoft Dec 18, 2025
5c3613a
removed SecurityControl tag
Vamshi-Microsoft Dec 18, 2025
f42386d
Merge pull request #520 from microsoft/psl-remove-SecurityControl-tag
Prajwal-Microsoft Dec 18, 2025
1231dbb
code cleanup v2
Rafi-Microsoft Dec 18, 2025
4b1fa16
removed docker build file and code cleanup
Rafi-Microsoft Dec 18, 2025
bf2f244
fix v1
Rafi-Microsoft Dec 18, 2025
0c28294
e to e step fix
Rafi-Microsoft Dec 18, 2025
54f9fe9
updated output params
Rafi-Microsoft Dec 18, 2025
e75ff5f
added ai location param
Rafi-Microsoft Dec 19, 2025
8e85a0d
fixed copilot suggested fixes
Rafi-Microsoft Dec 22, 2025
d0cda0a
copilot fixes
Rafi-Microsoft Dec 22, 2025
52bfbca
renamed a param back to original
Rafi-Microsoft Dec 22, 2025
21e99d7
Merge pull request #522 from microsoft/dev
Prajwal-Microsoft Dec 29, 2025
094761c
Merge pull request #530 from microsoft/dev
Roopan-Microsoft Jan 5, 2026
2c1dd07
Added permissions section and removed Curl Azure CLI setup steps and…
Vamshi-Microsoft Jan 9, 2026
cf75f61
Merge pull request #533 from microsoft/psl-pipeline-security-fix
Prajwal-Microsoft Jan 12, 2026
d09f231
Merge pull request #534 from microsoft/dev
Prajwal-Microsoft Jan 12, 2026
edf6831
fix: Post deployment to continue on error
Vamshi-Microsoft Jan 14, 2026
7d3f367
Merge pull request #535 from microsoft/fixpipeline
Prajwal-Microsoft Jan 16, 2026
2e9759e
copilot suggested changes
Rafi-Microsoft Jan 28, 2026
61739e9
boolean values fix
Rafi-Microsoft Jan 28, 2026
26f1c16
fixes v1
Rafi-Microsoft Jan 29, 2026
c9e3713
Merge branch 'microsoft:main' into main
Rafi-Microsoft Jan 29, 2026
8033a84
Integrated GP and Smoke Testing
Vamshi-Microsoft Jan 30, 2026
e79a5fd
updated the post deployment script
Rafi-Microsoft Jan 30, 2026
4c773f0
fixed for waf and cleanup
Kanchan-Microsoft Jan 31, 2026
7ac7bf1
update troubleshoot document
NirajC-Microsoft Feb 9, 2026
b72df22
Merge pull request #542 from microsoft/psl-troubleshootdocupdate
Roopan-Microsoft Feb 16, 2026
6105629
docs: Update README with new accelerators and playbook links
Prajwal-Microsoft Feb 19, 2026
e886536
Merge pull request #546 from microsoft/cross-link-references
Roopan-Microsoft Feb 19, 2026
eb45753
Merge branch 'microsoft:main' into main
Vamshi-Microsoft Feb 27, 2026
9314c1f
Merge pull request #521 from Rafi-Microsoft/main
Prajwal-Microsoft Feb 27, 2026
8968421
Added Input Validation and Mapping Inputs to Env
Vamshi-Microsoft Mar 2, 2026
2bf4441
Migrated GitHub Actions authentication from client secrets to OIDC
Vamshi-Microsoft Mar 2, 2026
c823a25
Remove paths-ignore entries from CodeQL workflow
Vamshi-Microsoft Mar 2, 2026
e34ac56
renamed to deploy-linux for testing
Vamshi-Microsoft Mar 2, 2026
a5e8780
Merge pull request #555 from microsoft/dev
Roopan-Microsoft Mar 2, 2026
f5b3857
Merge branch 'main' into psl-inputvalidation-oidc
Vamshi-Microsoft Mar 4, 2026
db3b477
Minor updates
Vamshi-Microsoft Mar 4, 2026
2d23299
Merge pull request #556 from microsoft/psl-inputvalidation-oidc
Prajwal-Microsoft Mar 4, 2026
98c605e
Merge pull request #559 from microsoft/dev
Roopan-Microsoft Mar 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
63 changes: 26 additions & 37 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,18 @@ on:
- 'tests/**'
schedule:
- cron: "0 10,22 * * *" # Runs at 10:00 AM and 10:00 PM GMT

permissions:
id-token: write
contents: read
actions: read
env:
GPT_CAPACITY: 150
TEXT_EMBEDDING_CAPACITY: 200

jobs:
deploy:
runs-on: ubuntu-latest
environment: production
outputs:
RESOURCE_GROUP_NAME: ${{ steps.get_webapp_url.outputs.RESOURCE_GROUP_NAME }}
KUBERNETES_RESOURCE_GROUP_NAME: ${{ steps.get_webapp_url.outputs.KUBERNETES_RESOURCE_GROUP_NAME }}
Expand All @@ -35,12 +39,6 @@ jobs:
- name: Checkout Code
uses: actions/checkout@v5 # Checks out your repository

- name: Install Azure CLI
shell: bash
run: |
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
az --version # Verify installation

- name: Install Kubernetes CLI (kubectl)
shell: bash
run: |
Expand Down Expand Up @@ -82,6 +80,14 @@ jobs:
with:
driver: docker

- name: Login to Azure
uses: azure/login@v2
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
enable-AzPSSession: true

- name: Run Quota Check
id: quota-check
shell: pwsh
Expand Down Expand Up @@ -109,9 +115,6 @@ jobs:
}
env:
AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
GPT_MIN_CAPACITY: ${{ env.GPT_CAPACITY }}
TEXT_EMBEDDING_MIN_CAPACITY: ${{ env.TEXT_EMBEDDING_CAPACITY }}
AZURE_REGIONS: "${{ vars.AZURE_REGIONS }}"
Expand Down Expand Up @@ -144,10 +147,8 @@ jobs:
- name: Install Bicep CLI
run: az bicep install

- name: Install Azure Developer CLI
run: |
curl -fsSL https://aka.ms/install-azd.sh | bash
shell: bash
- name: Install azd
uses: Azure/setup-azd@v2

- name: Set Deployment Region
run: |
Expand All @@ -164,11 +165,6 @@ jobs:
echo "RESOURCE_GROUP_NAME=${UNIQUE_RG_NAME}" >> $GITHUB_ENV
echo "Generated RESOURCE_GROUP_NAME: ${UNIQUE_RG_NAME}"

- name: Login to Azure
run: |
az login --service-principal -u ${{ secrets.AZURE_CLIENT_ID }} -p ${{ secrets.AZURE_CLIENT_SECRET }} --tenant ${{ secrets.AZURE_TENANT_ID }}
az account set --subscription ${{ secrets.AZURE_SUBSCRIPTION_ID }}

- name: Check and Create Resource Group
id: check_create_rg
run: |
Expand Down Expand Up @@ -223,7 +219,7 @@ jobs:
enableRedundancy=false \
enableScalability=false \
createdBy="Pipeline" \
tags="{'SecurityControl':'Ignore','Purpose':'Deploying and Cleaning Up Resources for Validation','CreatedDate':'$current_date'}"
tags="{'Purpose':'Deploying and Cleaning Up Resources for Validation','CreatedDate':'$current_date'}"

- name: Get Deployment Output and extract Values
id: get_output
Expand Down Expand Up @@ -258,11 +254,8 @@ jobs:
Write-Host "Resource Group Name is ${{ env.RESOURCE_GROUP_NAME }}"
Write-Host "Kubernetes resource group is ${{ env.AZURE_AKS_NAME }}"
env:
# From GitHub secrets (for login)
# From GitHub secrets
AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}

# From deployment outputs step (these come from $GITHUB_ENV)
RESOURCE_GROUP_NAME: ${{ env.RESOURCE_GROUP_NAME }}
Expand Down Expand Up @@ -298,10 +291,9 @@ jobs:
if az account show &> /dev/null; then
echo "Azure CLI is authenticated."
else
echo "Azure CLI is not authenticated. Logging in..."
az login --service-principal --username ${{ secrets.AZURE_CLIENT_ID }} --password ${{ secrets.AZURE_CLIENT_SECRET }} --tenant ${{ secrets.AZURE_TENANT_ID }}
echo "Azure CLI is not authenticated. Please check the OIDC login step."
exit 1
fi
az account set --subscription ${{ secrets.AZURE_SUBSCRIPTION_ID }}

# Get the Web App URL and save it to GITHUB_OUTPUT
echo "Retrieving Web App URL..."
Expand Down Expand Up @@ -356,6 +348,7 @@ jobs:

- name: Run Post Deployment Script
shell: pwsh
continue-on-error: true
run: |
Write-Host "Running post deployment script to upload files..."
cd Deployment
Expand Down Expand Up @@ -398,6 +391,7 @@ jobs:
if: always()
needs: [deploy, e2e-test]
runs-on: ubuntu-latest
environment: production
env:
RESOURCE_GROUP_NAME: ${{ needs.deploy.outputs.RESOURCE_GROUP_NAME }}
KUBERNETES_RESOURCE_GROUP_NAME: ${{ needs.deploy.outputs.KUBERNETES_RESOURCE_GROUP_NAME }}
Expand All @@ -406,17 +400,12 @@ jobs:
VALID_REGION: ${{ needs.deploy.outputs.VALID_REGION }}

steps:
- name: Install Azure CLI
shell: bash
run: |
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
az --version # Verify installation

- name: Login to Azure
shell: bash
run: |
az login --service-principal --username ${{ secrets.AZURE_CLIENT_ID }} --password ${{ secrets.AZURE_CLIENT_SECRET }} --tenant ${{ secrets.AZURE_TENANT_ID }}
az account set --subscription "${{ secrets.AZURE_SUBSCRIPTION_ID }}"
uses: azure/login@v2
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}

- name: Delete Resource Groups
if: env.RESOURCE_GROUP_NAME != ''
Expand Down
8 changes: 0 additions & 8 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,21 +8,13 @@ on:
- 'App/frontend-app/**'
- 'App/kernel-memory/**'
- '.github/workflows/codeql.yml'
paths-ignore:
- '**/.gitignore'
- '**/Dockerfile'
- '**/.dockerignore'
pull_request:
branches: [ "main", "dev", "demo" ]
paths:
- 'App/backend-api/**'
- 'App/frontend-app/**'
- 'App/kernel-memory/**'
- '.github/workflows/codeql.yml'
paths-ignore:
- '**/.gitignore'
- '**/Dockerfile'
- '**/.dockerignore'
schedule:
- cron: '37 2 * * 5'

Expand Down
112 changes: 112 additions & 0 deletions .github/workflows/deploy-orchestrator.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
name: Deployment orchestrator

on:
workflow_call:
inputs:
azure_location:
description: 'Azure Location For Deployment'
required: false
default: 'australiaeast'
type: string
resource_group_name:
description: 'Resource Group Name (Optional)'
required: false
default: ''
type: string
waf_enabled:
description: 'Enable WAF'
required: false
default: false
type: boolean
EXP:
description: 'Enable EXP'
required: false
default: false
type: boolean
cleanup_resources:
description: 'Cleanup Deployed Resources'
required: false
default: false
type: boolean
run_e2e_tests:
description: 'Run End-to-End Tests'
required: false
default: 'GoldenPath-Testing'
type: string
AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID:
description: 'Log Analytics Workspace ID (Optional)'
required: false
default: ''
type: string
existing_webapp_url:
description: 'Existing Container WebApp URL (Skips Deployment)'
required: false
default: ''
type: string
trigger_type:
description: 'Trigger type (workflow_dispatch, pull_request, schedule)'
required: true
type: string

env:
AZURE_DEV_COLLECT_TELEMETRY: ${{ vars.AZURE_DEV_COLLECT_TELEMETRY }}

jobs:
deploy:
if: "!cancelled() && (inputs.trigger_type != 'workflow_dispatch' || inputs.existing_webapp_url == '' || inputs.existing_webapp_url == null)"
uses: ./.github/workflows/job-deploy.yml
with:
trigger_type: ${{ inputs.trigger_type }}
azure_location: ${{ inputs.azure_location }}
resource_group_name: ${{ inputs.resource_group_name }}
waf_enabled: ${{ inputs.waf_enabled }}
EXP: ${{ inputs.EXP }}
existing_webapp_url: ${{ inputs.existing_webapp_url }}
AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: ${{ inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID }}
run_e2e_tests: ${{ inputs.run_e2e_tests }}
cleanup_resources: ${{ inputs.cleanup_resources }}
secrets: inherit

e2e-test:
if: "!cancelled() && ((needs.deploy.outputs.WEB_APPURL != '' && needs.deploy.outputs.WEB_APPURL != null) || (inputs.existing_webapp_url != '' && inputs.existing_webapp_url != null)) && (inputs.trigger_type != 'workflow_dispatch' || (inputs.run_e2e_tests != 'None' && inputs.run_e2e_tests != '' && inputs.run_e2e_tests != null))"
needs: [deploy]
uses: ./.github/workflows/test-automation-v2.yml
with:
TEST_URL: ${{ needs.deploy.outputs.WEB_APPURL || inputs.existing_webapp_url }}
TEST_SUITE: ${{ inputs.trigger_type == 'workflow_dispatch' && inputs.run_e2e_tests || 'GoldenPath-Testing' }}
secrets: inherit

send-notification:
# if: "!cancelled()"
if: false # Temporarily disable notification job
needs: [deploy, e2e-test]
uses: ./.github/workflows/job-send-notification.yml
with:
trigger_type: ${{ inputs.trigger_type }}
waf_enabled: ${{ inputs.waf_enabled }}
EXP: ${{ inputs.EXP }}
run_e2e_tests: ${{ inputs.run_e2e_tests }}
existing_webapp_url: ${{ inputs.existing_webapp_url }}
deploy_result: ${{ needs.deploy.result }}
e2e_test_result: ${{ needs.e2e-test.result }}
WEB_APPURL: ${{ needs.deploy.outputs.WEB_APPURL || inputs.existing_webapp_url }}
RESOURCE_GROUP_NAME: ${{ needs.deploy.outputs.RESOURCE_GROUP_NAME }}
QUOTA_FAILED: ${{ needs.deploy.outputs.QUOTA_FAILED }}
TEST_SUCCESS: ${{ needs.e2e-test.outputs.TEST_SUCCESS }}
TEST_REPORT_URL: ${{ needs.e2e-test.outputs.TEST_REPORT_URL }}
secrets: inherit

cleanup-deployment:
if: "!cancelled() && needs.deploy.outputs.RESOURCE_GROUP_NAME != '' && inputs.existing_webapp_url == '' && (inputs.trigger_type != 'workflow_dispatch' || inputs.cleanup_resources)"
needs: [deploy, e2e-test]
uses: ./.github/workflows/job-cleanup-deployment.yml
with:
trigger_type: ${{ inputs.trigger_type }}
cleanup_resources: ${{ inputs.cleanup_resources }}
existing_webapp_url: ${{ inputs.existing_webapp_url }}
RESOURCE_GROUP_NAME: ${{ needs.deploy.outputs.RESOURCE_GROUP_NAME }}
AZURE_LOCATION: ${{ needs.deploy.outputs.AZURE_LOCATION }}
AZURE_ENV_OPENAI_LOCATION: ${{ needs.deploy.outputs.AZURE_ENV_OPENAI_LOCATION }}
ENV_NAME: ${{ needs.deploy.outputs.ENV_NAME }}
IMAGE_TAG: ${{ needs.deploy.outputs.IMAGE_TAG }}
secrets: inherit
Loading
Loading