summaryrefslogtreecommitdiffstats
path: root/.github/workflows/ci.yml
blob: 5d6d588c362a4ba287583b9e2ba3d141025d4f86 (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
name: CI

on:
  push:
    branches:
      - "main"
      - "*.*"
      - "!*backport*"
    tags:
      - "v*"
      - "!*dev*"
      - "!*pre*"
      - "!*post*"
  pull_request:
  # Allow manual runs through the web UI
  workflow_dispatch:
  schedule:
    #        ┌───────── minute (0 - 59)
    #        │ ┌───────── hour (0 - 23)
    #        │ │ ┌───────── day of the month (1 - 31)
    #        │ │ │ ┌───────── month (1 - 12 or JAN-DEC)
    #        │ │ │ │ ┌───────── day of the week (0 - 6 or SUN-SAT)
    - cron: "0 7 * * *" # Every day at 07:00 UTC

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
      libraries: |
        apt:
        - pandoc
        - graphviz
      envs: |
        - linux: py313-sphinx8
    secrets:
      CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

  test:
    needs: [core]
    uses: OpenAstronomy/github-actions-workflows/.github/workflows/tox.yml@main
    with:
      submodules: false
      libraries: |
        brew:
            - pandoc
            - graphviz
        choco:
            - pandoc
            - graphviz
        apt:
            - pandoc
            - graphviz
      envs: |
        - macos: py312-sphinx8
        - windows: py311-sphinx8
        - linux: py310-sphinx8
        - linux: py312-pydata-sphinx-theme
        - linux: py313-devdeps

  extra_tests:
    needs: [test]
    uses: OpenAstronomy/github-actions-workflows/.github/workflows/tox.yml@main
    with:
      submodules: false
      libraries: |
        apt:
            - pandoc
            - graphviz
      envs: |
        - linux: py312-pydata-sphinx-theme
        - linux: py313-devdeps

  docs:
    needs: [core]
    uses: OpenAstronomy/github-actions-workflows/.github/workflows/tox.yml@main
    with:
      submodules: false
      pytest: false
      libraries: |
        apt:
            - pandoc
            - graphviz
      envs: |
        - linux: py313-docs
        - linux: py313-linkcheck

  sdist_verify:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: "3.13"
      - 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:
    needs: [test]
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
          lfs: true
      - uses: conda-incubator/setup-miniconda@v3
        with:
          activate-environment: ablog-test
          environment-file: ablog-conda-test-env.yml
          python-version: "3.13"
      - name: Install ablog
        shell: bash -el {0}
        run: |
          pip install --no-deps --no-build-isolation .
      - name: Run test
        shell: bash -el {0}
        run: |
          conda list
          cd /tmp
          pytest -vvv -r a --pyargs ablog
          make tests

  publish:
    # Build wheels on PRs only when labelled. Releases will only be published if tagged ^v.*
    # see https://github-actions-workflows.openastronomy.org/en/latest/publish.html#upload-to-pypi
    if: |
      github.event_name != 'pull_request' ||
      (
        github.event_name == 'pull_request' &&
        contains(github.event.pull_request.labels.*.name, 'Run publish')
      )
    needs: [test, docs, sdist_verify]
    uses: OpenAstronomy/github-actions-workflows/.github/workflows/publish_pure_python.yml@main
    with:
      python-version: "3.13"
      submodules: false
    secrets:
      pypi_token: ${{ secrets.PYPI_TOKEN }}