diff options
Diffstat (limited to '')
-rw-r--r-- | .github/workflows/ci.yml | 46 | ||||
-rw-r--r-- | .github/workflows/publish.yml | 94 |
2 files changed, 106 insertions, 34 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fb34daa..ce359d8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,34 +4,21 @@ on: pull_request: paths-ignore: - '**.md' + - 'AUTHORS' jobs: - linux: + build: + runs-on: ubuntu-latest + strategy: matrix: - python-version: [ - '3.8', - '3.9', - '3.10', - '3.11', - '3.12', - ] - include: - - python-version: '3.8' - os: ubuntu-20.04 # MySQL 8.0.36 - - python-version: '3.9' - os: ubuntu-20.04 # MySQL 8.0.36 - - python-version: '3.10' - os: ubuntu-22.04 # MySQL 8.0.36 - - python-version: '3.11' - os: ubuntu-22.04 # MySQL 8.0.36 - - python-version: '3.12' - os: ubuntu-22.04 # MySQL 8.0.36 + python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"] - runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v4 + - uses: astral-sh/setup-uv@v1 + with: + version: "latest" - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v5 @@ -43,10 +30,7 @@ jobs: sudo /etc/init.d/mysql start - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -r requirements-dev.txt - pip install --no-cache-dir -e . + run: uv sync --all-extras -p ${{ matrix.python-version }} - name: Wait for MySQL connection run: | @@ -59,13 +43,7 @@ jobs: PYTEST_PASSWORD: root PYTEST_HOST: 127.0.0.1 run: | - ./setup.py test --pytest-args="--cov-report= --cov=mycli" + uv run tox -e py${{ matrix.python-version }} - - name: Lint - run: | - ./setup.py lint --branch=HEAD - - - name: Coverage - run: | - coverage combine - coverage report + - name: Run Style Checks + run: uv run tox -e style diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..368091d --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,94 @@ +name: Publish Python Package + +on: + release: + types: [created] + +permissions: + contents: read + +jobs: + test: + runs-on: ubuntu-latest + + strategy: + matrix: + python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"] + + steps: + - uses: actions/checkout@v4 + - uses: astral-sh/setup-uv@v1 + with: + version: "latest" + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v5 + 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 }} + + - name: Run Style Checks + run: uv run tox -e style + + build: + runs-on: ubuntu-latest + needs: [test] + + steps: + - uses: actions/checkout@v4 + - uses: astral-sh/setup-uv@v1 + with: + version: "latest" + + - name: Set up Python + uses: actions/setup-python@v5 + 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@v4 + 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@v4 + with: + name: python-packages + path: dist/ + - name: Publish to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 |