diff options
Diffstat (limited to 'ansible_collections/community/azure/.azure-pipelines')
12 files changed, 0 insertions, 408 deletions
diff --git a/ansible_collections/community/azure/.azure-pipelines/README.md b/ansible_collections/community/azure/.azure-pipelines/README.md deleted file mode 100644 index 385e70bac..000000000 --- a/ansible_collections/community/azure/.azure-pipelines/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Azure Pipelines Configuration - -Please see the [Documentation](https://github.com/ansible/community/wiki/Testing:-Azure-Pipelines) for more information. diff --git a/ansible_collections/community/azure/.azure-pipelines/azure-pipelines.yml b/ansible_collections/community/azure/.azure-pipelines/azure-pipelines.yml deleted file mode 100644 index 48658e394..000000000 --- a/ansible_collections/community/azure/.azure-pipelines/azure-pipelines.yml +++ /dev/null @@ -1,61 +0,0 @@ -trigger: - batch: true - branches: - include: - - main - - master - - stable-* - -pr: - autoCancel: true - branches: - include: - - main - - stable-* - -schedules: - - cron: 0 9 * * * - displayName: Nightly - always: true - branches: - include: - - main - - stable-* - -variables: - - name: checkoutPath - value: ansible_collections/community/azure - - name: coverageBranches - value: main - - name: pipelinesCoverage - value: coverage - - name: entryPoint - value: tests/utils/shippable/shippable.sh - - name: fetchDepth - value: 0 - -resources: - containers: - - container: default - image: quay.io/ansible/azure-pipelines-test-container:3.0.0 - -pool: Standard - -stages: - - stage: Sanity_devel - displayName: Sanity devel - dependsOn: [] - jobs: - - template: templates/matrix.yml - parameters: - nameFormat: Test {0} - testFormat: devel/sanity/{0} - targets: - - test: 1 - - test: extra - - stage: Summary - condition: succeededOrFailed() - dependsOn: - - Sanity_devel - jobs: - - template: templates/coverage.yml diff --git a/ansible_collections/community/azure/.azure-pipelines/scripts/aggregate-coverage.sh b/ansible_collections/community/azure/.azure-pipelines/scripts/aggregate-coverage.sh deleted file mode 100755 index f3113dd0a..000000000 --- a/ansible_collections/community/azure/.azure-pipelines/scripts/aggregate-coverage.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env bash -# Aggregate code coverage results for later processing. - -set -o pipefail -eu - -agent_temp_directory="$1" - -PATH="${PWD}/bin:${PATH}" - -mkdir "${agent_temp_directory}/coverage/" - -options=(--venv --venv-system-site-packages --color -v) - -ansible-test coverage combine --export "${agent_temp_directory}/coverage/" "${options[@]}" - -if ansible-test coverage analyze targets generate --help >/dev/null 2>&1; then - # Only analyze coverage if the installed version of ansible-test supports it. - # Doing so allows this script to work unmodified for multiple Ansible versions. - ansible-test coverage analyze targets generate "${agent_temp_directory}/coverage/coverage-analyze-targets.json" "${options[@]}" -fi diff --git a/ansible_collections/community/azure/.azure-pipelines/scripts/combine-coverage.py b/ansible_collections/community/azure/.azure-pipelines/scripts/combine-coverage.py deleted file mode 100755 index 506ade646..000000000 --- a/ansible_collections/community/azure/.azure-pipelines/scripts/combine-coverage.py +++ /dev/null @@ -1,60 +0,0 @@ -#!/usr/bin/env python -""" -Combine coverage data from multiple jobs, keeping the data only from the most recent attempt from each job. -Coverage artifacts must be named using the format: "Coverage $(System.JobAttempt) {StableUniqueNameForEachJob}" -The recommended coverage artifact name format is: Coverage $(System.JobAttempt) $(System.StageDisplayName) $(System.JobDisplayName) -Keep in mind that Azure Pipelines does not enforce unique job display names (only names). -It is up to pipeline authors to avoid name collisions when deviating from the recommended format. -""" - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import re -import shutil -import sys - - -def main(): - """Main program entry point.""" - source_directory = sys.argv[1] - - if '/ansible_collections/' in os.getcwd(): - output_path = "tests/output" - else: - output_path = "test/results" - - destination_directory = os.path.join(output_path, 'coverage') - - if not os.path.exists(destination_directory): - os.makedirs(destination_directory) - - jobs = {} - count = 0 - - for name in os.listdir(source_directory): - match = re.search('^Coverage (?P<attempt>[0-9]+) (?P<label>.+)$', name) - label = match.group('label') - attempt = int(match.group('attempt')) - jobs[label] = max(attempt, jobs.get(label, 0)) - - for label, attempt in jobs.items(): - name = 'Coverage {attempt} {label}'.format(label=label, attempt=attempt) - source = os.path.join(source_directory, name) - source_files = os.listdir(source) - - for source_file in source_files: - source_path = os.path.join(source, source_file) - destination_path = os.path.join(destination_directory, source_file + '.' + label) - print('"%s" -> "%s"' % (source_path, destination_path)) - shutil.copyfile(source_path, destination_path) - count += 1 - - print('Coverage file count: %d' % count) - print('##vso[task.setVariable variable=coverageFileCount]%d' % count) - print('##vso[task.setVariable variable=outputPath]%s' % output_path) - - -if __name__ == '__main__': - main() diff --git a/ansible_collections/community/azure/.azure-pipelines/scripts/process-results.sh b/ansible_collections/community/azure/.azure-pipelines/scripts/process-results.sh deleted file mode 100755 index f3f1d1bae..000000000 --- a/ansible_collections/community/azure/.azure-pipelines/scripts/process-results.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/bin/env bash -# Check the test results and set variables for use in later steps. - -set -o pipefail -eu - -if [[ "$PWD" =~ /ansible_collections/ ]]; then - output_path="tests/output" -else - output_path="test/results" -fi - -echo "##vso[task.setVariable variable=outputPath]${output_path}" - -if compgen -G "${output_path}"'/junit/*.xml' > /dev/null; then - echo "##vso[task.setVariable variable=haveTestResults]true" -fi - -if compgen -G "${output_path}"'/bot/ansible-test-*' > /dev/null; then - echo "##vso[task.setVariable variable=haveBotResults]true" -fi - -if compgen -G "${output_path}"'/coverage/*' > /dev/null; then - echo "##vso[task.setVariable variable=haveCoverageData]true" -fi diff --git a/ansible_collections/community/azure/.azure-pipelines/scripts/publish-codecov.sh b/ansible_collections/community/azure/.azure-pipelines/scripts/publish-codecov.sh deleted file mode 100755 index 6d184f0b8..000000000 --- a/ansible_collections/community/azure/.azure-pipelines/scripts/publish-codecov.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env bash -# Upload code coverage reports to codecov.io. -# Multiple coverage files from multiple languages are accepted and aggregated after upload. -# Python coverage, as well as PowerShell and Python stubs can all be uploaded. - -set -o pipefail -eu - -output_path="$1" - -curl --silent --show-error https://ansible-ci-files.s3.us-east-1.amazonaws.com/codecov/codecov.sh > codecov.sh - -for file in "${output_path}"/reports/coverage*.xml; do - name="${file}" - name="${name##*/}" # remove path - name="${name##coverage=}" # remove 'coverage=' prefix if present - name="${name%.xml}" # remove '.xml' suffix - - bash codecov.sh \ - -f "${file}" \ - -n "${name}" \ - -X coveragepy \ - -X gcov \ - -X fix \ - -X search \ - -X xcode \ - || echo "Failed to upload code coverage report to codecov.io: ${file}" -done diff --git a/ansible_collections/community/azure/.azure-pipelines/scripts/report-coverage.sh b/ansible_collections/community/azure/.azure-pipelines/scripts/report-coverage.sh deleted file mode 100755 index 1bd91bdc9..000000000 --- a/ansible_collections/community/azure/.azure-pipelines/scripts/report-coverage.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env bash -# Generate code coverage reports for uploading to Azure Pipelines and codecov.io. - -set -o pipefail -eu - -PATH="${PWD}/bin:${PATH}" - -if ! ansible-test --help >/dev/null 2>&1; then - # Install the devel version of ansible-test for generating code coverage reports. - # This is only used by Ansible Collections, which are typically tested against multiple Ansible versions (in separate jobs). - # Since a version of ansible-test is required that can work the output from multiple older releases, the devel version is used. - pip install https://github.com/ansible/ansible/archive/devel.tar.gz --disable-pip-version-check -fi - -ansible-test coverage xml --stub --venv --venv-system-site-packages --color -v diff --git a/ansible_collections/community/azure/.azure-pipelines/scripts/run-tests.sh b/ansible_collections/community/azure/.azure-pipelines/scripts/run-tests.sh deleted file mode 100755 index a947fdf01..000000000 --- a/ansible_collections/community/azure/.azure-pipelines/scripts/run-tests.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/usr/bin/env bash -# Configure the test environment and run the tests. - -set -o pipefail -eu - -entry_point="$1" -test="$2" -read -r -a coverage_branches <<< "$3" # space separated list of branches to run code coverage on for scheduled builds - -export COMMIT_MESSAGE -export COMPLETE -export COVERAGE -export IS_PULL_REQUEST - -if [ "${SYSTEM_PULLREQUEST_TARGETBRANCH:-}" ]; then - IS_PULL_REQUEST=true - COMMIT_MESSAGE=$(git log --format=%B -n 1 HEAD^2) -else - IS_PULL_REQUEST= - COMMIT_MESSAGE=$(git log --format=%B -n 1 HEAD) -fi - -COMPLETE= -COVERAGE= - -if [ "${BUILD_REASON}" = "Schedule" ]; then - COMPLETE=yes - - if printf '%s\n' "${coverage_branches[@]}" | grep -q "^${BUILD_SOURCEBRANCHNAME}$"; then - COVERAGE=yes - fi -fi - -"${entry_point}" "${test}" 2>&1 | "$(dirname "$0")/time-command.py" diff --git a/ansible_collections/community/azure/.azure-pipelines/scripts/time-command.py b/ansible_collections/community/azure/.azure-pipelines/scripts/time-command.py deleted file mode 100755 index 5e8eb8d4c..000000000 --- a/ansible_collections/community/azure/.azure-pipelines/scripts/time-command.py +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env python -"""Prepends a relative timestamp to each input line from stdin and writes it to stdout.""" - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import sys -import time - - -def main(): - """Main program entry point.""" - start = time.time() - - sys.stdin.reconfigure(errors='surrogateescape') - sys.stdout.reconfigure(errors='surrogateescape') - - for line in sys.stdin: - seconds = time.time() - start - sys.stdout.write('%02d:%02d %s' % (seconds // 60, seconds % 60, line)) - sys.stdout.flush() - - -if __name__ == '__main__': - main() diff --git a/ansible_collections/community/azure/.azure-pipelines/templates/coverage.yml b/ansible_collections/community/azure/.azure-pipelines/templates/coverage.yml deleted file mode 100644 index 1864e4441..000000000 --- a/ansible_collections/community/azure/.azure-pipelines/templates/coverage.yml +++ /dev/null @@ -1,39 +0,0 @@ -# This template adds a job for processing code coverage data. -# It will upload results to Azure Pipelines and codecov.io. -# Use it from a job stage that completes after all other jobs have completed. -# This can be done by placing it in a separate summary stage that runs after the test stage(s) have completed. - -jobs: - - job: Coverage - displayName: Code Coverage - container: default - workspace: - clean: all - steps: - - checkout: self - fetchDepth: $(fetchDepth) - path: $(checkoutPath) - - task: DownloadPipelineArtifact@2 - displayName: Download Coverage Data - inputs: - path: coverage/ - patterns: "Coverage */*=coverage.combined" - - bash: .azure-pipelines/scripts/combine-coverage.py coverage/ - displayName: Combine Coverage Data - - bash: .azure-pipelines/scripts/report-coverage.sh - displayName: Generate Coverage Report - condition: gt(variables.coverageFileCount, 0) - - task: PublishCodeCoverageResults@1 - inputs: - codeCoverageTool: Cobertura - # Azure Pipelines only accepts a single coverage data file. - # That means only Python or PowerShell coverage can be uploaded, but not both. - # Set the "pipelinesCoverage" variable to determine which type is uploaded. - # Use "coverage" for Python and "coverage-powershell" for PowerShell. - summaryFileLocation: "$(outputPath)/reports/$(pipelinesCoverage).xml" - displayName: Publish to Azure Pipelines - condition: gt(variables.coverageFileCount, 0) - - bash: .azure-pipelines/scripts/publish-codecov.sh "$(outputPath)" - displayName: Publish to codecov.io - condition: gt(variables.coverageFileCount, 0) - continueOnError: true diff --git a/ansible_collections/community/azure/.azure-pipelines/templates/matrix.yml b/ansible_collections/community/azure/.azure-pipelines/templates/matrix.yml deleted file mode 100644 index 4e9555dd3..000000000 --- a/ansible_collections/community/azure/.azure-pipelines/templates/matrix.yml +++ /dev/null @@ -1,55 +0,0 @@ -# This template uses the provided targets and optional groups to generate a matrix which is then passed to the test template. -# If this matrix template does not provide the required functionality, consider using the test template directly instead. - -parameters: - # A required list of dictionaries, one per test target. - # Each item in the list must contain a "test" or "name" key. - # Both may be provided. If one is omitted, the other will be used. - - name: targets - type: object - - # An optional list of values which will be used to multiply the targets list into a matrix. - # Values can be strings or numbers. - - name: groups - type: object - default: [] - - # An optional format string used to generate the job name. - # - {0} is the name of an item in the targets list. - - name: nameFormat - type: string - default: "{0}" - - # An optional format string used to generate the test name. - # - {0} is the name of an item in the targets list. - - name: testFormat - type: string - default: "{0}" - - # An optional format string used to add the group to the job name. - # {0} is the formatted name of an item in the targets list. - # {{1}} is the group -- be sure to include the double "{{" and "}}". - - name: nameGroupFormat - type: string - default: "{0} - {{1}}" - - # An optional format string used to add the group to the test name. - # {0} is the formatted test of an item in the targets list. - # {{1}} is the group -- be sure to include the double "{{" and "}}". - - name: testGroupFormat - type: string - default: "{0}/{{1}}" - -jobs: - - template: test.yml - parameters: - jobs: - - ${{ if eq(length(parameters.groups), 0) }}: - - ${{ each target in parameters.targets }}: - - name: ${{ format(parameters.nameFormat, coalesce(target.name, target.test)) }} - test: ${{ format(parameters.testFormat, coalesce(target.test, target.name)) }} - - ${{ if not(eq(length(parameters.groups), 0)) }}: - - ${{ each group in parameters.groups }}: - - ${{ each target in parameters.targets }}: - - name: ${{ format(format(parameters.nameGroupFormat, parameters.nameFormat), coalesce(target.name, target.test), group) }} - test: ${{ format(format(parameters.testGroupFormat, parameters.testFormat), coalesce(target.test, target.name), group) }} diff --git a/ansible_collections/community/azure/.azure-pipelines/templates/test.yml b/ansible_collections/community/azure/.azure-pipelines/templates/test.yml deleted file mode 100644 index 5250ed802..000000000 --- a/ansible_collections/community/azure/.azure-pipelines/templates/test.yml +++ /dev/null @@ -1,45 +0,0 @@ -# This template uses the provided list of jobs to create test one or more test jobs. -# It can be used directly if needed, or through the matrix template. - -parameters: - # A required list of dictionaries, one per test job. - # Each item in the list must contain a "job" and "name" key. - - name: jobs - type: object - -jobs: - - ${{ each job in parameters.jobs }}: - - job: test_${{ replace(replace(replace(job.test, '/', '_'), '.', '_'), '-', '_') }} - displayName: ${{ job.name }} - container: default - workspace: - clean: all - steps: - - checkout: self - fetchDepth: $(fetchDepth) - path: $(checkoutPath) - - bash: .azure-pipelines/scripts/run-tests.sh "$(entryPoint)" "${{ job.test }}" "$(coverageBranches)" - displayName: Run Tests - - bash: .azure-pipelines/scripts/process-results.sh - condition: succeededOrFailed() - displayName: Process Results - - bash: .azure-pipelines/scripts/aggregate-coverage.sh "$(Agent.TempDirectory)" - condition: eq(variables.haveCoverageData, 'true') - displayName: Aggregate Coverage Data - - task: PublishTestResults@2 - condition: eq(variables.haveTestResults, 'true') - inputs: - testResultsFiles: "$(outputPath)/junit/*.xml" - displayName: Publish Test Results - - task: PublishPipelineArtifact@1 - condition: eq(variables.haveBotResults, 'true') - displayName: Publish Bot Results - inputs: - targetPath: "$(outputPath)/bot/" - artifactName: "Bot $(System.JobAttempt) $(System.StageDisplayName) $(System.JobDisplayName)" - - task: PublishPipelineArtifact@1 - condition: eq(variables.haveCoverageData, 'true') - displayName: Publish Coverage Data - inputs: - targetPath: "$(Agent.TempDirectory)/coverage/" - artifactName: "Coverage $(System.JobAttempt) $(System.StageDisplayName) $(System.JobDisplayName)" |