DroidMind
by hyperb1iss
Verified
name: DroidMind CI/CD
on:
push:
branches: [main]
tags:
- "v*" # Push events to matching v*, i.e. v1.0, v20.15.10
pull_request:
branches: [main]
workflow_dispatch: # Allow manual triggering
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: 💿 Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.13"
cache-dependency-path: "pyproject.toml"
- name: 🛠️ Set up uv
uses: astral-sh/setup-uv@v5
with:
version: "0.6.3"
- name: 📦 Install dependencies
run: uv sync
- name: 🔍 Ruff lint check
uses: astral-sh/ruff-action@v3
with:
version: latest
- name: 🧪 Run tests
run: uv run pytest
create-release:
needs: [build-and-test]
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/')
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- name: 🏷️ Create Release
uses: softprops/action-gh-release@v2
with:
name: Release ${{ github.ref_name }}
generate_release_notes: true
publish:
needs: create-release
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/')
permissions:
id-token: write # For trusted publishing
steps:
- uses: actions/checkout@v4
- name: 💿 Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.13"
- name: 🛠️ Set up uv
uses: astral-sh/setup-uv@v5
- name: 📦 Build package
run: |
uv pip install build
uv run python -m build
- name: 🚀 Publish to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
ID: p03zdsi6ol