-
Notifications
You must be signed in to change notification settings - Fork 23
134 lines (124 loc) · 4.41 KB
/
sanity.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
name: Sanity tests
on:
workflow_call:
inputs:
collection_pre_install:
required: false
type: string
default: ""
matrix_exclude:
# https://docs.ansible.com/ansible/latest/reference_appendices/release_and_maintenance.html#ansible-core-support-matrix
# 2.15 supports Python 3.9-3.11
# 2.16 supports Python 3.10-3.12
# 2.17 supports Python 3.10-3.12
# https://docs.ansible.com/ansible/devel/roadmap/ROADMAP_2_17.html
# milestone is 2.17 until after 2.17 branches from devel
# devel is 2.17 until 2024-04-01
# remove 3.12/milestone from matrix_exclude when milestone is next forwarded
default: >-
[
{
"ansible-version": "stable-2.16",
"python-version": "3.9"
},
{
"ansible-version": "stable-2.17",
"python-version": "3.9"
},
{
"ansible-version": "milestone",
"python-version": "3.9"
},
{
"ansible-version": "devel",
"python-version": "3.9"
},
{
"ansible-version": "devel",
"python-version": "3.10"
},
{
"ansible-version": "milestone",
"python-version": "3.10"
},
{
- "ansible-version": "stable-2.15",
- "python-version": "3.12"
- }
]
required: false
type: string
matrix_include:
default: >-
[]
required: false
type: string
unstable:
default: >-
[
"devel",
]
required: false
type: string
jobs:
sanity:
env:
PY_COLORS: "1"
source_directory: "./source"
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
ansible-version:
- stable-2.15
- stable-2.16
- stable-2.17
- milestone
- devel
python-version:
- "3.9"
- "3.10"
- "3.11"
- "3.12"
exclude: ${{ fromJSON(inputs.matrix_exclude) }}
include: ${{ fromJSON(inputs.matrix_include) }}
runs-on: ${{ matrix.os }}
continue-on-error: ${{ contains(fromJSON(inputs.unstable), matrix.ansible-version) }}
name: "py${{ matrix.python-version }} / ${{ matrix.os }} / ${{ matrix.ansible-version }}"
steps:
- name: Checkout the collection repository
uses: ansible-network/github_actions/.github/actions/checkout_dependency@main
with:
path: ${{ env.source_directory }}
ref: ${{ github.event.pull_request.head.sha }}
fetch-depth: "0"
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install ansible-core (${{ matrix.ansible-version }})
run: python3 -m pip install https://github.com/ansible/ansible/archive/${{ matrix.ansible-version }}.tar.gz --disable-pip-version-check
- name: Pre install collections dependencies first so the collection install does not
run: ansible-galaxy collection install --pre ${{ inputs.collection_pre_install }} -p /home/runner/collections/
if: ${{ inputs.collection_pre_install != '' && matrix.ansible-version != 'stable-2.9' }}
- name: Read collection metadata from galaxy.yml
id: identify
uses: ansible-network/github_actions/.github/actions/identify_collection@main
with:
source_path: ${{ env.source_directory }}
- name: Build and install the collection
uses: ansible-network/github_actions/.github/actions/build_install_collection@main
with:
install_python_dependencies: false
source_path: ${{ env.source_directory }}
collection_path: ${{ steps.identify.outputs.collection_path }}
tar_file: ${{ steps.identify.outputs.tar_file }}
ansible_version: ${{ matrix.ansible-version }}
- name: Print the ansible version
run: ansible --version
- name: Print the python dependencies
run: python3 -m pip list
- name: Run sanity tests
run: ansible-test sanity --requirements --color --python ${{ matrix.python-version }}
working-directory: ${{ steps.identify.outputs.collection_path }}