File: build.yml

package info (click to toggle)
linkchecker 10.6.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 3,132 kB
  • sloc: python: 13,154; makefile: 134; sh: 71; xml: 36; sql: 20; javascript: 19; php: 2
file content (177 lines) | stat: -rw-r--r-- 4,706 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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
# NB: this name is used in the status badge, where we want to see "build: passing"
name: build
permissions:
  contents: read

on:
  push:
    branches:
      - master
  pull_request:
    branches:
      - master
  workflow_dispatch:     # allow manual triggering from GitHub UI
  schedule:
    - cron: "0 5 * * 6"  # 5:00 UTC every Saturday

jobs:
  build:
    name: Python ${{ matrix.python-version }}
    runs-on: ubuntu-latest

    strategy:
      matrix:
        python-version:
          - "3.10"
          - "3.11"
          - "3.12"
          - "3.13"
          - "3.14"
        toxenv: [py]
        include:
          - python-version: "3.9"
            toxenv: minreqs

    services:
      httpbin:
        image: kennethreitz/httpbin
        ports:
          - 8080:80

    steps:
      - name: Install OS dependencies
        run: |
          sudo apt-get update
          sudo apt-get install -y geoip-database libgeoip-dev gettext

      - name: Git clone
        uses: actions/checkout@v4
        with:
          show-progress: false

      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v5
        with:
          python-version: "${{ matrix.python-version }}"
          allow-prereleases: true

      - name: Pip cache
        uses: actions/cache@v4
        with:
          path: ~/.cache/pip
          key: ${{ runner.os }}-pip-${{ matrix.python-version }}-${{ hashFiles('tox.ini', 'pyproject.toml') }}
          restore-keys: |
            ${{ runner.os }}-pip-${{ matrix.python-version }}-
            ${{ runner.os }}-pip-

      - name: Install Python dependencies
        # coverage is required by coverallsapp/github-action
        run: |
          python -m pip install -U pip
          python -m pip install -U hatchling hatch-vcs polib
          python -m pip install -U tox coverage

      - name: Run tests
        run: |
            python -m hatchling build -t sdist --hooks-only
            python -m tox -e ${{ matrix.toxenv }}-geoip

      - name: Report to coveralls
        uses: coverallsapp/github-action@f350da2c033043742f89e8c0b7b5145a1616da6d  # v2.1.2
        with:
          parallel: true
          flag-name: run-${{ matrix.python-version }}

  finish:
    needs: build
    runs-on: ubuntu-latest
    steps:
      - name: Close coveralls parallel build
        uses: coverallsapp/github-action@f350da2c033043742f89e8c0b7b5145a1616da6d  # v2.1.2
        with:
          parallel-finished: true

  docs:
    # there's some overlap with publish-pages.yml, but this one runs on pull
    # requests, doesn't publish, and runs more doc checks
    name: docs
    runs-on: ubuntu-latest

    steps:
      - name: Git clone
        uses: actions/checkout@v4
        with:
          show-progress: false

      - name: Install Ubuntu packages
        run: |
          sudo apt-get install -y graphviz mandoc

      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: "3.x"

      - name: Pip cache
        uses: actions/cache@v4
        with:
          path: ~/.cache/pip
          key: ${{ runner.os }}-pip-docs-${{ hashFiles('tox.ini') }}
          restore-keys: |
            ${{ runner.os }}-pip-docs-
            ${{ runner.os }}-pip-

      - name: Install Python packages
        run: |
          pip install -U dnspython beautifulsoup4 requests \
            hatchling hatch-vcs sphinx sphinx-epytext \
            sphinx-intl sphinx-rtd-theme sphinx-sitemap

      - name: Build
        run: |
          python3 -m hatchling build -t sdist --hooks-only
          make -C doc html
          make -C doc locale
          make -C doc man
          make -C doc check

  lint:
    name: ${{ matrix.toxenv }}
    runs-on: ubuntu-latest

    strategy:
      matrix:
        toxenv:
          - flake8
          - check-python-versions
          - pylint
          - yamllint

    steps:
      - name: Git clone
        uses: actions/checkout@v4
        with:
          show-progress: false

      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: "3.x"

      - name: Pip cache
        uses: actions/cache@v4
        with:
          path: ~/.cache/pip
          key: ${{ runner.os }}-pip-${{ matrix.toxenv }}-${{ hashFiles('tox.ini') }}
          restore-keys: |
            ${{ runner.os }}-pip-${{ matrix.toxenv }}-
            ${{ runner.os }}-pip-

      - name: Install dependencies
        run: |
          python -m pip install -U pip
          python -m pip install -U hatchling hatch-vcs polib
          python -m pip install -U tox

      - name: Run ${{ matrix.toxenv }}
        run: python -m tox -e ${{ matrix.toxenv }}