File: ci_workflows.yml

package info (click to toggle)
specutils 2.3.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 12,880 kB
  • sloc: python: 13,735; makefile: 111
file content (138 lines) | stat: -rw-r--r-- 4,105 bytes parent folder | download
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
name: CI

on:
  push:
    branches:
    - main
    tags:
    - '*'
  pull_request:
  schedule:
    # run every Wednesday at 5pm UTC
    - cron: '17 0 * * 3'
  workflow_dispatch:

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  tests:
    name: ${{ matrix.name }}
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        include:

          - name: Code style checks
            os: ubuntu-latest
            python: 3.x
            toxenv: codestyle

          - name: Python 3.11 with remote data and coverage
            os: ubuntu-latest
            python: '3.11'
            toxenv: py311-test-cov
            toxargs: -v
            toxposargs: --remote-data=any

          - name: Python 3.12 (Windows)
            os: windows-latest
            python: '3.12'
            toxenv: py312-test

          - name: Python 3.11 (MacOS)
            os: macos-latest
            python: '3.11'
            toxenv: py311-test

          - name: Python 3.13 (MacOS)
            os: macos-latest
            python: '3.13'
            toxenv: py313-test

          - name: Python 3.11 with oldest supported version of key dependencies
            os: ubuntu-latest
            python: '3.11'
            toxenv: py311-test-oldestdeps

    steps:
    - name: Checkout code
      uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd  # v6.0.2
      with:
        fetch-depth: 0
    - name: Set up Python
      uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548  # v6.1.0
      with:
        python-version: ${{ matrix.python }}
    - name: Install Python dependencies
      run: python -m pip install --upgrade tox
    - name: Run tests
      run: tox ${{ matrix.toxargs }} -e ${{ matrix.toxenv }} -- ${{ matrix.toxposargs }}
    # TODO: Do we need --gcov-glob "*cextern*" ?
    - name: Upload coverage to artifacts
      if: ${{ contains(matrix.toxenv,'-cov') }}
      uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f  # v6.0.0
      with:
        name: coverage_${{ matrix.toxenv }}.xml
        path: coverage.xml
        if-no-files-found: error

  upload-codecov:
    needs: [ tests ]
    permissions:
      contents: none
    runs-on: ubuntu-latest
    name: Upload Coverage
    steps:
    # work around CodeCov upload issue
    # see: https://github.com/codecov/codecov-action/issues/1801
    - uses: actions/checkout@v6.0.2
    - name: Download coverage artifacts
      uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131  # v7.0.0
      with:
        path: coverage
        pattern: coverage_*
        merge-multiple: true
    - name: Upload report to Codecov
      if: ${{ hashFiles('coverage/') != '' }}
      uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de  # v5.5.2
      with:
        token: ${{ secrets.CODECOV_TOKEN }}
        directory: coverage
        fail_ci_if_error: true
        verbose: true

  allowed_failures:
    name: ${{ matrix.name }}
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        include:
          - name: (Allowed Failure) Python 3.12 with remote data and dev version of key dependencies
            os: ubuntu-latest
            python: '3.12'
            toxenv: py312-test-devdeps
            toxposargs: --remote-data=any

          # doctest failure due to different no. of significant digits on arm64 (#1146)
          - name: Python 3.12 (macOS)
            os: macos-latest
            python: '3.12'
            toxenv: py312-test

    steps:
    - name: Checkout code
      uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd  # v6.0.2
      with:
        fetch-depth: 0
    - name: Set up Python
      uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548  # v6.1.0
      with:
        python-version: ${{ matrix.python }}
    - name: Install Python dependencies
      run: python -m pip install --upgrade tox
    - name: Run tests
      run: tox ${{ matrix.toxargs }} -e ${{ matrix.toxenv }} -- ${{ matrix.toxposargs }}