diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 592d0d7a..593d2f2d 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -1,36 +1,108 @@ -trigger: - - main +pr: + branches: + include: + - main -jobs: - - job: Compliance +stages: + - stage: security_compliance + displayName: 'Security & Compliance' pool: vmImage: 'windows-latest' - steps: - - task: PoliCheck@1 - displayName: '๐ŸŒŽ PoliCheck' - inputs: - inputType: 'Basic' - targetType: 'F' - targetArgument: '$(Build.SourcesDirectory)' - result: 'PoliCheck.xml' - optionsXS: 1 # Scan subfolders - optionsPE: 1 # Enable exclusions - optionsUEPATH: '$(Build.SourcesDirectory)/policheck/UserExclusion.xml' - - task: PublishBuildArtifacts@1 - displayName: 'Create log artifact' - inputs: - pathToPublish: '..\_sdt\logs\PoliCheck\PoliCheck.xml' - artifactName: 'PoliCheck' - - - job: Security + jobs: + - job: compliance + steps: + - task: PoliCheck@1 + displayName: 'Run PoliCheck ๐ŸŒŽ' + inputs: + inputType: 'Basic' + targetType: 'F' + targetArgument: '$(Build.SourcesDirectory)' + result: 'PoliCheck.xml' + optionsXS: 1 + optionsPE: 1 + optionsUEPATH: '$(Build.SourcesDirectory)/policheck/UserExclusion.xml' + - task: PublishBuildArtifacts@1 + displayName: 'Create log artifact' + inputs: + pathToPublish: '..\_sdt\logs\PoliCheck\PoliCheck.xml' + artifactName: 'PoliCheck' + + - job: security + steps: + - task: ESLint@1 + displayName: 'Guardian: ESLint ๐Ÿ›ก' + inputs: + Configuration: 'recommended' + TargetType: 'eslint' + TargetsESLint: | + $(Build.SourcesDirectory)/**/*.ts + ErrorLevel: 'warn' + + - stage: build_test + displayName: 'Build & Test' pool: - vmImage: 'windows-latest' - steps: - - task: ESLint@1 - displayName: '๐Ÿ›ก Guardian: ESLint' - inputs: - Configuration: 'recommended' - TargetType: 'eslint' - TargetsESLint: | - $(Build.SourcesDirectory)/**/*.js - ErrorLevel: 'warn' + vmImage: 'ubuntu-latest' + + jobs: + - job: test + timeoutInMinutes: 10 + + steps: + - task: NodeTool@0 + displayName: 'Setup Node ๐Ÿ’พ' + inputs: + versionSpec: '14.x' + + - script: npm install + displayName: 'Install Dependencies ๐Ÿ“ฅ' + + - script: npm run test + displayName: 'Run Tests ๐Ÿงช' + + - job: lint + timeoutInMinutes: 10 + + steps: + - task: NodeTool@0 + displayName: 'Setup Node ๐Ÿ’พ' + inputs: + versionSpec: '14.x' + + - script: npm install + displayName: 'Install Dependencies ๐Ÿ“ฅ' + + - script: npm run lint + displayName: 'Run Lint Check ๐Ÿ”' + + - script: npm run fmt + displayName: 'Run Format Check ๐ŸŒธ' + + - job: build + timeoutInMinutes: 10 + + steps: + - task: NodeTool@0 + displayName: 'Setup Node ๐Ÿ’พ' + inputs: + versionSpec: '14.x' + + - script: npm install + displayName: 'Install Dependencies ๐Ÿ“ฅ' + + - script: npm run build + displayName: 'Build Toolkit ๐Ÿ—' + + - job: docs + timeoutInMinutes: 10 + + steps: + - task: NodeTool@0 + displayName: 'Setup Node ๐Ÿ’พ' + inputs: + versionSpec: '14.x' + + - script: npm install + displayName: 'Install Dependencies ๐Ÿ“ฅ' + + - script: npm run build:docs + displayName: 'Build Docs ๐Ÿ—'