Updates Sunpy core with package template #1
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: | ||
- 'main' | ||
- '*.*' | ||
- '!*backport*' | ||
tags: | ||
- 'v*' | ||
- '!*dev*' | ||
- '!*pre*' | ||
- '!*post*' | ||
pull_request: | ||
# Allow manual runs through the web UI | ||
workflow_dispatch: | ||
concurrency: | ||
group: ${{ github.workflow }}-${{ github.ref }} | ||
cancel-in-progress: true | ||
jobs: | ||
core: | ||
uses: OpenAstronomy/github-actions-workflows/.github/workflows/tox.yml@main | ||
with: | ||
submodules: false | ||
coverage: codecov | ||
toxdeps: tox-pypi-filter | ||
posargs: -n auto --color=yes | ||
envs: | | ||
- linux: py312 | ||
secrets: | ||
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | ||
sdist_verify: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- uses: actions/setup-python@v5 | ||
with: | ||
python-version: '3.10' | ||
- run: python -m pip install -U --user build | ||
- run: python -m build . --sdist | ||
- run: python -m pip install -U --user twine | ||
- run: python -m twine check dist/* | ||
test: | ||
needs: [core, sdist_verify] | ||
uses: OpenAstronomy/github-actions-workflows/.github/workflows/tox.yml@main | ||
with: | ||
submodules: false | ||
coverage: codecov | ||
toxdeps: tox-pypi-filter | ||
posargs: -n auto --color=yes | ||
envs: | | ||
- windows: py311 | ||
- macos: py310 | ||
- linux: py310-oldestdeps | ||
secrets: | ||
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | ||
docs: | ||
needs: [core] | ||
uses: OpenAstronomy/github-actions-workflows/.github/workflows/tox.yml@main | ||
with: | ||
default_python: '3.10' | ||
submodules: false | ||
pytest: false | ||
toxdeps: tox-pypi-filter | ||
cache-path: | | ||
docs/_build/ | ||
docs/generated/ | ||
.tox/sample_data/ | ||
cache-key: docs-${{ github.run_id }} | ||
libraries: | | ||
apt: | ||
- graphviz | ||
envs: | | ||
- linux: build_docs | ||
online: | ||
if: "!startsWith(github.event.ref, 'refs/tags/v')" | ||
needs: [docs] | ||
uses: OpenAstronomy/github-actions-workflows/.github/workflows/tox.yml@main | ||
with: | ||
default_python: '3.10' | ||
submodules: false | ||
coverage: codecov | ||
toxdeps: tox-pypi-filter | ||
envs: | | ||
- linux: build_docs-gallery | ||
pytest: false | ||
cache-path: | | ||
docs/_build/ | ||
docs/generated/ | ||
.tox/sample_data/ | ||
cache-key: docs-${{ github.run_id }} | ||
libraries: | ||
apt: | ||
- libopenjp2-7 | ||
- graphviz | ||
- linux: py312-online | ||
posargs: -n auto --dist loadgroup --color=yes | ||
secrets: | ||
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | ||
cron: | ||
if: | | ||
github.event_name == 'workflow_dispatch' || ( | ||
github.event_name == 'pull_request' && | ||
contains(github.event.pull_request.labels.*.name, 'Run cron CI') | ||
) | ||
uses: OpenAstronomy/github-actions-workflows/.github/workflows/tox.yml@main | ||
with: | ||
default_python: '3.10' | ||
submodules: false | ||
coverage: codecov | ||
toxdeps: tox-pypi-filter | ||
posargs: -n auto --color=yes | ||
envs: | | ||
- linux: base_deps | ||
- linux: py311-devdeps | ||
secrets: | ||
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | ||
sdist_verify: | ||
if: | | ||
github.event_name == 'workflow_dispatch' || ( | ||
github.event_name == 'pull_request' && | ||
contains(github.event.pull_request.labels.*.name, 'Run cron CI') | ||
) | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- uses: actions/setup-python@v5 | ||
with: | ||
python-version: '3.10' | ||
- run: python -m pip install -U --user build | ||
- run: python -m build . --sdist | ||
- run: python -m pip install -U --user twine | ||
- run: python -m twine check dist/* | ||
conda: | ||
if: | | ||
github.event_name == 'workflow_dispatch' || ( | ||
github.event_name == 'pull_request' && | ||
contains(github.event.pull_request.labels.*.name, 'Run cron CI') | ||
) | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 | ||
lfs: true | ||
- uses: conda-incubator/setup-miniconda@v3 | ||
with: | ||
activate-environment: sunpy-test | ||
environment-file: sunpy-dev-env.yml | ||
python-version: "3.11" | ||
- name: Install sunpy | ||
shell: bash -el {0} | ||
run: | | ||
pip install --no-deps --no-build-isolation . | ||
- name: Run tests | ||
shell: bash -el {0} | ||
run: | | ||
conda list | ||
cd /tmp | ||
pytest -vvv -r a --pyargs sunpy --cov-report=xml --cov=sunpy --cov-config=$GITHUB_WORKSPACE/pyproject.toml $GITHUB_WORKSPACE/docs -n auto | ||
- uses: codecov/codecov-action@v4 | ||
with: | ||
token: ${{ secrets.CODECOV_TOKEN }} | ||
files: ./coverage.xml | ||
publish: | ||
# Build wheels when pushing to any branch except main | ||
# publish.yml will only publish if tagged ^v.* | ||
if: | | ||
( | ||
github.event_name != 'pull_request' && ( | ||
github.ref_name != 'main' || | ||
github.event_name == 'workflow_dispatch' | ||
) | ||
) || ( | ||
github.event_name == 'pull_request' && | ||
contains(github.event.pull_request.labels.*.name, 'Run publish') | ||
) | ||
needs: [test, docs] | ||
uses: OpenAstronomy/github-actions-workflows/.github/workflows/publish.yml@main | ||
with: | ||
upload_to_anaconda: ${{ (github.event_name == 'schedule' || github.event_name == 'workflow_dispatch') }} | ||
anaconda_user: sunpy | ||
anaconda_package: sunpy | ||
anaconda_keep_n_latest: -1 | ||
sdist: false | ||
test_extras: 'tests' | ||
test_command: 'pytest -p no:warnings --doctest-rst -m "not mpl_image_compare" --pyargs sunpy' | ||
submodules: false | ||
targets: | | ||
- cp3{9,10,11,12}-manylinux*_x86_64 | ||
- cp3{9,10,11,12}-macosx_x86_64 | ||
- cp3{9,10,11,12}-macosx_arm64 | ||
- cp3{9,10,11,12}-win_amd64 | ||
secrets: | ||
pypi_token: ${{ secrets.pypi_token }} | ||
anaconda_token: ${{ secrets.anaconda_token }} | ||
publish_pure: | ||
needs: [publish] | ||
uses: OpenAstronomy/github-actions-workflows/.github/workflows/publish_pure_python.yml@main | ||
with: | ||
upload_to_anaconda: ${{ (github.event_name == 'schedule' || github.event_name == 'workflow_dispatch') }} | ||
anaconda_user: scientific-python-nightly-wheels | ||
anaconda_package: sunpy | ||
anaconda_keep_n_latest: -1 | ||
python-version: "3.10" | ||
test_extras: 'tests' | ||
test_command: 'pytest -p no:warnings --doctest-rst -m "not mpl_image_compare" --pyargs sunpy' | ||
submodules: false | ||
env: | | ||
SUNPY_NO_BUILD_ANA_EXTENSION: 1 | ||
secrets: | ||
pypi_token: ${{ secrets.pypi_token }} | ||
anaconda_token: ${{ secrets.anaconda_org_upload_token }} | ||
notify: | ||
if: always() && github.event_name == 'workflow_dispatch' | ||
needs: [publish_pure, online, cron, conda] | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: Cadair/matrix-notify-action@main | ||
with: | ||
matrix_token: ${{ secrets.matrix_access_token }} | ||
github_token: ${{ secrets.GITHUB_TOKEN }} | ||
homeserver: ${{ secrets.matrix_homeserver }} | ||
roomid: '!JYqfIVJjWANcHnfktY:cadair.com' | ||
ignore_pattern: '.*Load.*' | ||
summarise_success: true |