# Don't run Azure when a branch is updated, only when a PR is updated. # Prevents double builds when a PR is made from the main repo and not a fork. trigger: none pr: autoCancel: true branches: include: - '*' pool: # self-hosted agent on Windows 10 1903 environment # includes newer Docker engine with LCOW enabled, new build of LCOW image # includes Ruby 2.5, Go 1.10, Node.js 10.10 name: Default variables: NAMESPACE: puppet CONTAINER_NAME: r10k CONTAINER_BUILD_PATH: . LINT_IGNORES: DOCKER_BUILDKIT: 1 BUILD_OPTIONS: --build-arg alpine_version=3.9 workspace: clean: resources steps: - checkout: self # self represents the repo where the initial Pipelines YAML file was found clean: true # whether to fetch clean each time - powershell: | $gemfile = Join-Path -Path (Get-Location) -ChildPath 'docker/Gemfile' $gempath = Join-Path -Path (Get-Location) -ChildPath 'docker/.bundle/gems' bundle config --local gemfile $gemfile bundle config --local path $gempath bundle install --with test displayName: Fetch Dependencies timeoutInMinutes: 1 name: fetch_deps - powershell: | . "$(bundle show pupperware)/ci/build.ps1" Write-HostDiagnostics displayName: Diagnostic Host Information timeoutInMinutes: 2 name: hostinfo - powershell: | . "$(bundle show pupperware)/ci/build.ps1" Lint-Dockerfile -Name $ENV:CONTAINER_NAME -Ignore ($ENV:LINT_IGNORES -split ' ') displayName: Lint $(CONTAINER_NAME) Dockerfile timeoutInMinutes: 1 name: lint_dockerfile - powershell: | . "$(bundle show pupperware)/ci/build.ps1" Build-Container -Name $ENV:CONTAINER_NAME -Namespace $ENV:NAMESPACE -PathOrUri $ENV:CONTAINER_BUILD_PATH -AdditionalOptions ($ENV:BUILD_OPTIONS -split ' ') displayName: Build $(CONTAINER_NAME) Container timeoutInMinutes: 5 name: build_container - powershell: | . "$(bundle show pupperware)/ci/build.ps1" Initialize-TestEnv displayName: Prepare Test Environment name: test_prepare - powershell: | . "$(bundle show pupperware)/ci/build.ps1" Invoke-ContainerTest -Name $ENV:CONTAINER_NAME -Namespace $ENV:NAMESPACE displayName: Test $(CONTAINER_NAME) timeoutInMinutes: 5 name: test_container - task: PublishTestResults@2 displayName: Publish $(CONTAINER_NAME) test results inputs: testResultsFormat: 'JUnit' testResultsFiles: 'docker/TEST-*.xml' testRunTitle: $(CONTAINER_NAME) Test Results - powershell: | . "$(bundle show pupperware)/ci/build.ps1" Clear-BuildState -Name $ENV:CONTAINER_NAME -Namespace $ENV:NAMESPACE displayName: Container Cleanup timeoutInMinutes: 4 condition: always()