File: publish.yml

package info (click to toggle)
mycli 1.42.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky
  • size: 1,036 kB
  • sloc: python: 8,587; makefile: 10
file content (107 lines) | stat: -rw-r--r-- 2,816 bytes parent folder | download | duplicates (2)
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
name: Publish Python Package

on:
  release:
    types: [created]

permissions:
  contents: read

jobs:
  docs:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1

    - name: Require release changelog form
      run: |
        if grep -q TBD changelog.md; then false; fi

  test:
    runs-on: ubuntu-latest
    needs: [docs]
    continue-on-error: true

    strategy:
      matrix:
        python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]

    steps:
    - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
    - uses: astral-sh/setup-uv@681c641aba71e4a1c380be3ab5e12ad51f415867 # v7.1.6
      with:
        version: "latest"

    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
      with:
        python-version: ${{ matrix.python-version }}

    - name: Start MySQL
      run: |
        sudo /etc/init.d/mysql start

    - name: Install dependencies
      run: uv sync --all-extras -p ${{ matrix.python-version }}

    - name: Wait for MySQL connection
      run: |
        while ! mysqladmin ping --host=localhost --port=3306 --user=root --password=root --silent; do
          sleep 5
        done

    - name: Pytest / behave
      env:
        PYTEST_PASSWORD: root
        PYTEST_HOST: 127.0.0.1
      run: |
        uv run tox -e py${{ matrix.python-version }}

      # arguably this should be made identical to CI for PRs
    - name: Run Style Checks
      run: uv run tox -e style

  build:
    runs-on: ubuntu-latest
    needs: [test]

    steps:
    - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
    - uses: astral-sh/setup-uv@681c641aba71e4a1c380be3ab5e12ad51f415867 # v7.1.6
      with:
        version: "latest"

    - name: Set up Python
      uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
      with:
        python-version: '3.13'

    - name: Install dependencies
      run: uv sync --all-extras -p 3.13

    - name: Build
      run: uv build

    - name: Store the distribution packages
      uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
      with:
        name: python-packages
        path: dist/

  publish:
    name: Publish to PyPI
    runs-on: ubuntu-latest
    if: startsWith(github.ref, 'refs/tags/')
    needs: [build]
    environment: release
    permissions:
      id-token: write
    steps:
    - name: Download distribution packages
      uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
      with:
        name: python-packages
        path: dist/
    - name: Publish to PyPI
      uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # v1.13.0