Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
221 commits
Select commit Hold shift + click to select a range
a5b6394
build(deps): bump the all-frontend-deps group
dependabot[bot] Nov 1, 2025
f1ae11e
build(deps): bump the all-backend-deps group in /src with 16 updates
dependabot[bot] Nov 1, 2025
1d228d7
build(deps): bump the all-actions group with 4 updates
dependabot[bot] Nov 1, 2025
3c0b914
Move doc gen to archive. Start new template for Content Gen
hunterjam Nov 21, 2025
dc24a47
feat: Add Intelligent Content Generation Accelerator
hunterjam Dec 1, 2025
337fafa
fix: Update deployment scripts with latest configuration
hunterjam Dec 1, 2025
cb0438b
feat: Add Chat History component
hunterjam Dec 1, 2025
800bc9b
Fix Chat History persistence across all conversation flows
hunterjam Dec 2, 2025
312e270
Move Product Selector and Content Preview inline into chat conversation
hunterjam Dec 2, 2025
03f310d
Persist generated_content in CosmosDB and restore on conversation load
hunterjam Dec 2, 2025
1fe0a0f
Add image proxy endpoint to fix broken image links
hunterjam Dec 3, 2025
805dac6
Add Azure deployment with private endpoints and ACI backend
hunterjam Dec 3, 2025
375aaf7
Add Azure deployment with private endpoints
hunterjam Dec 4, 2025
b0a202e
Add ACI deployment config and limit chat history to 5 conversations w…
hunterjam Dec 4, 2025
7fde44b
Filter chat history by authenticated user
hunterjam Dec 5, 2025
7b451ca
Added .zip
hunterjam Dec 5, 2025
4d08e29
UI redesign: Contoso branding, new welcome card, updated content preview
hunterjam Dec 5, 2025
d7a93af
Update product catalog to Contoso Paints with 16 paint colors
hunterjam Dec 5, 2025
d008637
Add responsive UI design and product image proxy
hunterjam Dec 8, 2025
68ba13e
Add conversational brief review feature
hunterjam Dec 8, 2025
17efe9c
Add heartbeat mechanism and visual progress indicator for content gen…
hunterjam Dec 8, 2025
0cbbacd
Clean up legacy agent code and improve UI progress indicators
hunterjam Dec 9, 2025
b11eb41
Update deployment scripts for Agent Framework architecture
hunterjam Dec 9, 2025
e481ea8
Add gpt-image-1 support as alternative to DALL-E 3
hunterjam Dec 9, 2025
8d7440f
v1.17: Fix 60-second VNet timeout with polling-based content generation
hunterjam Dec 10, 2025
5ac9a80
Fix image download to include text overlay, remove attach file button…
hunterjam Dec 10, 2025
548b8dd
feat(infra): Add private networking ACI deployment with managed identity
hunterjam Dec 11, 2025
cec45a6
Infrastructure cleanup, frontend improvements, and deployment automation
hunterjam Dec 15, 2025
b6adf96
Fix image generation env vars and add post-deploy improvements
hunterjam Dec 16, 2025
c17434c
Fix admin API, orchestrator, and conversation retrieval bugs
hunterjam Dec 17, 2025
5f0c652
Clean up: add rai_results to gitignore, remove unused rai_test.py
hunterjam Dec 17, 2025
bd71293
Code cleanup: remove unused import and build artifact
hunterjam Dec 17, 2025
8e8fef5
Add Azure Developer CLI (azd) deployment guide
hunterjam Dec 17, 2025
5d3f053
Add comprehensive local development guide
hunterjam Dec 17, 2025
5b98cb5
feat: Add dynamic clarifying questions for incomplete creative briefs
hunterjam Dec 18, 2025
bb3c856
feat: Add chat history toggle button and SamplePrompt icon
hunterjam Dec 18, 2025
1fbca26
chore: Remove build output directories from git tracking
hunterjam Dec 18, 2025
91dbbb3
Updated backend structure by moving API Dockerfile into backend folder
Ragini-Microsoft Dec 24, 2025
a9f48a0
Remove configuration and dependency files of backend from src
Ragini-Microsoft Dec 24, 2025
4c7cf14
Added frontend dockerfile
Ragini-Microsoft Dec 24, 2025
48fb8d6
updated the infra code
Ragini-Microsoft Dec 24, 2025
24be5ae
Refactor and clean up code across multiple files
Kingshuk-Microsoft Dec 29, 2025
ecdcfc0
Fix initialization in _AzureSearchSettings to ensure proper inheritan…
Kingshuk-Microsoft Dec 29, 2025
7b00bc6
removed the ACR deployment and few infra updates
Ragini-Microsoft Dec 30, 2025
f57a40c
Refactor _AzureSearchSettings initialization to ensure proper inherit…
Kingshuk-Microsoft Dec 30, 2025
3fb1910
Remove redundant page initialization in BrowsePage, DraftPage, Genera…
Kingshuk-Microsoft Dec 30, 2025
db96c2e
Fix regex pattern in PdfTextSplitter to exclude additional characters…
Kingshuk-Microsoft Dec 30, 2025
95d022c
remove unused Dockerfile for backend service
Ragini-Microsoft Dec 31, 2025
60d580b
add devcontainer configuration and setup script
Ragini-Microsoft Dec 31, 2025
e4acde2
update script paths in setup_env.sh for correct permissions
Ragini-Microsoft Dec 31, 2025
29f00eb
add --only-show-errors flag to Azure CLI command to suppress welcome …
Ragini-Microsoft Dec 31, 2025
524c3c3
remove execute permission commands from setup_env.sh
Ragini-Microsoft Dec 31, 2025
4307e5f
minor update in post_deploy
Ragini-Microsoft Dec 31, 2025
3736b99
adjust Azure CLI command execution for cross-platform compatibility
Ragini-Microsoft Dec 31, 2025
57abded
Add initial VS Code web support files and configuration
Ragini-Microsoft Dec 31, 2025
af1da8d
Remove branch specification from azd init command in install.sh
Ragini-Microsoft Jan 1, 2026
268dc76
Update GitHub Codespaces, Dev Containers and VS Cde Web links in READ…
Ragini-Microsoft Jan 1, 2026
7886a78
Remove preprovision hooks and skipContainerDeployment parameter from …
Ragini-Microsoft Jan 1, 2026
83ba039
build(deps): bump the all-frontend-deps group
dependabot[bot] Jan 1, 2026
ff3babd
build(deps): bump the all-backend-deps group in /src with 18 updates
dependabot[bot] Jan 1, 2026
606d3cf
build(deps): bump the all-actions group with 4 updates
dependabot[bot] Jan 1, 2026
ee7758c
update ACR name
Ragini-Microsoft Jan 2, 2026
8ce46e7
Refactor failedSections handling in appStateReducer for improved clar…
Kingshuk-Microsoft Jan 2, 2026
c5569c6
update VS Code Web URL to use stable version
Ragini-Microsoft Jan 5, 2026
2ce9ee5
Merge pull request #2 from hunterjam/psl-contentgen
hunterjam Jan 5, 2026
1422cf4
Add Azure AI agent endpoint and enable build during deployment custom…
Harsh-Microsoft Jan 6, 2026
8cb50dd
Merge branch 'dev' into dependabotchanges
Harsh-Microsoft Jan 7, 2026
af76ea0
chore: downgrade React and related packages to version 18.x, update T…
Harsh-Microsoft Jan 7, 2026
476cc2e
update local development scripts and output variable names
Ragini-Microsoft Jan 7, 2026
3f039d0
fix: Use ad_token_provider for automatic token refresh
hunterjam Jan 7, 2026
a888b78
feat: Add sample image generation script
hunterjam Jan 7, 2026
5fd2d0b
feat: Add sample content generation script
hunterjam Jan 7, 2026
2ce1264
feat: include blob URL in generate response
hunterjam Jan 7, 2026
c1dd186
Merge branch 'main' of https://github.com/hunterjam/content-generatio…
Ragini-Microsoft Jan 8, 2026
de0f11a
added Azure AI User role to deployer
Ragini-Microsoft Jan 8, 2026
70ff58e
add login prompt for azure authentication
Ragini-Microsoft Jan 8, 2026
37fa6fb
included gpt-image-1.5 option
Ragini-Microsoft Jan 8, 2026
c88ac98
update the Azure authentication check before role assignment
Ragini-Microsoft Jan 8, 2026
447c317
Merge pull request #3 from hunterjam/psl-contentgen
hunterjam Jan 8, 2026
65fd2b0
feat: add Azure AI Foundry support with direct image API
hunterjam Jan 8, 2026
db7c1ab
fix: Foundry integration with correct SDK usage
hunterjam Jan 8, 2026
8c8f677
fix: Use direct Azure OpenAI endpoint for Foundry mode chat
hunterjam Jan 8, 2026
3d17cc8
Add Azure AI Foundry environment variables to ACI deployment
hunterjam Jan 8, 2026
1deb156
Merge pull request #655 from microsoft/dependabotchanges
Roopan-Microsoft Jan 9, 2026
78a8480
Add sample environment configuration for Azure AI integration
Kingshuk-Microsoft Jan 9, 2026
97cf33c
Add validation step for Inputs and Map Inputs to env
Vamshi-Microsoft Jan 9, 2026
36c5b94
Add Permissions
Vamshi-Microsoft Jan 9, 2026
e5c5f8a
Remove export command and Curl Azure CLI setup steps and replace with…
Vamshi-Microsoft Jan 9, 2026
dcb1926
removed the az login dependency during deployment
Ragini-Microsoft Jan 9, 2026
e57e344
Merge branch 'main' of https://github.com/hunterjam/content-generatio…
Ragini-Microsoft Jan 9, 2026
91b8b02
Merge pull request #4 from hunterjam/psl-contentgen
hunterjam Jan 9, 2026
433bc13
Update solution documentation
hunterjam Jan 9, 2026
7ed921f
Update solution architecture image
hunterjam Jan 9, 2026
ae485db
ui updates
gpickett Jan 10, 2026
ab815eb
Merge pull request #659 from microsoft/pls-pipeline-security-fix
Prajwal-Microsoft Jan 12, 2026
7b3b7d7
Improve post-deploy script logging in azure.yaml
Ragini-Microsoft Jan 12, 2026
0d94aaa
Merge pull request #647 from microsoft/security-code-quality-fix
Roopan-Microsoft Jan 12, 2026
3ff3a9b
chore: update dependencies in package.json
Harsh-Microsoft Jan 12, 2026
bfe2a2f
chore: replace npm ci with npm install in GitHub Actions workflow
Harsh-Microsoft Jan 12, 2026
5f5439d
rebuilt package lock
Harsh-Microsoft Jan 12, 2026
b0036a7
Merge branch 'dev' into hb-psl-fix-testissue
Harsh-Microsoft Jan 12, 2026
ffb5d13
fix: ensure QUOTA_FAILED output defaults to 'false' in job-deploy.yml
Harsh-Microsoft Jan 12, 2026
660d626
fix: remove 'hb-psl-fix-testissue' branch from push triggers in node.…
Harsh-Microsoft Jan 12, 2026
0126ce8
Merge pull request #662 from microsoft/hb-psl-fix-testissue
Roopan-Microsoft Jan 12, 2026
455ca23
Merge pull request #5 from hunterjam/psl-contentgen
hunterjam Jan 12, 2026
c7ebf6c
build fix
gpickett Jan 12, 2026
28c67c5
added back fields and fixed bugs
gpickett Jan 13, 2026
111fac3
Merge pull request #661 from microsoft/dev
Roopan-Microsoft Jan 13, 2026
3c81cc2
Initial build docker and optional push
Avijit-Microsoft Jan 13, 2026
f32849a
Update Docker tag name to 'latest' for main branch
Avijit-Microsoft Jan 13, 2026
29e06ce
update frontend folder structure (src → app/frontend)
Ragini-Microsoft Jan 13, 2026
392ae51
add .dockerignore for API Docker build
Ragini-Microsoft Jan 13, 2026
dbb350c
ci: fixed Pipeline failures
Vamshi-Microsoft Jan 13, 2026
9e50355
updated local dev scripts
Ragini-Microsoft Jan 13, 2026
578f47d
Merge pull request #7 from Avijit-Microsoft/main
hunterjam Jan 13, 2026
51b38ce
added orginal images
gpickett Jan 13, 2026
6b66b7d
Include Azure authentication step in Deployment Guide
Thanusree-Microsoft Jan 14, 2026
2232d9a
docs: Include Azure authentication step in Deployment Guide
Avijit-Microsoft Jan 14, 2026
ec5e102
fix alignment of no messages text
gpickett Jan 14, 2026
6dbbe7d
Merge pull request #6 from hunterjam/UIupdates
hunterjam Jan 15, 2026
46b98ea
fix: show anonymous conversations in chat history
hunterjam Jan 15, 2026
b763494
fix: update agent_framework import from HandoffUserInputRequest to Ha…
hunterjam Jan 15, 2026
b5ceb92
Fix: update HandoffBuilder API call from set_coordinator to with_star…
hunterjam Jan 15, 2026
439c4d5
Add graceful workflow termination for RAI violations
hunterjam Jan 15, 2026
5caf234
Fix RAI termination: check at application layer, not just workflow level
hunterjam Jan 15, 2026
54b8380
Strengthen agent instructions to absolutely forbid handoff after RAI …
hunterjam Jan 15, 2026
6908dc5
Fix RAI detection: check ALL messages in conversation, not just last …
hunterjam Jan 15, 2026
ba19f52
Expand RAI refusal patterns to catch more agent responses
hunterjam Jan 15, 2026
e19f463
Add proactive harmful content detection at input layer
hunterjam Jan 15, 2026
370b32f
Clean up redundant RAI refusal detection code
hunterjam Jan 15, 2026
c00a306
Revert "updated local dev scripts"
Ragini-Microsoft Jan 16, 2026
a51a2ab
Revert "add .dockerignore for API Docker build"
Ragini-Microsoft Jan 16, 2026
bdb3c15
Revert "update frontend folder structure (src → app/frontend)"
Ragini-Microsoft Jan 16, 2026
ab8b290
Merge branch 'main' of https://github.com/hunterjam/content-generatio…
Ragini-Microsoft Jan 16, 2026
165a35f
updated frontend folder structure (src/app/frontend)
Ragini-Microsoft Jan 16, 2026
328ac28
backend .dockerignore file added
Ragini-Microsoft Jan 16, 2026
2de49a3
update local dev scripts
Ragini-Microsoft Jan 16, 2026
e435685
Merge pull request #8 from hunterjam/psl-contentgen
hunterjam Jan 16, 2026
a005875
Code cleanup: remove unused imports, fix image caching, update produc…
hunterjam Jan 16, 2026
58733d9
Fix Agent Framework API: use agent_response.messages instead of conve…
hunterjam Jan 16, 2026
d14060b
feat(ui): move compliance violations to end of content with collapsib…
hunterjam Jan 16, 2026
bf004e2
refactor: replace Facebook/Instagram references with 'social media'
hunterjam Jan 16, 2026
4c00855
fix: prevent text in generated images and improve overlay handling
hunterjam Jan 16, 2026
5bc5618
Strengthen no-text instructions in image generation prompts
hunterjam Jan 16, 2026
33465a5
Fix product/campaign logic issues
hunterjam Jan 16, 2026
2277be9
Fix: Add user guidance callouts to InlineContentPreview (correct file)
hunterjam Jan 16, 2026
db1bc65
Remove unused ContentPreview.tsx (app uses InlineContentPreview)
hunterjam Jan 16, 2026
918aed0
Remove unused TaskHeader.tsx component
hunterjam Jan 16, 2026
f99ff77
Remove unused API functions and types from frontend
hunterjam Jan 16, 2026
0f967c4
Add transition document for project handoff
hunterjam Jan 16, 2026
1a2f26a
Merge pull request #667 from microsoft/dev
Roopan-Microsoft Jan 19, 2026
951b903
Pin agent-framework to stable version 1.0.0b260114
Ragini-Microsoft Jan 20, 2026
3243d89
Merge branch 'main' into fix-Pipeline-failures
Vamshi-Microsoft Jan 20, 2026
ddb103b
Fix: Hide 'Content generated successfully! Headline:' message
hunterjam Jan 20, 2026
e4f40e1
Fix: Show missing key areas in brief review message
hunterjam Jan 20, 2026
f125666
Merge pull request #663 from microsoft/fix-Pipeline-failures
Prajwal-Microsoft Jan 21, 2026
89bfde0
Fix inconsistent photorealistic compliance severity
hunterjam Jan 21, 2026
172c323
Fix multiple UI bugs
hunterjam Jan 21, 2026
d8c9a28
Remove unused onActionChipClick prop from InlineContentPreview
hunterjam Jan 21, 2026
bcae72c
Fix: Clarify character limit guidelines for compliance agent
hunterjam Jan 21, 2026
5698c51
Disable chat history selection and See All during content generation
hunterjam Jan 21, 2026
37e51a9
added back delete and rename functionality
gpickett Jan 21, 2026
b318e95
Fix: clarifying responses now update pending brief
hunterjam Jan 21, 2026
f97d5f9
Fix: display all brief fields in single consistent grey box
hunterjam Jan 21, 2026
34b1c2e
added legacy /userid partition key
gpickett Jan 21, 2026
a3a35d9
Merge remote-tracking branch 'origin/main' into delete&rename
gpickett Jan 21, 2026
3149e22
Added GitHub Actions workflow for automated release creation
Ragini-Microsoft Jan 22, 2026
ad58303
Merge pull request #11 from hunterjam/psl-contentgen
hunterjam Jan 22, 2026
4f352b3
deployment guide update
gpickett Jan 22, 2026
4cf11f1
docs: Update TRANSPARENCY_FAQ.md styling to match archive format
hunterjam Jan 22, 2026
0f09b5f
Add isGenerating prop to ChatHistory for disabling during content gen…
hunterjam Jan 22, 2026
12a7980
Merge pull request #12 from hunterjam/readMeUpdate
hunterjam Jan 22, 2026
594f380
update landing page
gpickett Jan 22, 2026
727023a
remove space
gpickett Jan 23, 2026
eb0c649
added azure template validation workflow
Ragini-Microsoft Jan 23, 2026
4903387
Remove hardcoded principalType (User) from AI services to allow runti…
Ragini-Microsoft Jan 23, 2026
8ea872c
Replace large SVG icons with optimized PNG versions
hunterjam Jan 23, 2026
5f0329a
Merge pull request #13 from hunterjam/updateLangingpage
hunterjam Jan 23, 2026
283bb3e
Merge pull request #14 from hunterjam/psl-contentgen-gsa
hunterjam Jan 23, 2026
c1f9772
Update TRANSPARENCY_FAQ.md - simplify evaluation SDK wording
hunterjam Jan 23, 2026
4448b22
Merge branch 'update-transparency-faq-wording'
hunterjam Jan 23, 2026
bd786ef
update deployment guide
gpickett Jan 23, 2026
feebc1e
Fix: Disable product selection during content generation
hunterjam Jan 23, 2026
7a61b45
Merge pull request #15 from hunterjam/fixDeploymentGuide
hunterjam Jan 23, 2026
428e635
fix: filter system prompt content from agent responses
hunterjam Jan 23, 2026
374ed0a
Add post-generation image regeneration capability
hunterjam Jan 23, 2026
f327596
Merge fix-system-prompt-exposure: system prompt fix and image regener…
hunterjam Jan 23, 2026
aafdc3f
Fix regenerate to persist image modifications to creative brief
hunterjam Jan 24, 2026
bed50b4
Update archive-doc-gen with latest code from document-generation-solu…
hunterjam Jan 26, 2026
53e2e60
update sample prompts
gpickett Jan 26, 2026
868f4cc
Merge pull request #16 from hunterjam/updatesamplePrompt
Fr4nc3 Jan 26, 2026
38dc31a
update landing page for readme
gpickett Jan 26, 2026
329a6a5
Merge pull request #17 from hunterjam/updateLandingpage
Fr4nc3 Jan 26, 2026
1b196ec
fix conflicts
Fr4nc3 Jan 27, 2026
723682b
Merge pull request #18 from hunterjam/features/jh-to-dev
hunterjam Jan 27, 2026
5a8c269
Fix the issue with devcontainer
Prekshith-Microsoft Jan 28, 2026
5203b24
Merge pull request #672 from microsoft/dev-con-issue
Prajwal-Microsoft Jan 28, 2026
0a10285
Update orchestrator.py
Fr4nc3 Jan 28, 2026
f20ab34
Merge pull request #19 from hunterjam/features/jh-to-dev
hunterjam Jan 28, 2026
213de27
Merge pull request #671 from hunterjam/main
aniaroramsft Jan 29, 2026
10190fd
Merge branch 'main' into feature/con-gen-to-main
Fr4nc3 Jan 29, 2026
898302a
Remove transition document and e2e test file
Fr4nc3 Jan 29, 2026
14508af
Update scope limitations in orchestrator instructions
Fr4nc3 Jan 29, 2026
aaa2694
Clarify scope limitations in orchestrator instructions
Fr4nc3 Jan 29, 2026
ff78cc9
Add LLM-based RAI agent for safety and scope checks
Fr4nc3 Jan 30, 2026
b0de5a2
fix: azd template, devcontainer yarn issue for content generation
Avijit-Microsoft Jan 30, 2026
1ffb853
fix: azd template, devcontainer yarn issue for content generation
Avijit-Microsoft Jan 30, 2026
40197ec
fix: display full value in ConfirmedBriefView component
Avijit-Microsoft Jan 30, 2026
3b62345
fix: display full value in ConfirmedBriefView component
Avijit-Microsoft Jan 30, 2026
37d3149
Merge pull request #674 from microsoft/feature/con-gen-to-main
aniaroramsft Jan 30, 2026
897f48d
update the links to point to correct repository
Ragini-Microsoft Jan 31, 2026
3cc822e
chore: update the links to point to correct repository
Avijit-Microsoft Feb 2, 2026
ed35efd
Merge pull request #681 from microsoft/dev
aniaroramsft Feb 2, 2026
c4add42
chore: update repository links in README and DEPLOYMENT.md
Avijit-Microsoft Feb 2, 2026
e8d2e9b
Merge pull request #685 from microsoft/ag-deploy-link
Fr4nc3 Feb 2, 2026
b00be54
Update solution architecture image
Fr4nc3 Feb 2, 2026
219183a
Update README.md
Fr4nc3 Feb 2, 2026
ef99802
Update README.md
Fr4nc3 Feb 2, 2026
7f04586
Merge pull request #686 from microsoft/feature/con-gen-to-main
Fr4nc3 Feb 2, 2026
0498323
updated VS Code Web URL
Ragini-Microsoft Feb 3, 2026
a16a821
chore: updated VS Code Web URL
Avijit-Microsoft Feb 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 4 additions & 0 deletions .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
FROM mcr.microsoft.com/devcontainers/python:3.11-bullseye

# Remove Yarn repository to avoid GPG key expiration issue
RUN rm -f /etc/apt/sources.list.d/yarn.list
6 changes: 4 additions & 2 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
{
"name": "azd-template",
"image": "mcr.microsoft.com/devcontainers/python:3.11-bullseye",
"forwardPorts": [50505],
"build": {
"dockerfile": "Dockerfile"
},
"forwardPorts": [3000, 5000],
"features": {
"ghcr.io/devcontainers/features/node:1": {
"nodeGypDependencies": true,
Expand Down
3 changes: 0 additions & 3 deletions .devcontainer/setup_env.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,3 @@

git fetch
git pull

# provide execute permission to quotacheck script
sudo chmod +x ./scripts/quota_check_params.sh
7 changes: 4 additions & 3 deletions .github/workflows/azure-dev.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: Azure Template Validation
on:
workflow_dispatch:
workflow_dispatch:

permissions:
contents: read
Expand All @@ -15,20 +15,21 @@ jobs:
steps:
# Step 1: Checkout the code from your repository
- name: Checkout code
uses: actions/checkout@v5
uses: actions/checkout@v4

# Step 2: Validate the Azure template using microsoft/template-validation-action
- name: Validate Azure Template
uses: microsoft/template-validation-action@v0.4.3
id: validation
with:
workingDirectory: ./content-gen
env:
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
AZURE_ENV_NAME: ${{ secrets.AZURE_ENV_NAME }}
AZURE_LOCATION: ${{ secrets.AZURE_LOCATION }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
AZURE_DEV_COLLECT_TELEMETRY: ${{ vars.AZURE_DEV_COLLECT_TELEMETRY }}

# Step 3: Print the result of the validation
- name: Print result
Expand Down
130 changes: 66 additions & 64 deletions .github/workflows/create-release.yml
Original file line number Diff line number Diff line change
@@ -1,64 +1,66 @@
on:
push:
branches:
- main

permissions:
contents: write
pull-requests: write

name: Create-Release

jobs:
create-release:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v5
with:
ref: ${{ github.event.workflow_run.head_sha }}

- uses: codfish/semantic-release-action@v4
id: semantic
with:
tag-format: 'v${version}'
additional-packages: |
['conventional-changelog-conventionalcommits@7']
plugins: |
[
[
"@semantic-release/commit-analyzer",
{
"preset": "conventionalcommits"
}
],
[
"@semantic-release/release-notes-generator",
{
"preset": "conventionalcommits",
"presetConfig": {
"types": [
{ type: 'feat', section: 'Features', hidden: false },
{ type: 'fix', section: 'Bug Fixes', hidden: false },
{ type: 'perf', section: 'Performance Improvements', hidden: false },
{ type: 'revert', section: 'Reverts', hidden: false },
{ type: 'docs', section: 'Other Updates', hidden: false },
{ type: 'style', section: 'Other Updates', hidden: false },
{ type: 'chore', section: 'Other Updates', hidden: false },
{ type: 'refactor', section: 'Other Updates', hidden: false },
{ type: 'test', section: 'Other Updates', hidden: false },
{ type: 'build', section: 'Other Updates', hidden: false },
{ type: 'ci', section: 'Other Updates', hidden: false }
]
}
}
],
'@semantic-release/github'
]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: echo ${{ steps.semantic.outputs.release-version }}

- run: echo "$OUTPUTS"
env:
OUTPUTS: ${{ toJson(steps.semantic.outputs) }}
name: "Create Release"

on:
push:
branches: ["main"]

workflow_dispatch:

permissions:
contents: write
pull-requests: write

jobs:
create-release:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
ref: ${{ github.sha }}

- uses: codfish/semantic-release-action@v3
id: semantic
with:
tag-format: 'v${version}'
additional-packages: |
['conventional-changelog-conventionalcommits@7']
plugins: |
[
[
"@semantic-release/commit-analyzer",
{
"preset": "conventionalcommits"
}
],
[
"@semantic-release/release-notes-generator",
{
"preset": "conventionalcommits",
"presetConfig": {
"types": [
{ type: 'feat', section: 'Features', hidden: false },
{ type: 'fix', section: 'Bug Fixes', hidden: false },
{ type: 'perf', section: 'Performance Improvements', hidden: false },
{ type: 'revert', section: 'Reverts', hidden: false },
{ type: 'docs', section: 'Other Updates', hidden: false },
{ type: 'style', section: 'Other Updates', hidden: false },
{ type: 'chore', section: 'Other Updates', hidden: false },
{ type: 'refactor', section: 'Other Updates', hidden: false },
{ type: 'test', section: 'Other Updates', hidden: false },
{ type: 'build', section: 'Other Updates', hidden: false },
{ type: 'ci', section: 'Other Updates', hidden: false }
]
}
}
],
'@semantic-release/github'
]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- run: echo ${{ steps.semantic.outputs.release-version }}

- run: echo "$OUTPUTS"
env:
OUTPUTS: ${{ toJson(steps.semantic.outputs) }}
192 changes: 181 additions & 11 deletions .github/workflows/deploy-linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -93,21 +93,191 @@ on:

schedule:
- cron: '0 9,21 * * *' # Runs at 9:00 AM and 9:00 PM GMT

permissions:
contents: read
actions: read
jobs:
validate-inputs:
runs-on: ubuntu-latest
outputs:
validation_passed: ${{ steps.validate.outputs.passed }}
azure_location: ${{ steps.validate.outputs.azure_location }}
resource_group_name: ${{ steps.validate.outputs.resource_group_name }}
waf_enabled: ${{ steps.validate.outputs.waf_enabled }}
exp: ${{ steps.validate.outputs.exp }}
build_docker_image: ${{ steps.validate.outputs.build_docker_image }}
cleanup_resources: ${{ steps.validate.outputs.cleanup_resources }}
run_e2e_tests: ${{ steps.validate.outputs.run_e2e_tests }}
azure_env_log_analytics_workspace_id: ${{ steps.validate.outputs.azure_env_log_analytics_workspace_id }}
azure_existing_ai_project_resource_id: ${{ steps.validate.outputs.azure_existing_ai_project_resource_id }}
existing_webapp_url: ${{ steps.validate.outputs.existing_webapp_url }}
steps:
- name: Validate Workflow Input Parameters
id: validate
shell: bash
env:
INPUT_AZURE_LOCATION: ${{ github.event.inputs.azure_location }}
INPUT_RESOURCE_GROUP_NAME: ${{ github.event.inputs.resource_group_name }}
INPUT_WAF_ENABLED: ${{ github.event.inputs.waf_enabled }}
INPUT_EXP: ${{ github.event.inputs.EXP }}
INPUT_BUILD_DOCKER_IMAGE: ${{ github.event.inputs.build_docker_image }}
INPUT_CLEANUP_RESOURCES: ${{ github.event.inputs.cleanup_resources }}
INPUT_RUN_E2E_TESTS: ${{ github.event.inputs.run_e2e_tests }}
INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: ${{ github.event.inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID }}
INPUT_AZURE_EXISTING_AI_PROJECT_RESOURCE_ID: ${{ github.event.inputs.AZURE_EXISTING_AI_PROJECT_RESOURCE_ID }}
INPUT_EXISTING_WEBAPP_URL: ${{ github.event.inputs.existing_webapp_url }}
run: |
echo "🔍 Validating workflow input parameters..."
VALIDATION_FAILED=false

# Validate azure_location (Azure region format)
LOCATION="${INPUT_AZURE_LOCATION:-australiaeast}"

if [[ ! "$LOCATION" =~ ^[a-z0-9]+$ ]]; then
echo "❌ ERROR: azure_location '$LOCATION' is invalid. Must contain only lowercase letters and numbers"
VALIDATION_FAILED=true
else
echo "✅ azure_location: '$LOCATION' is valid"
fi

# Validate resource_group_name (Azure naming convention, optional)
if [[ -n "$INPUT_RESOURCE_GROUP_NAME" ]]; then
if [[ ! "$INPUT_RESOURCE_GROUP_NAME" =~ ^[a-zA-Z0-9._\(\)-]+$ ]] || [[ "$INPUT_RESOURCE_GROUP_NAME" =~ \.$ ]]; then
echo "❌ ERROR: resource_group_name '$INPUT_RESOURCE_GROUP_NAME' is invalid. Must contain only alphanumerics, periods, underscores, hyphens, and parentheses. Cannot end with period."
VALIDATION_FAILED=true
elif [[ ${#INPUT_RESOURCE_GROUP_NAME} -gt 90 ]]; then
echo "❌ ERROR: resource_group_name '$INPUT_RESOURCE_GROUP_NAME' exceeds 90 characters (length: ${#INPUT_RESOURCE_GROUP_NAME})"
VALIDATION_FAILED=true
else
echo "✅ resource_group_name: '$INPUT_RESOURCE_GROUP_NAME' is valid"
fi
else
echo "✅ resource_group_name: Not provided (will be auto-generated)"
fi

# Validate waf_enabled (boolean)
WAF_ENABLED="${INPUT_WAF_ENABLED:-false}"
if [[ "$WAF_ENABLED" != "true" && "$WAF_ENABLED" != "false" ]]; then
echo "❌ ERROR: waf_enabled must be 'true' or 'false', got: '$WAF_ENABLED'"
VALIDATION_FAILED=true
else
echo "✅ waf_enabled: '$WAF_ENABLED' is valid"
fi

# Validate EXP (boolean)
EXP_ENABLED="${INPUT_EXP:-false}"
if [[ "$EXP_ENABLED" != "true" && "$EXP_ENABLED" != "false" ]]; then
echo "❌ ERROR: EXP must be 'true' or 'false', got: '$EXP_ENABLED'"
VALIDATION_FAILED=true
else
echo "✅ EXP: '$EXP_ENABLED' is valid"
fi

# Validate build_docker_image (boolean)
BUILD_DOCKER="${INPUT_BUILD_DOCKER_IMAGE:-false}"
if [[ "$BUILD_DOCKER" != "true" && "$BUILD_DOCKER" != "false" ]]; then
echo "❌ ERROR: build_docker_image must be 'true' or 'false', got: '$BUILD_DOCKER'"
VALIDATION_FAILED=true
else
echo "✅ build_docker_image: '$BUILD_DOCKER' is valid"
fi

# Validate cleanup_resources (boolean)
CLEANUP_RESOURCES="${INPUT_CLEANUP_RESOURCES:-false}"
if [[ "$CLEANUP_RESOURCES" != "true" && "$CLEANUP_RESOURCES" != "false" ]]; then
echo "❌ ERROR: cleanup_resources must be 'true' or 'false', got: '$CLEANUP_RESOURCES'"
VALIDATION_FAILED=true
else
echo "✅ cleanup_resources: '$CLEANUP_RESOURCES' is valid"
fi

# Validate run_e2e_tests (specific allowed values)
TEST_OPTION="${INPUT_RUN_E2E_TESTS:-GoldenPath-Testing}"
if [[ "$TEST_OPTION" != "GoldenPath-Testing" && "$TEST_OPTION" != "Smoke-Testing" && "$TEST_OPTION" != "None" ]]; then
echo "❌ ERROR: run_e2e_tests must be one of: GoldenPath-Testing, Smoke-Testing, None, got: '$TEST_OPTION'"
VALIDATION_FAILED=true
else
echo "✅ run_e2e_tests: '$TEST_OPTION' is valid"
fi

# Validate AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID (optional, Azure Resource ID format)
if [[ -n "$INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID" ]]; then
if [[ ! "$INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID" =~ ^/subscriptions/[a-fA-F0-9-]+/[Rr]esource[Gg]roups/[^/]+/providers/[Mm]icrosoft\.[Oo]perational[Ii]nsights/[Ww]orkspaces/[^/]+$ ]]; then
echo "❌ ERROR: AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID is invalid. Must be a valid Azure Resource ID format:"
echo " /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}"
echo " Got: '$INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID'"
VALIDATION_FAILED=true
else
echo "✅ AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: Valid Resource ID format"
fi
else
echo "✅ AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: Not provided (optional)"
fi

# Validate AZURE_EXISTING_AI_PROJECT_RESOURCE_ID (optional, Azure Resource ID format)
if [[ -n "$INPUT_AZURE_EXISTING_AI_PROJECT_RESOURCE_ID" ]]; then
if [[ ! "$INPUT_AZURE_EXISTING_AI_PROJECT_RESOURCE_ID" =~ ^/subscriptions/[a-fA-F0-9-]+/[Rr]esource[Gg]roups/[^/]+/providers/([Mm]icrosoft\.[Mm]achine[Ll]earning[Ss]ervices/([Ww]orkspaces|[Pp]rojects)/[^/]+|[Mm]icrosoft\.[Cc]ognitive[Ss]ervices/[Aa]ccounts/[^/]+/[Pp]rojects/[^/]+)$ ]]; then
echo "❌ ERROR: AZURE_EXISTING_AI_PROJECT_RESOURCE_ID is invalid. Must be a valid Azure Resource ID format:"
echo " /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{accountName}/projects/{projectName}"
echo " Got: '$INPUT_AZURE_EXISTING_AI_PROJECT_RESOURCE_ID'"
VALIDATION_FAILED=true
else
echo "✅ AZURE_EXISTING_AI_PROJECT_RESOURCE_ID: Valid Resource ID format"
fi
else
echo "✅ AZURE_EXISTING_AI_PROJECT_RESOURCE_ID: Not provided (optional)"
fi

# Validate existing_webapp_url (optional, must start with https)
if [[ -n "$INPUT_EXISTING_WEBAPP_URL" ]]; then
if [[ ! "$INPUT_EXISTING_WEBAPP_URL" =~ ^https:// ]]; then
echo "❌ ERROR: existing_webapp_url must start with 'https://', got: '$INPUT_EXISTING_WEBAPP_URL'"
VALIDATION_FAILED=true
else
echo "✅ existing_webapp_url: '$INPUT_EXISTING_WEBAPP_URL' is valid"
fi
else
echo "✅ existing_webapp_url: Not provided (will perform deployment)"
fi

# Fail workflow if any validation failed
if [[ "$VALIDATION_FAILED" == "true" ]]; then
echo ""
echo "❌ Parameter validation failed. Please correct the errors above and try again."
exit 1
fi

echo ""
echo "✅ All input parameters validated successfully!"

# Output validated values
echo "passed=true" >> $GITHUB_OUTPUT
echo "azure_location=$LOCATION" >> $GITHUB_OUTPUT
echo "resource_group_name=$INPUT_RESOURCE_GROUP_NAME" >> $GITHUB_OUTPUT
echo "waf_enabled=$WAF_ENABLED" >> $GITHUB_OUTPUT
echo "exp=$EXP_ENABLED" >> $GITHUB_OUTPUT
echo "build_docker_image=$BUILD_DOCKER" >> $GITHUB_OUTPUT
echo "cleanup_resources=$CLEANUP_RESOURCES" >> $GITHUB_OUTPUT
echo "run_e2e_tests=$TEST_OPTION" >> $GITHUB_OUTPUT
echo "azure_env_log_analytics_workspace_id=$INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID" >> $GITHUB_OUTPUT
echo "azure_existing_ai_project_resource_id=$INPUT_AZURE_EXISTING_AI_PROJECT_RESOURCE_ID" >> $GITHUB_OUTPUT
echo "existing_webapp_url=$INPUT_EXISTING_WEBAPP_URL" >> $GITHUB_OUTPUT

Run:
needs: validate-inputs
if: needs.validate-inputs.outputs.validation_passed == 'true'
uses: ./.github/workflows/deploy-orchestrator.yml
with:
runner_os: ubuntu-latest
azure_location: ${{ github.event.inputs.azure_location || 'australiaeast' }}
resource_group_name: ${{ github.event.inputs.resource_group_name || '' }}
waf_enabled: ${{ github.event.inputs.waf_enabled == 'true' }}
EXP: ${{ github.event.inputs.EXP == 'true' }}
build_docker_image: ${{ github.event.inputs.build_docker_image == 'true' }}
cleanup_resources: ${{ github.event.inputs.cleanup_resources == 'true' }}
run_e2e_tests: ${{ github.event.inputs.run_e2e_tests || 'GoldenPath-Testing' }}
AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: ${{ github.event.inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID || '' }}
AZURE_EXISTING_AI_PROJECT_RESOURCE_ID: ${{ github.event.inputs.AZURE_EXISTING_AI_PROJECT_RESOURCE_ID || '' }}
existing_webapp_url: ${{ github.event.inputs.existing_webapp_url || '' }}
azure_location: ${{ needs.validate-inputs.outputs.azure_location || 'australiaeast' }}
resource_group_name: ${{ needs.validate-inputs.outputs.resource_group_name || '' }}
waf_enabled: ${{ needs.validate-inputs.outputs.waf_enabled == 'true' }}
EXP: ${{ needs.validate-inputs.outputs.exp == 'true' }}
build_docker_image: ${{ needs.validate-inputs.outputs.build_docker_image == 'true' }}
cleanup_resources: ${{ needs.validate-inputs.outputs.cleanup_resources == 'true' }}
run_e2e_tests: ${{ needs.validate-inputs.outputs.run_e2e_tests || 'GoldenPath-Testing' }}
AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: ${{ needs.validate-inputs.outputs.azure_env_log_analytics_workspace_id || '' }}
AZURE_EXISTING_AI_PROJECT_RESOURCE_ID: ${{ needs.validate-inputs.outputs.azure_existing_ai_project_resource_id || '' }}
existing_webapp_url: ${{ needs.validate-inputs.outputs.existing_webapp_url || '' }}
trigger_type: ${{ github.event_name }}
secrets: inherit
Loading
Loading