CI #202
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
schedule: | |
# Weekly Monday 5AM build | |
# * is a special character in YAML so you have to quote this string | |
- cron: '0 5 * * 1' | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
permissions: | |
contents: read | |
jobs: | |
initial_check: | |
name: Mandatory checks before CI | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check base branch | |
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 | |
if: github.event_name == 'pull_request' | |
with: | |
script: | | |
const allowed_basebranch = 'master'; | |
const pr = context.payload.pull_request; | |
if (pr.base.ref !== allowed_basebranch) { | |
core.setFailed(`PR opened against ${pr.base.ref}, not ${allowed_basebranch}`); | |
} else { | |
core.info(`PR opened correctly against ${allowed_basebranch}`); | |
} | |
# The rest only run if above are done | |
pep_and_audit: | |
name: PEP and audit | |
runs-on: ubuntu-latest | |
needs: initial_check | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
fetch-depth: 0 | |
- name: Set up Python | |
uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0 | |
with: | |
python-version: '3.x' | |
- name: Lint with flake8 | |
run: | | |
python -m pip install --upgrade pip flake8 | |
flake8 reftools --count | |
# Make sure that packaging will work | |
- name: pep517 build | |
run: | | |
python -m pip install --upgrade setuptools build "twine>=3.3" | |
python -m build --sdist . | |
twine check --strict dist/* | |
- name: Security audit | |
run: | | |
python -m pip install --upgrade bandit | |
bandit -r . -c .bandit.yaml | |
initial_tests: | |
name: Initial CI stage | |
runs-on: ubuntu-latest | |
needs: initial_check | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
fetch-depth: 0 | |
- name: Set up Python | |
uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0 | |
with: | |
python-version: '3.11' | |
- name: Install and build | |
run: | | |
python -m pip install --upgrade pip setuptools | |
python -m pip install -e .[test] | |
- name: Test without optional deps | |
run: pytest | |
dev_deps_tests: | |
name: CI with dev dependencies | |
runs-on: ubuntu-latest | |
needs: [pep_and_audit, initial_tests] | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
fetch-depth: 0 | |
- name: Set up Python | |
uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0 | |
with: | |
python-version: '3.13-dev' | |
- name: Install and build | |
run: | | |
python -m pip install --upgrade pip setuptools | |
python -m pip install --extra-index-url https://pypi.anaconda.org/scientific-python-nightly-wheels/simple numpy>=0.0.dev0 --pre --upgrade | |
python -m pip install --extra-index-url https://pypi.anaconda.org/liberfa/simple pyerfa>=0.0.dev0 --pre --upgrade | |
python -m pip install --extra-index-url https://pypi.anaconda.org/astropy/simple astropy>=0.0.dev0 --pre --upgrade | |
python -m pip install -e .[test] | |
- name: Test with dev deps | |
run: pytest | |
old_deps_tests: | |
name: CI with old dependencies | |
runs-on: ubuntu-latest | |
needs: [pep_and_audit, initial_tests] | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
fetch-depth: 0 | |
- name: Set up Python | |
uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0 | |
with: | |
python-version: '3.9' | |
- name: Install and build | |
run: | | |
python -m pip install --upgrade pip setuptools | |
python -m pip install numpy==1.21.6 | |
python -m pip install astropy==5.3.4 | |
python -m pip install -e .[test] | |
- name: Test with old deps | |
run: pytest | |
other_oses: | |
name: CI in Win and OSX | |
runs-on: ${{ matrix.os }} | |
needs: [pep_and_audit, initial_tests] | |
strategy: | |
matrix: | |
os: [windows-latest, macos-latest] | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
fetch-depth: 0 | |
- name: Set up Python | |
uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0 | |
with: | |
python-version: '3.10' | |
- name: Install and build | |
run: | | |
python -m pip install --upgrade pip setuptools | |
python -m pip install -e .[test] | |
- name: Run tests | |
run: pytest | |
link_check: | |
name: Link check | |
runs-on: ubuntu-latest | |
needs: [pep_and_audit, initial_tests] | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
- name: Set up Python | |
uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0 | |
with: | |
python-version: '3.x' | |
- name: Install and build | |
run: | | |
python -m pip install --upgrade pip setuptools sphinx-astropy | |
python -m pip install -e . | |
- name: Docs link check | |
run: | | |
cd doc | |
make linkcheck | |
shell: bash |