Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
edd5e4e
fix issues with git in container
sbaidachni Feb 19, 2025
6f00218
Adding PR Comment with results of evaluation. (#89)
msa2984 Feb 24, 2025
512623c
jq is a part of container
sbaidachni Mar 1, 2025
f706fa4
adding initial telemetry
sbaidachni May 23, 2025
cca4b70
fix upload_data on Windows
sbaidachni Jan 27, 2026
0562d3d
bump library version
sbaidachni Jan 27, 2026
20a1d1b
switching to cli for deployment
sbaidachni Jan 27, 2026
2479688
switch to function auth (can be enabled with AAD at the same time)
sbaidachni Jan 27, 2026
cabea9f
switch to managed identity
sbaidachni Jan 28, 2026
1603d35
better retry logic
sbaidachni Jan 29, 2026
4406995
fix evaluation (latest sdk notation)
sbaidachni Jan 29, 2026
e4eb3a2
Merge branch 'development' into sbaidachni/docker_docs
sbaidachni Jan 29, 2026
7013c50
test login
sbaidachni Jan 29, 2026
e300c01
Merge branch 'sbaidachni/docker_docs' of https://github.com/microsoft…
sbaidachni Jan 29, 2026
8fd606f
separate identities
sbaidachni Jan 29, 2026
4656d6e
updating dependencies
sbaidachni Jan 29, 2026
07840cd
fix requirements
sbaidachni Jan 29, 2026
cf71b9c
one more fix
sbaidachni Jan 29, 2026
063306b
relaxing requirements
sbaidachni Jan 29, 2026
2cd04dc
spliting run
sbaidachni Jan 29, 2026
02acc02
switching to ms image
sbaidachni Jan 29, 2026
d902c78
switch to non0interactive mode
sbaidachni Jan 29, 2026
c9fcce2
switched to simpler image
sbaidachni Jan 29, 2026
0faf626
removed ml extension
sbaidachni Jan 29, 2026
1c5748f
install cli using pip
sbaidachni Jan 29, 2026
a3fff18
function name intro
sbaidachni Jan 30, 2026
3759e35
fix typo
sbaidachni Jan 30, 2026
46dcca2
smaller dataset
sbaidachni Jan 30, 2026
53a2e8d
image as variable
sbaidachni Jan 30, 2026
9164766
more container fixes
sbaidachni Jan 30, 2026
0e9be7d
telemetry completion
sbaidachni Jan 30, 2026
6b700da
testing acr tokens
sbaidachni Jan 30, 2026
1a30d1d
typo
sbaidachni Jan 30, 2026
be96ff5
testing acr 2
sbaidachni Jan 30, 2026
01c2c74
test 3
sbaidachni Jan 30, 2026
a4b428b
typo
sbaidachni Jan 30, 2026
188a3a4
revert code to password based
sbaidachni Jan 30, 2026
84e80c3
Initial plan
Copilot Mar 2, 2026
55689f0
Update documentation to reflect code changes in PR
Copilot Mar 2, 2026
640f9fc
Update docs folder to reflect code changes in PR
Copilot Mar 2, 2026
596efd8
Extend README with container workflow, dual client IDs, and deploymen…
Copilot Mar 2, 2026
272602c
Fix container isolation explanation and FEDERATED_CLIENT_ID descripti…
Copilot Mar 2, 2026
3c9256d
Merge pull request #91 from microsoft/copilot/sub-pr-87
sbaidachni Mar 2, 2026
5d9ad33
Initial plan
Copilot Mar 2, 2026
5b8b385
Initial plan
Copilot Mar 2, 2026
fa4bcf2
Initial plan
Copilot Mar 2, 2026
b8ccb22
Initial plan
Copilot Mar 2, 2026
f895e7b
Initial plan
Copilot Mar 2, 2026
1eb3453
Fix subprocess.run: remove shell=True when using list args
Copilot Mar 2, 2026
89ed195
Fix subprocess.run: remove shell=True when using list-form args
Copilot Mar 2, 2026
7e11d7d
Remove misleading requests.exceptions.RequestException handlers from …
Copilot Mar 2, 2026
e70dc8b
Merge pull request #92 from microsoft/copilot/sub-pr-87-again
sbaidachni Mar 2, 2026
4d20a1f
Restore targeted retry predicate and fix misleading log message
Copilot Mar 2, 2026
0340ef5
Merge pull request #94 from microsoft/copilot/sub-pr-87-yet-again
sbaidachni Mar 2, 2026
06f817e
Pin dependencies in custom_skills requirements.txt and fix shell=True…
Copilot Mar 2, 2026
64f480c
Merge pull request #93 from microsoft/copilot/sub-pr-87-another-one
sbaidachni Mar 2, 2026
0fad35e
Merge pull request #95 from microsoft/copilot/sub-pr-87-one-more-time
sbaidachni Mar 2, 2026
4643fb2
Merge pull request #96 from microsoft/copilot/sub-pr-87-please-work
sbaidachni Mar 2, 2026
004fb80
Initial plan
Copilot Mar 2, 2026
a3fd0d3
Fix E501 linting error: split long TRANSIENT_OPENAI_ERRORS line
Copilot Mar 2, 2026
6338324
Merge pull request #97 from microsoft/copilot/sub-pr-87-29d509a7-0242…
sbaidachni Mar 2, 2026
0b9d6d1
Initial plan
Copilot Mar 2, 2026
e22e3e4
Add FileNotFoundError handling for missing az CLI in deploy functions
Copilot Mar 2, 2026
a9da77b
Merge pull request #99 from microsoft/copilot/sub-pr-87-0b6f0cd3-ace1…
sbaidachni Mar 2, 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
47 changes: 17 additions & 30 deletions .buildcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,42 +1,29 @@
FROM ubuntu:22.04
FROM mcr.microsoft.com/devcontainers/python:3.12

ARG USERNAME=vscode

USER root

RUN apt-get update -y && apt-get install -y sudo wget gnupg software-properties-common curl bash && \
# Download and install Miniconda
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O /tmp/miniconda.sh && \
bash /tmp/miniconda.sh -b -p /opt/miniconda && \
rm /tmp/miniconda.sh && \
# Create a non-root user
useradd -m -s /bin/bash $USERNAME && \
echo "$USERNAME ALL=(root) NOPASSWD:ALL" > /etc/sudoers.d/$USERNAME && \
chmod 0440 /etc/sudoers.d/$USERNAME && \
# Change ownership of Miniconda to the non-root user
chown -R $USERNAME:$USERNAME /opt/miniconda

ENV PATH=/opt/miniconda/bin:$PATH

# Install dependencies
WORKDIR /home/$USERNAME

# Install Azure CLI
RUN sudo apt-get update && sudo apt-get install -y gnupg software-properties-common curl && \
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash && \
az config set extension.use_dynamic_install=yes_without_prompt && \
az extension add -n ml
RUN pip install azure-cli && \
az config set extension.use_dynamic_install=yes_without_prompt

# Setup User
USER $USERNAME
WORKDIR /home/$USERNAME

COPY requirements.txt .

# Create Conda environment and install Python dependencies
RUN conda create -n llm-env python=3.12 pip=23.2 -q -y && \
conda run -n llm-env pip install -r requirements.txt && \
conda clean -a -y && \
conda run -n llm-env pip list
# Create virtual environment and install dependencies
# We use a venv named 'llm-env' to maintain consistency with previous conda setup
RUN python -m venv llm-env && \
/home/$USERNAME/llm-env/bin/pip install --upgrade pip setuptools wheel && \
/home/$USERNAME/llm-env/bin/pip install -r requirements.txt

RUN echo "conda activate llm-env" >> /home/$USERNAME/.bashrc
# Configure shell to use the environment
RUN echo "source /home/$USERNAME/llm-env/bin/activate" >> /home/$USERNAME/.bashrc

ENV PATH=/opt/miniconda/envs/llm-env/bin:$PATH
# Add venv to PATH
ENV PATH="/home/$USERNAME/llm-env/bin:$PATH"

CMD ["conda", "run", "-n", "llm-env", "python", "--version"]
CMD ["python", "--version"]
3 changes: 2 additions & 1 deletion .env.sample
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ RESOURCE_GROUP_NAME=
STORAGE_ACCOUNT_NAME=
ACS_SERVICE_NAME=
AOAI_BASE_ENDPOINT=
AI_STUDIO_PROJECT_NAME=
AI_FOUNDRY_PROJECT_URI="https://${AI_FOUNDRY_NAME}.services.ai.azure.com/api/projects/${PROJECT_NAME}"
MANAGED_IDENTITY_CLIENT_ID=
MANAGED_IDENTITY_NAME=
FUNCTION_APP_NAME=
8 changes: 5 additions & 3 deletions .github/workflows/ai_pull_ci_workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,12 @@ env:
STORAGE_ACCOUNT_NAME: ${{ vars.STORAGE_ACCOUNT_NAME }}
ACS_SERVICE_NAME: ${{ vars.ACS_SERVICE_NAME }}
AOAI_BASE_ENDPOINT: ${{ vars.AOAI_BASE_ENDPOINT }}
AI_STUDIO_PROJECT_NAME: ${{ vars.AI_STUDIO_PROJECT_NAME }}
AI_FOUNDRY_PROJECT_URI: ${{ vars.AI_FOUNDRY_PROJECT_URI }}
MANAGED_IDENTITY_CLIENT_ID: ${{ vars.MANAGED_IDENTITY_CLIENT_ID }}
MANAGED_IDENTITY_NAME: ${{ vars.MANAGED_IDENTITY_NAME }}
MANAGED_IDENTITY_TENANT_ID: ${{ vars.MANAGED_IDENTITY_TENANT_ID }}
FEDERATED_CLIENT_ID: ${{ vars.FEDERATED_CLIENT_ID }}
FUNCTION_APP_NAME: ${{ vars.FUNCTION_APP_NAME }}

permissions:
id-token: write
Expand All @@ -27,7 +29,7 @@ jobs:
name: Deployment and Evaluation
runs-on: ubuntu-latest
container:
image: aipullacr.azurecr.io/devops_container_image:latest
image: ${{ vars.ACR_CONTAINER_REGISTRY }}.azurecr.io/${{ vars.IMAGE_NAME }}:latest
options: --user root
credentials:
username: ${{ secrets.ACR_USERNAME }}
Expand All @@ -39,7 +41,7 @@ jobs:
- name: Azure login
uses: azure/login@v2
with:
client-id: ${{ env.MANAGED_IDENTITY_CLIENT_ID }}
client-id: ${{ env.FEDERATED_CLIENT_ID }}
tenant-id: ${{ env.MANAGED_IDENTITY_TENANT_ID}}
subscription-id: ${{ env.SUBSCRIPTION_ID }}

Expand Down
18 changes: 10 additions & 8 deletions .github/workflows/ai_pull_pr_workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,12 @@ env:
STORAGE_ACCOUNT_NAME: ${{ vars.STORAGE_ACCOUNT_NAME }}
ACS_SERVICE_NAME: ${{ vars.ACS_SERVICE_NAME }}
AOAI_BASE_ENDPOINT: ${{ vars.AOAI_BASE_ENDPOINT }}
AI_STUDIO_PROJECT_NAME: ${{ vars.AI_STUDIO_PROJECT_NAME }}
AI_FOUNDRY_PROJECT_URI: ${{ vars.AI_FOUNDRY_PROJECT_URI }}
MANAGED_IDENTITY_CLIENT_ID: ${{ vars.MANAGED_IDENTITY_CLIENT_ID }}
MANAGED_IDENTITY_NAME: ${{ vars.MANAGED_IDENTITY_NAME }}
MANAGED_IDENTITY_TENANT_ID: ${{ vars.MANAGED_IDENTITY_TENANT_ID }}
FEDERATED_CLIENT_ID: ${{ vars.FEDERATED_CLIENT_ID }}
FUNCTION_APP_NAME: ${{ vars.FUNCTION_APP_NAME }}

permissions:
id-token: write
Expand All @@ -32,49 +34,49 @@ jobs:
deploy-and-evaluate:
name: Deployment and Evaluation
runs-on: ubuntu-latest
needs: build-validation
container:
image: aipullacr.azurecr.io/devops_container_image:latest
image: ${{ vars.ACR_CONTAINER_REGISTRY }}.azurecr.io/${{ vars.IMAGE_NAME }}:latest
options: --user root
credentials:
username: ${{ secrets.ACR_USERNAME }}
password: ${{ secrets.ACR_PASSWORD }}
needs: build-validation
steps:
- name: Checkout Actions
uses: actions/checkout@v1

- name: Azure login
uses: azure/login@v2
with:
client-id: ${{ env.MANAGED_IDENTITY_CLIENT_ID }}
client-id: ${{ env.FEDERATED_CLIENT_ID }}
tenant-id: ${{ env.MANAGED_IDENTITY_TENANT_ID}}
subscription-id: ${{ env.SUBSCRIPTION_ID }}

- name: Execute Azure Functions Deployment
shell: bash
run: |
python -u -m mlops.deployment_scripts.deploy_azure_functions
python -u -m mlops.deployment_scripts.deploy_azure_functions --ignore_slot
env:
BUILD_SOURCEBRANCHNAME: ${{ github.head_ref || github.ref_name }}

- name: Validate Azure Functions Deployment
shell: bash
run: |
python -u -m mlops.deployment_scripts.run_functions
python -u -m mlops.deployment_scripts.run_functions --ignore_slot
env:
BUILD_SOURCEBRANCHNAME: ${{ github.head_ref || github.ref_name }}

- name: Deploy Indexer
shell: bash
run: |
python -u -m mlops.deployment_scripts.build_indexer
python -u -m mlops.deployment_scripts.build_indexer --ignore_slot
env:
BUILD_SOURCEBRANCHNAME: ${{ github.head_ref || github.ref_name }}

- name: Execute search evaluation
shell: bash
run: |
python -u -m mlops.evaluation.search_evaluation --gt_path "./mlops/evaluation/data/search_evaluation_data.jsonl" --semantic_config my-semantic-config
python -u -m mlops.evaluation.search_evaluation --gt_path "./mlops/evaluation/data/search_evaluation_data_sample.jsonl" --semantic_config my-semantic-config
env:
BUILD_SOURCEBRANCHNAME: ${{ github.head_ref || github.ref_name }}

Expand Down
9 changes: 5 additions & 4 deletions .github/workflows/build_devops_container.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,14 @@ on:
- 'development'
paths:
- '.github/workflows/build_devops_container.yml'
- 'requirements.txt'
- 'requirements.txt'
- '.buildcontainer/Dockerfile'

env:
IMAGE_NAME: devops_container_image
IMAGE_NAME: ${{ vars.IMAGE_NAME }}
SUBSCRIPTION_ID: ${{ vars.SUBSCRIPTION_ID }}
RESOURCE_GROUP_NAME: ${{ vars.RESOURCE_GROUP_NAME }}
MANAGED_IDENTITY_CLIENT_ID: ${{ vars.MANAGED_IDENTITY_CLIENT_ID }}
FEDERATED_CLIENT_ID: ${{ vars.FEDERATED_CLIENT_ID }}
MANAGED_IDENTITY_TENANT_ID: ${{ vars.MANAGED_IDENTITY_TENANT_ID }}
ACR_CONTAINER_REGISTRY: ${{ vars.ACR_CONTAINER_REGISTRY }}

Expand All @@ -34,7 +35,7 @@ jobs:
- name: Azure login
uses: azure/login@v2
with:
client-id: ${{ env.MANAGED_IDENTITY_CLIENT_ID }}
client-id: ${{ env.FEDERATED_CLIENT_ID }}
tenant-id: ${{ env.MANAGED_IDENTITY_TENANT_ID}}
subscription-id: ${{ env.SUBSCRIPTION_ID }}

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build_validation_workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
run-unit-tests:
runs-on: ubuntu-latest
container:
image: aipullacr.azurecr.io/devops_container_image:latest
image: ${{ vars.ACR_CONTAINER_REGISTRY }}.azurecr.io/${{ vars.IMAGE_NAME }}:latest
options: --user root
credentials:
username: ${{ secrets.ACR_USERNAME }}
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/data_initialization_workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ env:
SUBSCRIPTION_ID: ${{ vars.SUBSCRIPTION_ID }}
RESOURCE_GROUP_NAME: ${{ vars.RESOURCE_GROUP_NAME }}
STORAGE_ACCOUNT_NAME: ${{ vars.STORAGE_ACCOUNT_NAME }}
MANAGED_IDENTITY_CLIENT_ID: ${{ vars.MANAGED_IDENTITY_CLIENT_ID }}
FEDERATED_CLIENT_ID: ${{ vars.FEDERATED_CLIENT_ID }}
MANAGED_IDENTITY_TENANT_ID: ${{ vars.MANAGED_IDENTITY_TENANT_ID }}

permissions:
Expand All @@ -20,7 +20,7 @@ jobs:
upload-data:
runs-on: ubuntu-latest
container:
image: aipullacr.azurecr.io/devops_container_image:latest
image: ${{ vars.ACR_CONTAINER_REGISTRY }}.azurecr.io/${{ vars.IMAGE_NAME }}:latest
options: --user root
credentials:
username: ${{ secrets.ACR_USERNAME }}
Expand All @@ -32,7 +32,7 @@ jobs:
- name: Azure login
uses: azure/login@v2
with:
client-id: ${{ env.MANAGED_IDENTITY_CLIENT_ID }}
client-id: ${{ env.FEDERATED_CLIENT_ID }}
tenant-id: ${{ env.MANAGED_IDENTITY_TENANT_ID}}
subscription-id: ${{ env.SUBSCRIPTION_ID }}

Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -417,3 +417,5 @@ local.settings.json

# Other
.DS_Store

results
Loading
Loading