Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
143 changes: 65 additions & 78 deletions build/bf-cli-build-test-steps.yml
Original file line number Diff line number Diff line change
@@ -1,93 +1,80 @@
steps:
- bash: |
short_hash=`git rev-parse --short=7 HEAD` ## At least 7 digits, more if needed for uniqueness
echo "Full git hash: $(Build.SourceVersion)"
echo "Short git hash: $short_hash"
echo "##vso[task.setvariable variable=short_hash]$short_hash" ## Store variable for subsequent steps
workingDirectory: $(Build.SourcesDirectory)
displayName: Get commit number
- bash: |
short_hash=`git rev-parse --short=7 HEAD` ## At least 7 digits, more if needed for uniqueness
echo "Full git hash: $(Build.SourceVersion)"
echo "Short git hash: $short_hash"
echo "##vso[task.setvariable variable=short_hash]$short_hash" ## Store variable for subsequent steps
workingDirectory: $(Build.SourcesDirectory)
displayName: Get commit number

- powershell: |
$date = (Get-Date).ToString("yyyyMMdd")
echo "##vso[task.setvariable variable=buildDate]$date" ## Store variable for subsequent steps
displayName: Get formatted date
- powershell: |
$date = (Get-Date).ToString("yyyyMMdd")
echo "##vso[task.setvariable variable=buildDate]$date" ## Store variable for subsequent steps
displayName: Get formatted date

- bash: |
version=`echo "$(version)"`
_version=`echo "$(_version)"`
echo "version: $version"
echo "_version: $_version"
[ -z "$version" ] && buildVersion=$_version.$(buildDate).$(short_hash) || buildVersion=$version
echo "buildVersion: $buildVersion"
echo "##vso[task.setvariable variable=buildVersion]$buildVersion" ## Store variable for subsequent steps
workingDirectory: $(Build.SourcesDirectory)
displayName: Define Build Version
- bash: |
version=`echo "$(version)"`
_version=`echo "$(_version)"`
echo "version: $version"
echo "_version: $_version"
[ -z "$version" ] && buildVersion=$_version.$(buildDate).$(short_hash) || buildVersion=$version
echo "buildVersion: $buildVersion"
echo "##vso[task.setvariable variable=buildVersion]$buildVersion" ## Store variable for subsequent steps
workingDirectory: $(Build.SourcesDirectory)
displayName: Define Build Version

- task: colinsalmcorner.colinsalmcorner-buildtasks.tag-build-task.tagBuildOrRelease@0
displayName: 'Tag Build with version number'
inputs:
tags: 'Version=$(buildVersion)'
continueOnError: true
- task: NodeTool@0
displayName: "Use Node 14.x"
inputs:
versionSpec: 14.x

- task: NodeTool@0
displayName: 'Use Node 14.x'
inputs:
versionSpec: 14.x
- script: "node ./common/scripts/set-registry-artifacts.js"
displayName: "Point /common/config/rush/.npmrc to artifacts url"

- script: 'node ./common/scripts/set-registry-artifacts.js'
displayName: 'Point /common/config/rush/.npmrc to artifacts url'
- task: npmAuthenticate@0
displayName: "npm Authenticate common/config/rush/.npmrc"
inputs:
workingFile: common/config/rush/.npmrc

- task: npmAuthenticate@0
displayName: 'npm Authenticate common/config/rush/.npmrc'
inputs:
workingFile: common/config/rush/.npmrc

- script: 'npm install --global @microsoft/rush@5.33.0'
displayName: 'npm install --global @microsoft/rush'
- script: "npm install --global @microsoft/rush@5.33.0"
displayName: "npm install --global @microsoft/rush"

- script: 'rush update'
displayName: 'rush update'
- script: "rush update"
displayName: "rush update"

- script: 'rush build -p 2'
displayName: 'rush build -p 2'
- script: "rush build -p 2"
displayName: "rush build -p 2"

- script: 'rush test'
displayName: 'rush test'
- script: "rush test"
displayName: "rush test"

- script: 'node ./common/scripts/version-and-pack.js --version $(buildVersion)'
displayName: 'Version and Pack'
- script: "node ./common/scripts/version-and-pack.js --version $(buildVersion)"
displayName: "Version and Pack"

- task: CopyFiles@2
displayName: 'Copy packages to: $(Build.ArtifactStagingDirectory)/drop'
inputs:
SourceFolder: ./.output
Contents: '**/*.tgz'
TargetFolder: '$(Build.ArtifactStagingDirectory)/drop'
flattenFolders: true

- task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0
displayName: 'generate software bill of materials'
inputs:
BuildDropPath: '$(Build.ArtifactStagingDirectory)/drop'
PackageName: 'Microsoft Bot Framework CLI'
PackageVersion: $(buildVersion)
- task: CopyFiles@2
displayName: "Copy packages to: $(Build.ArtifactStagingDirectory)/drop"
inputs:
SourceFolder: ./.output
Contents: "**/*.tgz"
TargetFolder: "$(Build.ArtifactStagingDirectory)/drop"
flattenFolders: true

- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: drop'
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)/drop'
ArtifactName: drop
- task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0
displayName: "generate software bill of materials"
inputs:
BuildDropPath: "$(Build.ArtifactStagingDirectory)/drop"
PackageName: "Microsoft Bot Framework CLI"
PackageVersion: $(buildVersion)

- powershell: 'Get-ChildItem .. -ErrorAction Continue -Recurse -Force | Where {$_.FullName -notlike "*node_modules*"}'
displayName: 'Dir workspace except node_modules'
continueOnError: true
condition: succeededOrFailed()

#Run component governance and fail build if not passed
- task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0
displayName: 'Component Detection'
inputs:
sourceScanPath: './packages'
ignoreDirectories: './common/temp/pnpm-local/node_modules/pnpm,./common/temp/pnpm-store,./common/config/rush/pnpm-lock.yaml,./common/temp/pnpm-lock.yaml'
failOnAlert: true
- task: PublishBuildArtifacts@1
displayName: "Publish Artifact: drop"
inputs:
PathtoPublish: "$(Build.ArtifactStagingDirectory)/drop"
ArtifactName: drop

- powershell: 'Get-ChildItem .. -ErrorAction Continue -Recurse -Force | Where {$_.FullName -notlike "*node_modules*"}'
displayName: "Dir workspace except node_modules"
continueOnError: true
condition: succeededOrFailed()

#Run component governance and fail build if not passed
190 changes: 89 additions & 101 deletions build/botframework-cli.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,112 +11,100 @@ pool:
pr:
branches:
include:
- main
- main

jobs:
- job: CLI
variables:
runCodesignValidationInjection: false # Disables the unnecessary injected CodeSign Validation step
buildVersion: '4.10.0-preview.$(Build.BuildId)'
buildVersion: "4.10.0-preview.$(Build.BuildId)"
_version: ${{coalesce(variables.version, variables.buildVersion)}}

steps:
- task: colinsalmcorner.colinsalmcorner-buildtasks.tag-build-task.tagBuildOrRelease@0
displayName: 'Tag Build with version number'
inputs:
tags: 'Version=$(_version)'
continueOnError: true

- task: NodeTool@0
displayName: 'Use Node 16.x'
inputs:
versionSpec: 16.x

- task: Npm@1
displayName: 'npm install --global @microsoft/rush'
inputs:
command: custom
verbose: false
customCommand: 'install --global @microsoft/rush@5.33.0'

- script: 'rush update'
displayName: 'rush update'

- script: 'rush build -p 2'
displayName: 'rush build -p 2'

- script: 'rush coverage -v'
displayName: 'rush coverage -v'

- bash: 'bash <(curl -s https://codecov.io/bash)'
displayName: 'push coverage report to codecov.io - https://codecov.io/github/microsoft/botframework-cli'
env:
CODECOV_TOKEN: $(TokenForCodecov)

- powershell: |
# If commit Build.SourceVersion exists in Github, we can show a nicer codecov.io URL
$result = $(git rev-list HEAD..$(Build.SourceVersion) 2>&1);
if ($result -like "*fatal*") { $Url = "https://codecov.io/github/microsoft/botframework-cli" }
else { $Url = "https://codecov.io/github/microsoft/botframework-cli/commit/$(Build.SourceVersion)" };
Write-Host "##vso[task.setvariable variable=CodecovUrl;]$Url"
displayName: 'Set CodecovUrl'

- task: colinsalmcorner.colinsalmcorner-buildtasks.tag-build-task.tagBuildOrRelease@0
displayName: 'Tag Build with coverage url'
inputs:
tags: '$(CodecovUrl)'
continueOnError: true

- task: PublishCodeCoverageResults@1
displayName: 'Populate Code Coverage tab'
inputs:
codeCoverageTool: 'cobertura' # Options: cobertura, jaCoCo
summaryFileLocation: $(System.DefaultWorkingDirectory)/packages/*/coverage/cobertura-coverage.xml
continueOnError: true

- task: CopyFiles@2
displayName: 'Copy coverage files to: $(Build.StagingDirectory)/coverage'
inputs:
SourceFolder: '$(Build.SourcesDirectory)/packages'
Contents: '*/coverage/**'
TargetFolder: '$(Build.StagingDirectory)/coverage'

- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: coverage'
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)/coverage'
ArtifactName: coverage

- script: 'rush posttest'
displayName: 'rush posttest'

- script: 'node ./common/scripts/version-and-pack.js --version $(_version)'
displayName: 'Version and Pack'

- task: CopyFiles@2
displayName: 'Copy packages to: $(Build.ArtifactStagingDirectory)/drop'
inputs:
SourceFolder: ./.output
Contents: '**/*.tgz'
TargetFolder: '$(Build.ArtifactStagingDirectory)/drop'
flattenFolders: true

- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: drop'
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)/drop'
ArtifactName: drop

# Delete pnpm files
- task: DeleteFiles@1
inputs:
#SourceFolder: # Optional
Contents: './common/temp'
#RemoveSourceFolder: # Optional

# Delete pnpm lock yaml
- task: DeleteFiles@1
inputs:
#SourceFolder: # Optional
Contents: './common/config/rush/pnpm-lock.yaml'
#RemoveSourceFolder: # Optional
- task: NodeTool@0
displayName: "Use Node 16.x"
inputs:
versionSpec: 16.x

- task: Npm@1
displayName: "npm install --global @microsoft/rush"
inputs:
command: custom
verbose: false
customCommand: "install --global @microsoft/rush@5.33.0"

- script: "rush update"
displayName: "rush update"

- script: "rush build -p 2"
displayName: "rush build -p 2"

- script: "rush coverage -v"
displayName: "rush coverage -v"

- bash: "bash <(curl -s https://codecov.io/bash)"
displayName: "push coverage report to codecov.io - https://codecov.io/github/microsoft/botframework-cli"
env:
CODECOV_TOKEN: $(TokenForCodecov)

- powershell: |
# If commit Build.SourceVersion exists in Github, we can show a nicer codecov.io URL
$result = $(git rev-list HEAD..$(Build.SourceVersion) 2>&1);
if ($result -like "*fatal*") { $Url = "https://codecov.io/github/microsoft/botframework-cli" }
else { $Url = "https://codecov.io/github/microsoft/botframework-cli/commit/$(Build.SourceVersion)" };
Write-Host "##vso[task.setvariable variable=CodecovUrl;]$Url"
displayName: "Set CodecovUrl"

- task: PublishCodeCoverageResults@1
displayName: "Populate Code Coverage tab"
inputs:
codeCoverageTool: "cobertura" # Options: cobertura, jaCoCo
summaryFileLocation: $(System.DefaultWorkingDirectory)/packages/*/coverage/cobertura-coverage.xml
continueOnError: true

- task: CopyFiles@2
displayName: "Copy coverage files to: $(Build.StagingDirectory)/coverage"
inputs:
SourceFolder: "$(Build.SourcesDirectory)/packages"
Contents: "*/coverage/**"
TargetFolder: "$(Build.StagingDirectory)/coverage"

- task: PublishBuildArtifacts@1
displayName: "Publish Artifact: coverage"
inputs:
PathtoPublish: "$(Build.ArtifactStagingDirectory)/coverage"
ArtifactName: coverage

- script: "rush posttest"
displayName: "rush posttest"

- script: "node ./common/scripts/version-and-pack.js --version $(_version)"
displayName: "Version and Pack"

- task: CopyFiles@2
displayName: "Copy packages to: $(Build.ArtifactStagingDirectory)/drop"
inputs:
SourceFolder: ./.output
Contents: "**/*.tgz"
TargetFolder: "$(Build.ArtifactStagingDirectory)/drop"
flattenFolders: true

- task: PublishBuildArtifacts@1
displayName: "Publish Artifact: drop"
inputs:
PathtoPublish: "$(Build.ArtifactStagingDirectory)/drop"
ArtifactName: drop

# Delete pnpm files
- task: DeleteFiles@1
inputs:
#SourceFolder: # Optional
Contents: "./common/temp"
#RemoveSourceFolder: # Optional

# Delete pnpm lock yaml
- task: DeleteFiles@1
inputs:
#SourceFolder: # Optional
Contents: "./common/config/rush/pnpm-lock.yaml"
#RemoveSourceFolder: # Optional
5 changes: 4 additions & 1 deletion common/config/rush/pnpm-config.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@
"minimist": "^1.2.6",
"lodash": "^4.17.21",
"xml2js": "^0.5.0",
"tar": "^6.1.9"
"tar": "^6.1.9",
"ini": "^1.3.6",
"typescript": "^4.1.2",
"@oclif/tslint>typescript": "^4.1.2"
}
}
Loading