Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/main' into feature/telemetry
Browse files Browse the repository at this point in the history
  • Loading branch information
ralph-msft committed Feb 13, 2024
2 parents 94b74fe + 41c30dd commit fff5077
Show file tree
Hide file tree
Showing 49 changed files with 90,759 additions and 172 deletions.
222 changes: 85 additions & 137 deletions .azure/pipelines/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -39,14 +39,12 @@ stages:
- stage: SetupStage
jobs:
- job: SetupJob
variables:
buildYear: $[format('{0:yyyy}', pipeline.startTime)]
steps:
- task: Bash@3
name: Variables
inputs:
filePath: ./.azure/pipelines/scripts/set-variables.sh
arguments: '0.0.0-dev$(buildYear).$(Build.BuildId)'
arguments: '$(PublishDevBuild) $(Build.BuildNumber) $(Build.BuildId)'
displayName: 'Set up environment variables'

- stage: BuildStage
Expand Down Expand Up @@ -96,11 +94,12 @@ stages:
inputs:
filePath: ./scripts/InstallAzureAICLIDeb-UpdateVersion.sh
arguments: '$(AICLIVersion) $(Build.StagingDirectory)'
- task: PublishPipelineArtifact@1
- task: PublishBuildArtifacts@1
displayName: Publish artifacts
inputs:
pathToPublish: '$(Build.ArtifactStagingDirectory)'
targetPath: '$(Build.StagingDirectory)'
artifact: 'ai-cli-artifacts'
artifactName: 'ai-cli-artifacts'

- job: Publish
dependsOn: [Build]
Expand Down Expand Up @@ -217,6 +216,66 @@ stages:
docker tag acrbn.azurecr.io/azure-ai-cli:bookworm-$(AICLIVersion) acrbn.azurecr.io/azure-ai-cli:latest
docker push acrbn.azurecr.io/azure-ai-cli:latest
- stage: BuildInstallerStage
dependsOn: SetupStage
condition: and(succeeded(), or(eq(variables['IsRelease'], 'true'), eq(variables['PublishDevBuild'], 'true')))
pool:
name: SkymanWS2022Compliant
jobs:
- job: BuildWindowsInstaller
variables:
AICLIVersion: $[ stageDependencies.SetupStage.SetupJob.outputs['Variables.AICLIVersion']]
AICLISemVerVersion: $[ stageDependencies.SetupStage.SetupJob.outputs['Variables.AICLISemVerVersion']]
steps:
- script: call WixBuildInstaller.cmd $(AICLIVersion) $(AICLISemVerVersion)
workingDirectory: $(Build.SourcesDirectory)/scripts
failOnStderr: true
displayName: Build installation package bundle

- script: call WixRunInsignia.cmd detach x64 $(AICLIVersion)
workingDirectory: $(Build.SourcesDirectory)/scripts
failOnStderr: true
displayName: Detach bundle bootstrap engine

- template: sign-dll-exe.yaml
parameters:
displayName: Sign bundle bootstrap engine
folderPath: '$(Build.SourcesDirectory)/scripts'
pattern: 'engine-*.exe'

- script: call WixRunInsignia.cmd attach x64 $(AICLIVersion)
workingDirectory: $(Build.SourcesDirectory)/scripts
failOnStderr: true
displayName: Re-attach bootstrap bundle engine

- template: sign-dll-exe.yaml
parameters:
displayName: Sign installer
folderPath: '$(Build.SourcesDirectory)/scripts'
pattern: 'Azure-AI-CLI-Setup-*.exe'

- task: CopyFiles@2
inputs:
sourceFolder: '$(Build.SourcesDirectory)/scripts'
contents: 'Azure-AI-CLI-Setup-*.exe'
targetFolder: '$(Build.ArtifactStagingDirectory)'
displayName: Copy files

- task: PublishBuildArtifacts@1
inputs:
pathToPublish: '$(Build.ArtifactStagingDirectory)'
targetPath: '$(Build.StagingDirectory)'
artifactName: 'ai-cli-artifacts'
displayName: Publish artifacts

- task: AzureCLI@2
inputs:
azureSubscription: 'Carbon Dropper (CSSpeechStorage Drop)'
scriptType: 'bash'
arguments: '$(Build.ArtifactStagingDirectory)/Azure-AI-CLI-Setup-$(AICLIVersion)-x64.exe private/ai/Azure-AI-CLI-Setup-$(AICLIVersion)-x64.exe'
scriptPath: './.azure/pipelines/scripts/upload-file.sh'
displayName: Upload Windows installer

- stage: TestStage
dependsOn: [SetupStage, BuildStage]
condition: and(succeeded(), or(eq(variables['IsRelease'], 'true'), eq(variables['TestDevBuild'], 'true')))
Expand All @@ -231,145 +290,34 @@ stages:
TestFilter: 'cli=ai&tag!=skip'
TestResultsPath: '$(Build.SourcesDirectory)/testresults'
TestRunTitle: 'Azure AI CLI $(AICLIVersion) ($(BuildConfiguration)-$(Build.BuildNumber))'
TestRunTrxFileName: '$(TestResultsPath)/ai-cli-test-results-$(BuildConfiguration)-$(Build.BuildNumber).trx'
TestRunTrxFileName: '$(TestResultsPath)/ai-cli-test-results-$(BuildConfiguration)-$(Build.BuildNumber)'
TestBackupArtifactFile: '$(Build.ArtifactStagingDirectory)/ai-cli-test-run-backup-artifact-$(BuildConfiguration)-$(Build.BuildNumber).zip'
jobs:
- job: TestJob
steps:
- template: test_setup.yaml
- template: docker_proxy_setup.yaml

# -----------------------------------------------------------------------------
# Download the ai CLI artifacts
# -----------------------------------------------------------------------------
- task: DownloadPipelineArtifact@2
displayName: Download ai-cli-artifacts
inputs:
artifact: 'ai-cli-artifacts'
targetPath: '$(Build.ArtifactStagingDirectory)/ai-cli-artifacts'
- task: CopyFiles@2
displayName: Copy downloaded ai-cli-artifacts
inputs:
Contents: '**/*'
SourceFolder: $(Build.ArtifactStagingDirectory)/ai-cli-artifacts
TargetFolder: $(TargetFolder)
FlattenFolders: true
- task: Bash@3
displayName: List files...
inputs:
targetType: 'inline'
script: |
echo listing for $(System.DefaultWorkingDirectory)
ls -la $(System.DefaultWorkingDirectory)
echo listing for $(Build.ArtifactStagingDirectory)
ls -la $(Build.ArtifactStagingDirectory)
# -----------------------------------------------------------------------------
# Install the ai CLI
# -----------------------------------------------------------------------------
- task: DotNetCoreCLI@2
displayName: INSTALL AI - Installing ai CLI via `dotnet tool install`
inputs:
includeNuGetOrg: false
command: custom
custom: tool
version: '8.0.x'
arguments: install
--ignore-failed-sources
--add-source "$(System.DefaultWorkingDirectory)"
--global Azure.AI.CLI
--version "$(AICLIVersion)"

# -----------------------------------------------------------------------------
# Finish job prep (mkdir, config cli)
# -----------------------------------------------------------------------------
- bash: |
env | sort
which dotnet
dotnet --version
echo "TestResultsPath: $(TestResultsPath)"
mkdir $(TestResultsPath)
echo "LocalInputPath: $(LocalInputPath)"
ls -la $(LocalInputPath)
ai config system --set input.path $(LocalInputPath)
ai config --find
echo "DefaultWorkingDirectory: $(System.DefaultWorkingDirectory)"
ls -la $(System.DefaultWorkingDirectory)
displayName: Finish job prep (mkdir, config cli)
workingDirectory: '$(System.DefaultWorkingDirectory)'
- template: test_execute_and_report.yaml
parameters:
test_adapter_name: Azure.AI.CLI.RecordedTestAdapter
TestFilter: $(TestFilter)
envToSet: 'TEST_MODE=Playback;REQUESTS_CA_BUNDLE=/ca/ca.crt'

# -----------------------------------------------------------------------------
# Build the YamlTestAdapter
# -----------------------------------------------------------------------------
- task: NuGetAuthenticate@1
- task: DotNetCoreCLI@2
displayName: Build YamlTestAdapter
inputs:
includeNuGetOrg: false
command: build
version: '8.0.x'
projects: '**/testadapter/YamlTestAdapter.csproj'
arguments:
-c $(BuildConfiguration)
/p:Platform=x64
/p:LocalBinOutputPath="$(LocalBinOutputPath)"

# -----------------------------------------------------------------------------
# Run the tests
# -----------------------------------------------------------------------------
- task: AzureCLI@2
displayName: Run ai-cli tests
continueOnError: true
inputs:
azureSubscription: 'AI_CLI_TestAdapter'
scriptType: 'bash'
scriptLocation: 'inlineScript'
inlineScript: |
az --version
az account show
cd $(TestResultsPath)
echo dotnet test --logger trx --results-directory "$(Agent.TempDirectory)" --logger:"trx;LogFileName=$(TestRunTrxFileName)" --logger:"console;verbosity=normal" --filter "$(TestFilter)" "$(LocalBinOutputPath)/$(BuildConfiguration)/net8.0/Azure.AI.CLI.TestAdapter.dll"
dotnet test --logger trx --results-directory "$(Agent.TempDirectory)" --logger:"trx;LogFileName=$(TestRunTrxFileName)" --logger:"console;verbosity=normal" --filter "$(TestFilter)" "$(LocalBinOutputPath)/$(BuildConfiguration)/net8.0/Azure.AI.CLI.TestAdapter.dll"
# -----------------------------------------------------------------------------
# Archive and publish the test run backup artifact
# -----------------------------------------------------------------------------
- task: ArchiveFiles@2
displayName: Archive ai-cli-test run backup artifact (build/bin)
continueOnError: true
inputs:
rootFolderOrFile: '$(LocalBinOutputPath)'
includeRootFolder: false
archiveFile: '$(TestBackupArtifactFile)'
replaceExistingArchive: false

- task: ArchiveFiles@2
displayName: Archive ai-cli-test run backup artifact (testresults)
continueOnError: true
inputs:
rootFolderOrFile: '$(TestResultsPath)'
includeRootFolder: false
archiveFile: '$(TestBackupArtifactFile)'
replaceExistingArchive: false

- task: PublishBuildArtifacts@1
displayName: Publish ai-cli-test run backup artifact
continueOnError: true
retryCountOnTaskFailure: 5
inputs:
parallel: true
pathToPublish: '$(TestBackupArtifactFile)'
artifactName: TestRunBackup

# -----------------------------------------------------------------------------
# Publish the test results
# -----------------------------------------------------------------------------
- task: PublishTestResults@2
displayName: Publish ai-cli test results
inputs:
testRunner: VSTest
testResultsFiles: '$(TestRunTrxFileName)'
testRunTitle: '$(TestRunTitle)'
failTaskOnFailedTests: true
- script: |
docker logs nginx
docker stop nginx
docker rm nginx
docker logs test-proxy
docker stop test-proxy
docker rm test-proxy
displayName: Stop nginx-recording-test-proxy locally
- template: test_execute_and_report.yaml
parameters:
test_adapter_name: Azure.AI.CLI.TestAdapter
TestFilter: $(TestFilter)&tag!=recordable

- stage: ManualApproval
dependsOn: [SetupStage, BuildStage, TestStage]
condition: and(succeeded(), or(eq(stageDependencies.SetupStage.outputs['SetupJob.Variables.IsRelease'], 'true'), eq(variables['PublishDevBuild'], 'true')))
Expand Down
36 changes: 36 additions & 0 deletions .azure/pipelines/docker_proxy_setup.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
steps:
- task: docker@2
displayName: Login to acrbn acr
inputs:
command: login
containerRegistry: 'acrbn-acr'
- task: docker@2
displayName: Build nginx-recording-test-proxy locally
inputs:
command: build
repository: nginx-recording-test-proxy-dev
dockerfile: 'tests/recordproxy/Dockerfile'
containerRegistry: 'acrbn-acr'
- bash: |
docker images
host_ip=$(ip -4 addr show docker0 | grep -Po 'inet \K[\d.]+')
echo "Host IP: $host_ip"
HOST_URL="http://$host_ip:5000"
echo "Host URL: $HOST_URL"
mkdir /logs
docker create -p 5004:5004 --name nginx -v ./logs:/logs -e TEST_PROXY_URL="$HOST_URL" acrbn.azurecr.io/nginx-recording-test-proxy-dev:$(Build.BuildId)
docker start nginx
docker create -p 5001:5001 -p 5000:5000 -v ./tests/recordings:/srv/testproxy --name test-proxy azsdkengsys.azurecr.io/engsys/test-proxy:latest
docker start test-proxy
docker ps
displayName: Run nginx-recording-test-proxy locally
- bash: |
sudo mkdir /ca
sudo chmod 777 /ca
sudo curl -v http://localhost:5004/ca.crt > /ca/ca.crt
sudo mkdir /usr/local/share/ca-certificates/extra
sudo cp /ca/ca.crt /usr/local/share/ca-certificates/extra/ca.crt
sudo dpkg-reconfigure ca-certificates
sudo update-ca-certificates
displayName: Install nginx-recording-test-proxy certificate
Loading

0 comments on commit fff5077

Please sign in to comment.