mirror of
https://github.com/ansible-collections/ansible.posix.git
synced 2026-03-07 10:05:18 +01:00
Compare commits
9 commits
23ec1fab5d
...
30b301ad16
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
30b301ad16 | ||
|
|
692b906b82 | ||
|
|
aece4a9632 | ||
|
|
2cd1a6e4ab | ||
|
|
8af0b227cc | ||
|
|
8cdf51b3b3 | ||
|
|
0b6eb4506b | ||
|
|
dea22dcf4e | ||
|
|
dd3b97069b |
6 changed files with 114 additions and 125 deletions
|
|
@ -7,5 +7,9 @@ skip_list:
|
|||
- meta-runtime[unsupported-version] # This rule doesn't make any sense
|
||||
- fqcn[deep] # This rule produces false positives for files in tests/unit/plugins/action/fixtures/
|
||||
- sanity[cannot-ignore] # This rule is skipped to keep backward compatibility with Python 2
|
||||
|
||||
exclude_paths:
|
||||
- changelogs/
|
||||
- .github/
|
||||
- tests/
|
||||
- meta/
|
||||
|
|
|
|||
|
|
@ -57,6 +57,7 @@ stages:
|
|||
test: units
|
||||
- name: Lint
|
||||
test: lint
|
||||
|
||||
- stage: Sanity_2_20
|
||||
displayName: Ansible 2.20 Sanity & Units & Lint
|
||||
dependsOn: []
|
||||
|
|
@ -72,6 +73,7 @@ stages:
|
|||
test: units
|
||||
- name: Lint
|
||||
test: lint
|
||||
|
||||
- stage: Sanity_2_19
|
||||
displayName: Ansible 2.19 Sanity & Units & Lint
|
||||
dependsOn: []
|
||||
|
|
@ -87,6 +89,7 @@ stages:
|
|||
test: units
|
||||
- name: Lint
|
||||
test: lint
|
||||
|
||||
- stage: Sanity_2_18
|
||||
displayName: Ansible 2.18 Sanity & Units & Lint
|
||||
dependsOn: []
|
||||
|
|
@ -102,6 +105,7 @@ stages:
|
|||
test: units
|
||||
- name: Lint
|
||||
test: lint
|
||||
|
||||
- stage: Sanity_2_17
|
||||
displayName: Ansible 2.17 Sanity & Units & Lint
|
||||
dependsOn: []
|
||||
|
|
@ -117,21 +121,7 @@ stages:
|
|||
test: units
|
||||
- name: Lint
|
||||
test: lint
|
||||
- stage: Sanity_2_16
|
||||
displayName: Ansible 2.16 Sanity & Units & Lint
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml
|
||||
parameters:
|
||||
nameFormat: "{0}"
|
||||
testFormat: 2.16/{0}
|
||||
targets:
|
||||
- name: Sanity
|
||||
test: sanity
|
||||
- name: Units
|
||||
test: units
|
||||
- name: Lint
|
||||
test: lint
|
||||
|
||||
## Docker
|
||||
- stage: Docker_devel
|
||||
displayName: Docker devel
|
||||
|
|
@ -141,12 +131,13 @@ stages:
|
|||
parameters:
|
||||
testFormat: devel/linux/{0}/1
|
||||
targets:
|
||||
- name: Fedora 42
|
||||
test: fedora42
|
||||
- name: Fedora 43
|
||||
test: fedora43
|
||||
- name: Ubuntu 22.04
|
||||
test: ubuntu2204
|
||||
- name: Ubuntu 24.04
|
||||
test: ubuntu2404
|
||||
|
||||
- stage: Docker_2_20
|
||||
displayName: Docker 2.20
|
||||
dependsOn: []
|
||||
|
|
@ -161,6 +152,7 @@ stages:
|
|||
test: ubuntu2204
|
||||
- name: Ubuntu 24.04
|
||||
test: ubuntu2404
|
||||
|
||||
- stage: Docker_2_19
|
||||
displayName: Docker 2.19
|
||||
dependsOn: []
|
||||
|
|
@ -175,6 +167,7 @@ stages:
|
|||
test: ubuntu2204
|
||||
- name: Ubuntu 24.04
|
||||
test: ubuntu2404
|
||||
|
||||
- stage: Docker_2_18
|
||||
displayName: Docker 2.18
|
||||
dependsOn: []
|
||||
|
|
@ -189,6 +182,7 @@ stages:
|
|||
test: ubuntu2204
|
||||
- name: Ubuntu 24.04
|
||||
test: ubuntu2404
|
||||
|
||||
- stage: Docker_2_17
|
||||
displayName: Docker 2.17
|
||||
dependsOn: []
|
||||
|
|
@ -201,20 +195,6 @@ stages:
|
|||
test: fedora39
|
||||
- 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 22.04
|
||||
test: ubuntu2204
|
||||
|
||||
## Remote
|
||||
- stage: Remote_devel
|
||||
|
|
@ -225,14 +205,15 @@ stages:
|
|||
parameters:
|
||||
testFormat: devel/{0}/1
|
||||
targets:
|
||||
- name: RHEL 10.0
|
||||
test: rhel/10.0
|
||||
- name: RHEL 9.6
|
||||
test: rhel/9.6
|
||||
- name: RHEL 10.1
|
||||
test: rhel/10.1
|
||||
- name: RHEL 9.7
|
||||
test: rhel/9.7
|
||||
- name: FreeBSD 14.3
|
||||
test: freebsd/14.3
|
||||
- name: FreeBSD 13.5
|
||||
test: freebsd/13.5
|
||||
- name: FreeBSD 15.0
|
||||
test: freebsd/15.0
|
||||
|
||||
- stage: Remote_2_20
|
||||
displayName: Remote 2.20
|
||||
dependsOn: []
|
||||
|
|
@ -241,14 +222,15 @@ stages:
|
|||
parameters:
|
||||
testFormat: 2.20/{0}/1
|
||||
targets:
|
||||
- name: RHEL 10.0
|
||||
test: rhel/10.0
|
||||
- name: RHEL 9.6
|
||||
test: rhel/9.6
|
||||
- name: RHEL 10.1
|
||||
test: rhel/10.1
|
||||
- name: RHEL 9.7
|
||||
test: rhel/9.7
|
||||
- name: FreeBSD 14.3
|
||||
test: freebsd/14.3
|
||||
- name: FreeBSD 13.5
|
||||
test: freebsd/13.5
|
||||
|
||||
- stage: Remote_2_19
|
||||
displayName: Remote 2.19
|
||||
dependsOn: []
|
||||
|
|
@ -257,14 +239,15 @@ stages:
|
|||
parameters:
|
||||
testFormat: 2.19/{0}/1
|
||||
targets:
|
||||
- name: RHEL 10.0
|
||||
test: rhel/10.0
|
||||
- name: RHEL 9.5
|
||||
test: rhel/9.5
|
||||
- name: RHEL 10.1
|
||||
test: rhel/10.1
|
||||
- name: RHEL 9.7
|
||||
test: rhel/9.7
|
||||
- name: FreeBSD 14.2
|
||||
test: freebsd/14.2
|
||||
- name: FreeBSD 13.5
|
||||
test: freebsd/13.5
|
||||
|
||||
- stage: Remote_2_18
|
||||
displayName: Remote 2.18
|
||||
dependsOn: []
|
||||
|
|
@ -273,12 +256,13 @@ stages:
|
|||
parameters:
|
||||
testFormat: 2.18/{0}/1
|
||||
targets:
|
||||
- name: RHEL 10.0
|
||||
test: rhel/10.0
|
||||
- name: RHEL 9.4
|
||||
test: rhel/9.4
|
||||
- name: RHEL 10.1
|
||||
test: rhel/10.1
|
||||
- name: RHEL 9.7
|
||||
test: rhel/9.7
|
||||
- name: FreeBSD 13.5
|
||||
test: freebsd/13.5
|
||||
|
||||
- stage: Remote_2_17
|
||||
displayName: Remote 2.17
|
||||
dependsOn: []
|
||||
|
|
@ -292,26 +276,12 @@ stages:
|
|||
test: rhel/10.0
|
||||
- name: FreeBSD 13.5
|
||||
test: freebsd/13.5
|
||||
- stage: Remote_2_16
|
||||
displayName: Remote 2.16
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml
|
||||
parameters:
|
||||
testFormat: 2.16/{0}/1
|
||||
targets:
|
||||
# 2.16 remote target only has RHEL 9.6 image
|
||||
- name: RHEL 9.6
|
||||
test: rhel/9.6
|
||||
|
||||
## Finally
|
||||
|
||||
- stage: Summary
|
||||
condition: succeededOrFailed()
|
||||
dependsOn:
|
||||
- Sanity_2_16
|
||||
- Remote_2_16
|
||||
- Docker_2_16
|
||||
- Sanity_2_17
|
||||
- Remote_2_17
|
||||
- Docker_2_17
|
||||
|
|
|
|||
52
.github/BOTMETA.yml
vendored
52
.github/BOTMETA.yml
vendored
|
|
@ -1,52 +0,0 @@
|
|||
---
|
||||
automerge: false
|
||||
files:
|
||||
$module_utils/mount.py:
|
||||
labels: mount
|
||||
$modules/acl.py:
|
||||
authors: astorije bcoca
|
||||
labels: acl
|
||||
ignore: astorije
|
||||
$modules/at.py:
|
||||
authors: risaacson
|
||||
labels: at
|
||||
$modules/authorized_key.py:
|
||||
authors: ansible
|
||||
labels: authorized_key
|
||||
$modules/mount.py:
|
||||
authors: ansible skvidal
|
||||
maintainers: jtyr
|
||||
labels: mount
|
||||
ignore: skvidal
|
||||
$modules/patch.py:
|
||||
authors: jirutka luisperlaz
|
||||
$modules/seboolean.py:
|
||||
authors: sfromm
|
||||
labels: seboolean
|
||||
$modules/selinux.py:
|
||||
authors: goozbach
|
||||
maintainers: samdoran
|
||||
labels: selinux
|
||||
$modules/synchronize.py:
|
||||
authors: tima
|
||||
labels: synchronize
|
||||
$modules/sysctl.py:
|
||||
authors: davixx
|
||||
maintainers: Akasurde
|
||||
labels: sysctl
|
||||
$plugins/:
|
||||
labels: profile
|
||||
$plugins/debug.py:
|
||||
labels: debug
|
||||
$plugins/patch.py:
|
||||
labels: patch
|
||||
$plugins/synchronize.py:
|
||||
labels: synchronize
|
||||
$plugins/timer.py:
|
||||
macros:
|
||||
actions: plugins/action
|
||||
callbacks: plugins/callback
|
||||
module_utils: plugins/module_utils
|
||||
modules: plugins/modules
|
||||
plugins: plugins/plugins
|
||||
shells: plugins/shell
|
||||
35
.github/workflows/certification.yml
vendored
Normal file
35
.github/workflows/certification.yml
vendored
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
---
|
||||
# This workflow calls the latest version of the
|
||||
# reusable workflow.
|
||||
# You can copy this file into your respository if
|
||||
# you want to check against pinned versions of
|
||||
# Automation Hub tests.
|
||||
name: Run collection certification checks
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches: [main]
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: '0 6 * * *'
|
||||
|
||||
concurrency:
|
||||
group: cert-ver-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
|
||||
# Files that are not related to the core functionality
|
||||
# of your collection can cause Ansible Lint to fail.
|
||||
# If this happens, add an .ansible-lint file that includes
|
||||
# those files and directories to the root of your
|
||||
# repository; for example:
|
||||
# https://github.com/ansible-collections/partner-certification-checker/blob/main/.ansible-lint
|
||||
# https://github.com/ansible-collections/partner-certification-checker/blob/main/.ansible-lint
|
||||
|
||||
# If there are sanity test failures that cannot be fixed and are allowed to ignore
|
||||
# https://docs.ansible.com/projects/lint/rules/sanity/, create a sanity ignore file
|
||||
# https://docs.ansible.com/projects/ansible/devel/dev_guide/testing/sanity/ignores.html#ignore-file-location
|
||||
# for each affected version of ansible-core (for example, `tests/sanity/ignore-2.18.txt`) and add corresponding entries.
|
||||
jobs:
|
||||
call:
|
||||
uses: ansible-collections/partner-certification-checker/.github/workflows/certification-reusable.yml@v0.1
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
minor_changes:
|
||||
- synchronize - user-defined ``--out-format`` in ``rsync_opts`` is now honored in the returned output. (https://github.com/ansible-collections/ansible.posix/pull/428)
|
||||
|
|
@ -366,6 +366,7 @@ EXAMPLES = r'''
|
|||
|
||||
import os
|
||||
import errno
|
||||
import re
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils._text import to_bytes, to_native
|
||||
|
|
@ -597,8 +598,19 @@ def main():
|
|||
module.fail_json(msg='Hardlinking into a subdirectory of the source would cause recursion. %s and %s' % (destination_path, dest))
|
||||
cmd.append('--link-dest=%s' % link_path)
|
||||
|
||||
changed_marker = '<<CHANGED>>'
|
||||
cmd.append('--out-format=%s' % shlex_quote(changed_marker + '%i %n%L'))
|
||||
# find the last specified out-format
|
||||
out_format = ''
|
||||
for rsync_opt in rsync_opts:
|
||||
if rsync_opt.startswith('--out-format='):
|
||||
out_format = rsync_opt.replace('--out-format=', '', 1)
|
||||
|
||||
# force a known out-format so we can test for changes and return a known format of diff
|
||||
diff_marker = 'DIFF'
|
||||
if out_format == '' or module._diff:
|
||||
diff_detail = '%n%L'
|
||||
else:
|
||||
diff_detail = ''
|
||||
cmd.append('--out-format=%s' % shlex_quote('%s//%s//%%i//%s' % (out_format, diff_marker, diff_detail)))
|
||||
|
||||
cmd.append(shlex_quote(source))
|
||||
cmd.append(shlex_quote(dest))
|
||||
|
|
@ -624,18 +636,36 @@ def main():
|
|||
if rc:
|
||||
return module.fail_json(msg=err, rc=rc, cmd=cmdstr)
|
||||
|
||||
if link_dest:
|
||||
# a leading period indicates no change
|
||||
changed = (changed_marker + '.') not in out
|
||||
else:
|
||||
changed = changed_marker in out
|
||||
changed = False
|
||||
diff = []
|
||||
out_lines = []
|
||||
# remove forced out-format suffix, check for file changes
|
||||
for line in out.split('\n'):
|
||||
match = re.match('(.*)//%s//(...*?)//(.*)$' % diff_marker, line)
|
||||
if match:
|
||||
default_diff = '%s %s' % (match.group(2), match.group(3))
|
||||
|
||||
out_clean = out.replace(changed_marker, '')
|
||||
out_lines = out_clean.split('\n')
|
||||
if module._diff:
|
||||
diff.append(default_diff)
|
||||
|
||||
if out_format == '':
|
||||
out_lines.append(default_diff)
|
||||
else:
|
||||
out_lines.append(match.group(1))
|
||||
|
||||
# a period in the first position indicates no changes to the file's contents
|
||||
# a period in every other position from the third onward indicates no attribute changes
|
||||
if not re.match(r'\..\.*$', match.group(2)):
|
||||
changed = True
|
||||
else:
|
||||
out_lines.append(line)
|
||||
|
||||
out_clean = '\n'.join(out_lines)
|
||||
while '' in out_lines:
|
||||
out_lines.remove('')
|
||||
|
||||
if module._diff:
|
||||
diff = {'prepared': out_clean}
|
||||
diff = {'prepared': '\n'.join(diff)}
|
||||
return module.exit_json(changed=changed, msg=out_clean,
|
||||
rc=rc, cmd=cmdstr, stdout_lines=out_lines,
|
||||
diff=diff)
|
||||
|
|
|
|||
Loading…
Reference in a new issue