File: main.yml

package info (click to toggle)
twine 6.2.0-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 836 kB
  • sloc: python: 4,372; makefile: 23; sh: 6
file content (142 lines) | stat: -rw-r--r-- 3,803 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
name: Main

on:
  push:
    branches:
      - main
  pull_request:
  schedule:
    - cron: "0 0 * * *" # daily

concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
  cancel-in-progress: true

env:
  FORCE_COLOR: "1"
  TOX_TESTENV_PASSENV: "FORCE_COLOR"
  MIN_PYTHON_VERSION: "3.9"
  DEFAULT_PYTHON_VERSION: "3.11"

permissions:
  contents: read

jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v5.0.0
        with:
          persist-credentials: false
      - uses: actions/setup-python@v5.6.0
        with:
          python-version: ${{ env.DEFAULT_PYTHON_VERSION }}
      - name: Install dependencies
        run: python -m pip install tox
      - name: Run linting
        run: python -m tox -e lint

  test:
    strategy:
      matrix:
        python-version:
          - "3.9"
          - "3.10"
          - "3.11"
          - "3.12"
          - "3.13"
        platform:
          - ubuntu-latest
          - macos-latest
          - windows-latest
        tox-environment:
          - py
        include:
          # Test with the oldest supported ``packaging`` version.
          - platform: ubuntu-latest
            python-version: "3.9"
            tox-environment: py-packaging240
    runs-on: ${{ matrix.platform }}
    steps:
      - uses: actions/checkout@v5.0.0
        with:
          persist-credentials: false
      - uses: actions/setup-python@v5.6.0
        with:
          python-version: ${{ matrix.python-version }}
      - name: Install dependencies
        run: python -m pip install tox
      - name: Run type-checking
        run: python -m tox -e types
      - name: Run tests
        run: python -m tox -e ${{ matrix.tox-environment }}

  # Because the tests can be flaky, they shouldn't be required for merge, but
  # it's still helpful to run them on PRs. See:
  # https://github.com/pypa/twine/issues/684#issuecomment-703150619
  integration:
    # Only run on Ubuntu because most of the tests are skipped on Windows
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v5.0.0
        with:
          persist-credentials: false
      - uses: actions/setup-python@v5.6.0
        with:
          python-version: ${{ env.MIN_PYTHON_VERSION }}
      - name: Install dependencies
        run: python -m pip install tox
      - name: Run tests
        run: python -m tox -e integration

  docs:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v5.0.0
        with:
          persist-credentials: false
      - uses: actions/setup-python@v5.6.0
        with:
          python-version: ${{ env.MIN_PYTHON_VERSION }}
      - name: Install dependencies
        run: python -m pip install tox
      - name: Build docs
        run: python -m tox -e docs

  # https://github.com/marketplace/actions/alls-green#why
  check:  # This job does nothing and is only used for the branch protection
    if: always()

    needs:
      - lint
      - test
      - integration
      - docs

    runs-on: ubuntu-latest

    steps:
    - name: Decide whether the needed jobs succeeded or failed
      uses: re-actors/alls-green@release/v1
      with:
        allowed-failures: integration  # can be flaky
        jobs: ${{ toJSON(needs) }}

  release:
    needs:
      - check
    if: github.event_name == 'push' && contains(github.ref, 'refs/tags/')
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v5.0.0
        with:
          persist-credentials: false
      - uses: actions/setup-python@v5.6.0
        with:
          python-version: ${{ env.MIN_PYTHON_VERSION }}
      - name: Install dependencies
        run: python -m pip install tox
      - name: Release
        run: tox -e release
        env:
          TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }}