PowerShell/.vsts-ci/linux.yml

176 lines
4.0 KiB
YAML

parameters:
- name: ContainerPattern
displayName: |
Pattern to match JobName of the container.
Update this to force a container.
`.` will match everything
type: string
default: .
name: PR-$(System.PullRequest.PullRequestNumber)-$(Date:yyyyMMdd)$(Rev:.rr)
trigger:
# Batch merge builds together while a merge build is running
batch: true
branches:
include:
- master
- release*
- feature*
paths:
include:
- '*'
exclude:
- .vsts-ci/misc-analysis.yml
- .github/ISSUE_TEMPLATE/*
- .github/workflows/*
- .dependabot/config.yml
- .pipelines/*
- test/perf/*
pr:
branches:
include:
- master
- release*
- feature*
paths:
include:
- '*'
exclude:
- .dependabot/config.yml
- .github/ISSUE_TEMPLATE/*
- .github/workflows/*
- .vsts-ci/misc-analysis.yml
- .vsts-ci/windows.yml
- .vsts-ci/windows/*
- tools/cgmanifest.json
- LICENSE.txt
- test/common/markdown/*
- test/perf/*
- tools/releaseBuild/*
- tools/install*
- tools/releaseBuild/azureDevOps/templates/*
- README.md
- .spelling
- .pipelines/*
variables:
DOTNET_CLI_TELEMETRY_OPTOUT: 1
POWERSHELL_TELEMETRY_OPTOUT: 1
# Avoid expensive initialization of dotnet cli, see: https://donovanbrown.com/post/Stop-wasting-time-during-NET-Core-builds
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1
__SuppressAnsiEscapeSequences: 1
nugetMultiFeedWarnLevel: none
resources:
repositories:
- repository: Docker
type: github
endpoint: PowerShell
name: PowerShell/PowerShell-Docker
ref: master
stages:
- stage: BuildLinuxStage
displayName: Build for Linux
jobs:
- template: templates/ci-build.yml
parameters:
pool: ubuntu-20.04
jobName: linux_build
displayName: linux Build
- stage: TestUbuntu
displayName: Test for Ubuntu
dependsOn: [BuildLinuxStage]
jobs:
- template: templates/nix-test.yml
parameters:
name: Ubuntu
pool: ubuntu-20.04
purpose: UnelevatedPesterTests
tagSet: CI
- template: templates/nix-test.yml
parameters:
name: Ubuntu
pool: ubuntu-20.04
purpose: ElevatedPesterTests
tagSet: CI
- template: templates/nix-test.yml
parameters:
name: Ubuntu
pool: ubuntu-20.04
purpose: UnelevatedPesterTests
tagSet: Others
- template: templates/nix-test.yml
parameters:
name: Ubuntu
pool: ubuntu-20.04
purpose: ElevatedPesterTests
tagSet: Others
- template: templates/verify-xunit.yml
parameters:
pool: ubuntu-20.04
- stage: TestContainer
displayName: Test in a container
dependsOn: [BuildLinuxStage]
jobs:
- job: getContainerJob
displayName: Choose a container
pool:
vmImage: ubuntu-20.04
steps:
- checkout: self
clean: true
- checkout: Docker
clean: true
- pwsh: |
# Initialize container test stage
Import-Module ./PowerShell/tools/ci.psm1
Invoke-InitializeContainerStage -ContainerPattern '${{ parameters.ContainerPattern }}'
name: getContainerTask
displayName: Initialize Container Stage
continueOnError: true
- template: templates/test/nix-container-test.yml
parameters:
name: container
pool: ubuntu-20.04
purpose: UnelevatedPesterTests
tagSet: CI
- template: templates/test/nix-container-test.yml
parameters:
name: container
pool: ubuntu-20.04
purpose: ElevatedPesterTests
tagSet: CI
- template: templates/test/nix-container-test.yml
parameters:
name: container
pool: ubuntu-20.04
purpose: UnelevatedPesterTests
tagSet: Others
- template: templates/test/nix-container-test.yml
parameters:
name: container
pool: ubuntu-20.04
purpose: ElevatedPesterTests
tagSet: Others
- stage: PackageLinux
displayName: Package Linux
dependsOn: ["BuildLinuxStage"]
jobs:
- template: linux/templates/packaging.yml
parameters:
pool: ubuntu-20.04