# # Copyright (c) Microsoft Corporation. All rights reserved. # Licensed under the MIT license. # # run on CI or once per day at 8 pm PST trigger: - master schedules: - cron: "0 4 * * *" displayName: Daily Build branches: include: - master always: true pr: - master resources: - repo: self clean: true jobs: - job: Build pool: name: $(WindowsPipelineName) timeoutInMinutes: 60 variables: ArtifactOut: $(Build.ArtifactStagingDirectory)/Out/JavaScript steps: - bash: ./ci/check-git-head.sh displayName: Repository checks - task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0 displayName: Component Detection condition: > and(eq(variables['System.CollectionId'], '26f8e8b1-373f-4f65-96fc-d17a59b38306'), eq(variables['System.DefinitionId'], '198'), eq(variables['Build.SourceBranch'], 'refs/heads/master'), or(eq(variables['Build.Reason'], 'Schedule'), eq(variables['Build.Reason'], 'Manual'))) - bash: | npm ci ./ci/set-version.sh echo "COLLECTION_ID=$(System.CollectionId)" echo "DEFINITION_ID=$(System.DefinitionId)" echo "SDK version = $(SPEECHSDK_SEMVER2NOMETA)" env displayName: Install packages and set version from package.json - bash: | ./ci/update-version-in-code.sh displayName: Update version in source code - bash: | ./ci/update-package-version.sh displayName: Update version in package.json - bash: npm pack displayName: Build and pack SDK - bash: | set -u -e -o pipefail -x PACKAGE_BASE=microsoft-cognitiveservices-speech-sdk PACKAGE_NAME=$PACKAGE_BASE-$SPEECHSDK_SEMVER2NOMETA.tgz PACKAGE_IN=$PACKAGE_NAME PACKAGE_OUT="$(ArtifactOut)/npm" ZIP_OUT="$(ArtifactOut)/SpeechSDK-JavaScript-$SPEECHSDK_SEMVER2NOMETA" mkdir -p "$PACKAGE_OUT" "$ZIP_OUT" cp --preserve "$PACKAGE_IN" "$PACKAGE_OUT" echo SRI hash for microsoft.cognitiveservices.speech.sdk.bundle.js: sha512-"$(openssl dgst -sha512 -binary distrib/browser/microsoft.cognitiveservices.speech.sdk.bundle.js | openssl base64 -A)" cp --preserve LICENSE REDIST.txt NOTICE.txt distrib/browser/microsoft.cognitiveservices.speech.sdk.bundle.* distrib/browser/microsoft.cognitiveservices.speech.sdk.bundle-min.* distrib/browser/speech-processor.js "$ZIP_OUT" displayName: Create drop - task: ArchiveFiles@2 inputs: rootFolderOrFile: $(ArtifactOut)/SpeechSDK-JavaScript-$(SPEECHSDK_SEMVER2NOMETA) includeRootFolder: true archiveType: zip archiveFile: $(ArtifactOut)/SpeechSDK-JavaScript-$(SPEECHSDK_SEMVER2NOMETA).zip displayName: Create .zip - bash: rm -rf "$(ArtifactOut)/SpeechSDK-JavaScript-$(SPEECHSDK_SEMVER2NOMETA)" displayName: Remove temporary directory - task: PublishBuildArtifacts@1 displayName: Publish drop inputs: PathtoPublish: $(ArtifactOut) ArtifactName: JavaScript publishLocation: Container - bash: "echo '##vso[task.setvariable variable=SPEECHSDK_RUN_TESTS]false'" condition: or(failed(), canceled()) displayName: Skip tests on build failure - job : RunTest pool: name: $(WindowsPipelineName) timeoutInMinutes: 60 condition: eq(variables['SPEECHSDK_RUN_TESTS'], 'true') variables: SPEECHSDK_RUN_TESTS: true dependsOn: Build steps: - bash: ./ci/check-git-head.sh displayName: Repository checks - bash: | npm ci ./ci/set-version.sh echo "COLLECTION_ID=$(System.CollectionId)" echo "DEFINITION_ID=$(System.DefinitionId)" echo "SDK version = $(SPEECHSDK_SEMVER2NOMETA)" displayName: Install packages and set version from package.json - bash: | ./ci/update-version-in-code.sh displayName: Update version in source code - template: generate-subscription-file.yml - bash: | set -u -e -x -o pipefail npm run test:non-connection displayName: Run tests condition: eq(variables['SPEECHSDK_RUN_TESTS'], 'true') - task: PublishTestResults@2 displayName: Publish test results inputs: testRunner: JUnit testResultsFiles: 'test-javascript-junit.xml' failTaskOnFailedTests: true condition: eq(variables['SPEECHSDK_RUN_TESTS'], 'true') - task: DownloadBuildArtifacts@1 displayName: Download artifacts inputs: buildType: current downloadPath: $(Pipeline.Workspace) artifactName: JavaScript - bash: | set -e cd tests/packaging echo "SDK version = $SPEECHSDK_SEMVER2NOMETA" npm ci PACKAGE_PATH="$(Pipeline.Workspace)/JavaScript/npm/microsoft-cognitiveservices-speech-sdk-$SPEECHSDK_SEMVER2NOMETA.tgz" # Convert Windows path to proper format PACKAGE_PATH=$(echo $PACKAGE_PATH | sed 's/\\/\//g') npm install "$PACKAGE_PATH" npm run bundle displayName: Run Test Bundle condition: eq(variables['SPEECHSDK_RUN_TESTS'], 'true') - job: RunConnectionTests dependsOn: Build pool: name: CarbonUbuntu2204Hosted timeoutInMinutes: 60 condition: eq(variables['SPEECHSDK_RUN_TESTS'], 'true') variables: SPEECHSDK_RUN_TESTS: true steps: - bash: ./ci/check-git-head.sh displayName: Repository checks - bash: | npm ci ./ci/set-version.sh echo "COLLECTION_ID=$(System.CollectionId)" echo "DEFINITION_ID=$(System.DefinitionId)" echo "SDK version = $SPEECHSDK_SEMVER2NOMETA" displayName: Install packages and set version from package.json - bash: | ./ci/update-version-in-code.sh displayName: Update version in source code - template: generate-subscription-file.yml - bash: | # Define new Docker data directory NEW_DOCKER_DIR="/mnt/docker" # Stop Docker service echo "Stopping Docker service..." sudo systemctl stop docker # Create new Docker directory echo "Creating new Docker directory at $NEW_DOCKER_DIR..." sudo mkdir -p "$NEW_DOCKER_DIR" # Update Docker daemon configuration echo "Updating Docker daemon configuration..." DOCKER_CONFIG_FILE="/etc/docker/daemon.json" sudo touch "$DOCKER_CONFIG_FILE" sudo chmod 666 "$DOCKER_CONFIG_FILE" # Temporarily change permissions to write cat < tts_container.log ls -l tts_container.log docker logs sr_container > sr_container.log ls -l tts_container.log docker logs lid_container > lid_container.log ls -l tts_container.log docker rm tts_container docker rm sr_container docker rm lid_container DOCKER_LOG_DIR=$(Build.ArtifactStagingDirectory)/DockerLogs mkdir -p $DOCKER_LOG_DIR # Copy logs to the artifacts directory cp tts_container.log $DOCKER_LOG_DIR/tts_container.log cp sr_container.log $DOCKER_LOG_DIR/sr_container.log cp lid_container.log $DOCKER_LOG_DIR/lid_container.log displayName: Stop Containers and export logs condition: and(succeededOrFailed(), eq(variables['SPEECHSDK_RUN_TESTS'], 'true')) - task: ArchiveFiles@2 displayName: Archive Docker container logs inputs: rootFolderOrFile: '$(Build.ArtifactStagingDirectory)/DockerLogs' includeRootFolder: false archiveFile: '*.*' replaceExistingArchive: false condition: and(succeededOrFailed(), eq(variables['SPEECHSDK_RUN_TESTS'], 'true')) - task: PublishBuildArtifacts@1 retryCountOnTaskFailure: 5 inputs: PathtoPublish: '$(Build.ArtifactStagingDirectory)/DockerLogs' ArtifactName: TestRunBackup condition: and(succeededOrFailed(), eq(variables['SPEECHSDK_RUN_TESTS'], 'true')) displayName: Publish Docker logs