diff --git a/ansible/collections/ansible_collections/ansible.posix-2.0.0.info/GALAXY.yml b/ansible/collections/ansible_collections/ansible.posix-2.0.0.info/GALAXY.yml new file mode 100644 index 0000000..b11f323 --- /dev/null +++ b/ansible/collections/ansible_collections/ansible.posix-2.0.0.info/GALAXY.yml @@ -0,0 +1,8 @@ +download_url: https://galaxy.ansible.com/api/v3/plugin/ansible/content/published/collections/artifacts/ansible-posix-2.0.0.tar.gz +format_version: 1.0.0 +name: posix +namespace: ansible +server: https://galaxy.ansible.com/api/ +signatures: [] +version: 2.0.0 +version_url: /api/v3/plugin/ansible/content/published/collections/index/ansible/posix/versions/2.0.0/ diff --git a/ansible/collections/ansible_collections/ansible/posix/.ansible-lint b/ansible/collections/ansible_collections/ansible/posix/.ansible-lint new file mode 100644 index 0000000..7f470fa --- /dev/null +++ b/ansible/collections/ansible_collections/ansible/posix/.ansible-lint @@ -0,0 +1,10 @@ +--- +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later +# SPDX-FileCopyrightText: 2024, Ansible Project + +skip_list: + - meta-runtime[unsupported-version] # Tis rule doesn't make any sense + - fqcn[deep] # This rule produces false positives for files in tests/unit/plugins/action/fixtures/ +exclude_paths: + - changelogs/ diff --git a/ansible/collections/ansible_collections/ansible/posix/.azure-pipelines/README.md b/ansible/collections/ansible_collections/ansible/posix/.azure-pipelines/README.md new file mode 100644 index 0000000..385e70b --- /dev/null +++ b/ansible/collections/ansible_collections/ansible/posix/.azure-pipelines/README.md @@ -0,0 +1,3 @@ +## Azure Pipelines Configuration + +Please see the [Documentation](https://github.com/ansible/community/wiki/Testing:-Azure-Pipelines) for more information. diff --git a/ansible/collections/ansible_collections/ansible/posix/.azure-pipelines/azure-pipelines.yml b/ansible/collections/ansible_collections/ansible/posix/.azure-pipelines/azure-pipelines.yml new file mode 100644 index 0000000..255f89a --- /dev/null +++ b/ansible/collections/ansible_collections/ansible/posix/.azure-pipelines/azure-pipelines.yml @@ -0,0 +1,287 @@ +--- +trigger: + batch: true + branches: + include: + - main + - 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/ansible/posix + - 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:6.0.0 + +pool: Standard + +stages: + - stage: Sanity_devel + displayName: Ansible devel sanity + dependsOn: [] + jobs: + - template: templates/matrix.yml + parameters: + nameFormat: "{0}" + testFormat: devel/{0} + targets: + - name: Sanity + test: sanity + - name: Units + test: units + - name: Lint + test: lint + - stage: Sanity_2_18 + displayName: Ansible 2.18 sanity + dependsOn: [] + jobs: + - template: templates/matrix.yml + parameters: + nameFormat: "{0}" + testFormat: 2.18/{0} + targets: + - name: Sanity + test: sanity + - name: Units + test: units + - name: Lint + test: lint + - stage: Sanity_2_17 + displayName: Ansible 2.17 sanity + dependsOn: [] + jobs: + - template: templates/matrix.yml + parameters: + nameFormat: "{0}" + testFormat: 2.17/{0} + targets: + - name: Sanity + test: sanity + - name: Units + test: units + - name: Lint + test: lint + - stage: Sanity_2_16 + displayName: Ansible 2.16 sanity + dependsOn: [] + jobs: + - template: templates/matrix.yml + parameters: + nameFormat: "{0}" + testFormat: 2.16/{0} + targets: + - name: Sanity + test: sanity + - name: Units + test: units + - stage: Sanity_2_15 + displayName: Ansible 2.15 sanity + dependsOn: [] + jobs: + - template: templates/matrix.yml + parameters: + nameFormat: "{0}" + testFormat: 2.15/{0} + targets: + - name: Sanity + test: sanity + - name: Units + test: units + ## Docker + - stage: Docker_devel + displayName: Docker devel + dependsOn: [] + jobs: + - template: templates/matrix.yml + parameters: + testFormat: devel/linux/{0}/1 + targets: + - name: Fedora 40 + test: fedora40 + - name: Ubuntu 22.04 + test: ubuntu2204 + - name: Ubuntu 24.04 + test: ubuntu2404 + - stage: Docker_2_18 + displayName: Docker devel + dependsOn: [] + jobs: + - template: templates/matrix.yml + parameters: + testFormat: 2.18/linux/{0}/1 + targets: + - name: Fedora 40 + test: fedora40 + - name: Ubuntu 22.04 + test: ubuntu2204 + - name: Ubuntu 24.04 + test: ubuntu2404 + - stage: Docker_2_17 + displayName: Docker 2.17 + dependsOn: [] + jobs: + - template: templates/matrix.yml + parameters: + testFormat: 2.17/linux/{0}/1 + targets: + - name: Fedora 39 + test: fedora39 + - name: Ubuntu 20.04 + test: ubuntu2004 + - name: Ubuntu 22.04 + test: ubuntu2204 + - stage: Docker_2_16 + displayName: Docker 2.16 + dependsOn: [] + jobs: + - template: templates/matrix.yml + parameters: + testFormat: 2.16/linux/{0}/1 + targets: + - name: CentOS 7 + test: centos7 + - name: Fedora 38 + test: fedora38 + - name: Ubuntu 20.04 + test: ubuntu2004 + - name: Ubuntu 22.04 + test: ubuntu2204 + + - stage: Docker_2_15 + displayName: Docker 2.15 + dependsOn: [] + jobs: + - template: templates/matrix.yml + parameters: + testFormat: 2.15/linux/{0}/1 + targets: + - name: CentOS 7 + test: centos7 + - name: Fedora 37 + test: fedora37 + - name: openSUSE 15 py3 + test: opensuse15 + - name: Ubuntu 20.04 + test: ubuntu2004 + - name: Ubuntu 22.04 + test: ubuntu2204 + + ## Remote + - stage: Remote_devel + displayName: Remote devel + dependsOn: [] + jobs: + - template: templates/matrix.yml + parameters: + testFormat: devel/{0}/1 + targets: + - name: RHEL 9.4 + test: rhel/9.4 + - name: FreeBSD 14.1 + test: freebsd/14.1 + - name: FreeBSD 13.4 + test: freebsd/13.4 + - stage: Remote_2_18 + displayName: Remote devel + dependsOn: [] + jobs: + - template: templates/matrix.yml + parameters: + testFormat: 2.18/{0}/1 + targets: + - name: RHEL 9.4 + test: rhel/9.4 + - name: FreeBSD 13.3 + test: freebsd/13.3 + - stage: Remote_2_17 + displayName: Remote 2.17 + dependsOn: [] + jobs: + - template: templates/matrix.yml + parameters: + testFormat: 2.17/{0}/1 + targets: + - name: RHEL 9.3 + test: rhel/9.3 + - name: FreeBSD 13.3 + test: freebsd/13.3 + - stage: Remote_2_16 + displayName: Remote 2.16 + dependsOn: [] + jobs: + - template: templates/matrix.yml + parameters: + testFormat: 2.16/{0}/1 + targets: + - name: RHEL 8.8 + test: rhel/8.8 + - name: RHEL 9.2 + test: rhel/9.2 + - name: FreeBSD 13.2 + test: freebsd/13.2 + + - stage: Remote_2_15 + displayName: Remote 2.15 + dependsOn: [] + jobs: + - template: templates/matrix.yml + parameters: + testFormat: 2.15/{0}/1 + targets: + - name: RHEL 7.9 + test: rhel/7.9 + - name: RHEL 8.7 + test: rhel/8.7 + - name: RHEL 9.1 + test: rhel/9.1 + - name: FreeBSD 13.2 + test: freebsd/13.2 + + ## Finally + + - stage: Summary + condition: succeededOrFailed() + dependsOn: + - Sanity_2_15 + - Remote_2_15 + - Docker_2_15 + - Sanity_2_16 + - Remote_2_16 + - Docker_2_16 + - Sanity_2_17 + - Remote_2_17 + - Docker_2_17 + - Sanity_2_18 + - Remote_2_18 + - Docker_2_18 + - Sanity_devel + - Remote_devel + - Docker_devel + jobs: + - template: templates/coverage.yml diff --git a/ansible/collections/ansible_collections/ansible/posix/.azure-pipelines/scripts/aggregate-coverage.sh b/ansible/collections/ansible_collections/ansible/posix/.azure-pipelines/scripts/aggregate-coverage.sh new file mode 100755 index 0000000..f3113dd --- /dev/null +++ b/ansible/collections/ansible_collections/ansible/posix/.azure-pipelines/scripts/aggregate-coverage.sh @@ -0,0 +1,20 @@ +#!/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/ansible_collections/ansible/posix/.azure-pipelines/scripts/combine-coverage.py b/ansible/collections/ansible_collections/ansible/posix/.azure-pipelines/scripts/combine-coverage.py new file mode 100755 index 0000000..506ade6 --- /dev/null +++ b/ansible/collections/ansible_collections/ansible/posix/.azure-pipelines/scripts/combine-coverage.py @@ -0,0 +1,60 @@ +#!/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[0-9]+) (?P