summaryrefslogtreecommitdiffstats
path: root/ansible_collections/dellemc/unity/.github/workflows/ansible-test.yml
blob: ff8d181f83fa127d60d0041f84ab72572b52cd72 (plain)
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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
name: CI

on:
  push:
    branches: [main]
  pull_request:
  schedule:
    - cron: '0 3 * * *'

jobs:
  build:
    name: Build collection
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        ansible-version: [stable-2.14, stable-2.15, stable-2.16, devel]
    steps:
      - name: Check out code
        uses: actions/checkout@v3

      - name: Set up Python 3.11
        uses: actions/setup-python@v4
        with:
          python-version: 3.11

      - name: Install ansible (${{ matrix.ansible-version }})
        run: pip install https://github.com/ansible/ansible/archive/${{ matrix.ansible-version }}.tar.gz --disable-pip-version-check

      - name: Build a collection tarball
        run: ansible-galaxy collection build --output-path "${GITHUB_WORKSPACE}/.cache/collection-tarballs"

      - name: Store migrated collection artifacts
        uses: actions/upload-artifact@v1
        with:
          name: collection
          path: .cache/collection-tarballs

  ###
  # Unit tests (OPTIONAL)
  #
  # https://docs.ansible.com/ansible/latest/dev_guide/testing_units.html

  unit:
    name: Unit Tests (Ⓐ${{ matrix.ansible }} with ${{ matrix.python }} python)
    needs: [build]
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        python: ['3.9', '3.10', '3.11']
        ansible:
          - stable-2.14
          - stable-2.15
          - stable-2.16
          - devel
        exclude:
          - ansible: stable-2.16
            python: '3.9'
          - ansible: devel
            python: '3.9'

    steps:
      - name: Perform unit testing with ansible-test
        uses: ansible-community/ansible-test-gh-action@release/v1
        with:
          testing-type: units
          coverage: always
          ansible-core-version: ${{ matrix.ansible }}
          target-python-version: ${{ matrix.python }}

  ###
  # Sanity tests (REQUIRED)
  #
  # https://docs.ansible.com/ansible/latest/dev_guide/testing_sanity.html

  sanity:
    name: Sanity (Ⓐ${{ matrix.ansible }} with ${{ matrix.python }} python)
    needs: [build]
    strategy:
      matrix:
        python: ['3.9', '3.10', '3.11']
        ansible:
          - stable-2.14
          - stable-2.15
          - stable-2.16
          - devel
        exclude:
          - ansible: stable-2.16
            python: '3.9'
          - ansible: devel
            python: '3.9'
    runs-on: ubuntu-latest
    steps:
      - name: Perform sanity testing
        uses: ansible-community/ansible-test-gh-action@release/v1
        with:
          ansible-core-version: ${{ matrix.ansible }}
          target-python-version: ${{ matrix.python }}
          testing-type: sanity
          pull-request-change-detection: true
          coverage: never

  lint:
    name: Ansible lint
    runs-on: ubuntu-latest
    needs: [build]
    strategy:
      fail-fast: false
      matrix:
        python-version: ["3.9", "3.10", "3.11"]
        ansible-version: [stable-2.14, stable-2.15, stable-2.16, devel]
        exclude:
        # Ansible-core 2.16 is supported only from Python 3.10 onwards
          - python-version: "3.9"
            ansible-version: stable-2.16
          - python-version: '3.9'
            ansible-version: devel

    steps:
      # Important: This sets up your GITHUB_WORKSPACE environment variable
      - name: Checkout the source code
        uses: actions/checkout@v3
        with:
          fetch-depth: 0 # needed for progressive mode to work

      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v4
        with:
          python-version: ${{ matrix.python-version }}

      - name: Install ansible (${{ matrix.ansible-version }}) version
        run: pip install https://github.com/ansible/ansible/archive/${{ matrix.ansible-version }}.tar.gz --disable-pip-version-check

      - name: Install ansible lint
        run: pip install ansible-lint --disable-pip-version-check

      - name: Download migrated collection artifacts
        uses: actions/download-artifact@v1
        with:
          name: collection
          path: .cache/collection-tarballs

      - name: Install collection build
        run: ansible-galaxy collection install .cache/collection-tarballs/*.tar.gz

      - name: Run Ansible lint
        run: ansible-lint --show-relpath
        working-directory: /home/runner/work/ansible-unity/ansible-unity