parameters: - name: VARIABLES_FILE default: 'templates/variables.yml' trigger: - master variables: - template: templates/variables-common.yml # platform specific variables, links to - template: ${{ parameters.VARIABLES_FILE }} jobs: - job: Build pool: vmImage: $(VM_IMAGE) container: image: $(DOCKER_BUILD_IMAGE) options: --cap-add=SYS_PTRACE --security-opt seccomp=unconfined --privileged --env container=docker steps: - template: templates/${{ variables.PREPARE_BUILD_TEMPLATE }} - template: templates/${{ variables.AUTOCONF_TEMPLATE }} - script: | set -e git update-ref refs/heads/$(System.PullRequest.TargetBranch) origin/$(System.PullRequest.TargetBranch) make V=0 "GIT_BRANCH=$(System.PullRequest.TargetBranch)" fastlint displayName: Quick code style check condition: eq(variables['Build.Reason'], 'PullRequest') - template: templates/${{ variables.BUILD_TEMPLATE }} - template: templates/publish-build.yml parameters: artifactName: 'packages-$(Build.BuildId)-$(Agent.OS)-$(Agent.OSArchitecture)' targetPath: $(Build.Repository.LocalPath)/dist displayName: Publish packages - script: | set -e mkdir container cp -pr dist container/ cp $(IPA_TESTS_DOCKERFILES)/$(DOCKER_DOCKERFILE) container/Dockerfile cd container docker build -t freeipa-azure-builder . docker save freeipa-azure-builder | gzip > '$(builddir)/freeipa-azure-builder-container.tar.gz' displayName: Create container image for test - template: templates/publish-build.yml parameters: artifactName: 'image-$(Build.BuildId)-$(Agent.OS)-$(Agent.OSArchitecture)' targetPath: $(Build.Repository.LocalPath)/freeipa-azure-builder-container.tar.gz displayName: Publish container image - template: templates/generate-matrix.yml parameters: definition: 'ipatests/azure/azure_definitions/gating.yml' displayName: Generate Matrix for Gating tests name: gating_matrix - template: templates/generate-matrix.yml parameters: definition: 'ipatests/azure/azure_definitions/base.yml' displayName: Generate Matrix for Base tests name: base_matrix - job: Lint pool: vmImage: $(VM_IMAGE) container: image: $(DOCKER_BUILD_IMAGE) options: --cap-add=SYS_PTRACE --security-opt seccomp=unconfined --privileged --env container=docker steps: - template: templates/${{ variables.PREPARE_BUILD_TEMPLATE }} - template: templates/${{ variables.AUTOCONF_TEMPLATE }} - script: | set -e echo "Running make target 'lint'" make V=0 lint echo "Building documentation" make -C doc/ html displayName: Lint sources and documentation - template: templates/save-test-artifacts.yml parameters: logsPath: doc/_build/html logsArtifact: docs-$(System.JobIdentifier)-$(Build.BuildId)-$(System.StageAttempt)-$(System.PhaseAttempt)-$(System.JobPositionInPhase) - job: Tox pool: vmImage: $(VM_IMAGE) container: image: $(DOCKER_BUILD_IMAGE) options: --cap-add=SYS_PTRACE --security-opt seccomp=unconfined --privileged --env container=docker steps: - template: templates/${{ variables.PREPARE_BUILD_TEMPLATE }} - template: templates/${{ variables.PREPARE_TOX_TEMPLATE }} - script: | set -e echo "Running tox" export LANG=en_US.utf8 export LC_CTYPE=en_US.utf8 locale $(TOX_COMMAND) -e py3,pypi,pylint3 -vv displayName: Tox - task: PublishTestResults@2 inputs: testResultsFiles: '.tox/**/junit-*.xml' testRunTitle: 'Tox results' condition: succeededOrFailed() - job: WebUI_Unit_Tests pool: vmImage: $(VM_IMAGE) container: image: $(DOCKER_BUILD_IMAGE) options: --cap-add=SYS_PTRACE --security-opt seccomp=unconfined --privileged --env container=docker steps: - template: templates/${{ variables.PREPARE_BUILD_TEMPLATE }} - template: templates/${{ variables.PREPARE_WEBUI_TEMPLATE }} - template: templates/${{ variables.AUTOCONF_TEMPLATE }} - script: | set -e echo "Running WebUI unit tests" cd $(builddir)/install/ui/js/libs && make cd $(builddir)/install/ui && npm install cd $(builddir)/install/ui && node_modules/grunt/bin/grunt --verbose test displayName: WebUI Unit Tests - task: PublishTestResults@2 inputs: testResultsFiles: 'install/ui/_build/test-reports/TEST-*.xml' testRunTitle: 'Web UI unit test results' condition: succeededOrFailed() - job: BASE_XMLRPC pool: vmImage: $(VM_IMAGE) dependsOn: Build condition: succeeded() strategy: matrix: $[ dependencies.Build.outputs['base_matrix.matrix'] ] steps: - template: templates/generate-job-variables.yml - template: templates/test-jobs.yml - job: GATING pool: vmImage: $(VM_IMAGE) dependsOn: Build condition: succeeded() strategy: matrix: $[ dependencies.Build.outputs['gating_matrix.matrix'] ] timeoutInMinutes: 90 steps: - template: templates/generate-job-variables.yml - template: templates/test-jobs.yml