Skip to content

bugfix/SW-4957 codex fails due to pkg resources dependency of markdown in octo print #83

bugfix/SW-4957 codex fails due to pkg resources dependency of markdown in octo print

bugfix/SW-4957 codex fails due to pkg resources dependency of markdown in octo print #83

Workflow file for this run

name: Build
on:
push:
pull_request:
release:
types: [published]
workflow_dispatch:
jobs:
build:
name: 🔨 Build distribution
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: 🏗 Set up Python "3.10"
uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: 🏗 Install build dependencies
run: |
python -m pip install wheel --user
- name: 🔨 Build a binary wheel and a source tarball
run: |
python setup.py sdist bdist_wheel
- name: ⬆ Upload build result
uses: actions/upload-artifact@v4
with:
name: dist
path: dist
pre-commit:
name: 🧹 Pre-commit
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: 🏗 Set up Python "3.10"
uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: 🏗 Set up dev dependencies
run: |
pip install -e .[develop]
# TEMPORARY DISABLED to avoid log spam
#- name: 🚀 Run pre-commit
# run: |
# pre-commit run --all-files --show-diff-on-failure
test-unit:
name: 🧪 Unit tests
strategy:
matrix:
python: ["3.10", "3.13"]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: 🏗 Set up Python ${{ matrix.python }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python }}
- name: Fix Versioneer Compatibility
run: |
python -m pip install --upgrade pip
python -m pip install "setuptools<71.0.0" "packaging<22.0"
- name: 🏗 Set up test dependencies
run: |
pip install -e .[develop]
- name: 🚀 Run test suite
env:
PYTEST_DISABLE_PLUGIN_AUTOLOAD: "1"
PYTHONWARNINGS: default
run: |
pytest -p pytest_doctest_custom
test-install:
name: 🧪 Installation tests
needs: build
strategy:
matrix:
python: ["3.10", "3.13"]
installable: ["wheel", "sdist"]
runs-on: ubuntu-latest
steps:
- name: ⬇ Download build result
uses: actions/download-artifact@v4
with:
name: dist
path: dist
- name: 🏗 Set up Python ${{ matrix.python }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python }}
- name: 🚀 Install wheel
if: matrix.installable == 'wheel'
run: |
# Verify the file exists before attempting install
ls -R dist/
pip install dist/octoprint-*.whl
- name: 🚀 Install source tarball
if: matrix.installable == 'sdist'
run: |
# Verify the file exists before attempting install
ls -R dist/
pip install dist/octoprint-*.tar.gz
test-e2e:
name: 🧪 E2E tests
needs: build
runs-on: ubuntu-latest
steps:
- name: ⬇ Checkout code
uses: actions/checkout@v4
- name: ⬇ Download build result
uses: actions/download-artifact@v4
with:
name: dist
path: dist
- name: 🏗 Set up Python "3.10"
uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: 🚀 Install wheel
run: |
ls -R dist/
pip install --upgrade pip setuptools
# Force reinstall to ensure your NEW pins in setup.py are actually applied
pip install --force-reinstall dist/octoprint-*.whl
- name: 🏗 Create base config for test server
run: |
mkdir e2econfig
cp -r .github/fixtures/with_acl/* e2econfig
- name: 🚀 Run Cypress
uses: cypress-io/github-action@v6
with:
working-directory: tests/cypress
browser: chrome
start: "octoprint -b ${{ github.workspace }}/e2econfig serve --host 127.0.0.1 --port 5000"
wait-on: "http://127.0.0.1:5000/online.txt"
- name: ⬆ Upload screenshots
uses: actions/upload-artifact@v4
if: failure()
with:
name: cypress-screenshots
path: tests/cypress/screenshots
- name: ⬆ Upload videos
uses: actions/upload-artifact@v4
if: always()
with:
name: cypress-videos
path: tests/cypress/videos
publish-on-testpypi:
name: 📦 Publish on TestPyPI
if: github.event_name == 'release'
needs:
- pre-commit
- test-unit
- test-install
- test-e2e
runs-on: ubuntu-latest
steps:
- name: ⬇ Download build result
uses: actions/download-artifact@v4
with:
name: dist
path: dist
- name: 📦 Publish to index
uses: pypa/gh-action-pypi-publish@master
continue-on-error: true
with:
password: ${{ secrets.testpypi_password }}
repository_url: https://test.pypi.org/legacy/
publish-on-pypi:
name: 📦 Publish tagged releases to PyPI
if: github.event_name == 'release'
needs: publish-on-testpypi
runs-on: ubuntu-latest
steps:
- name: ⬇ Download build result
uses: actions/download-artifact@v4
with:
name: dist
path: dist
- name: 📦 Publish to index
uses: pypa/gh-action-pypi-publish@master
with:
password: ${{ secrets.pypi_password }}
notify-custopizer-build:
name: 📧 Notify OctoPi-UpToDate
if: github.event_name == 'release'
needs: publish-on-pypi
runs-on: ubuntu-latest
steps:
- name: 👀 Determine version
run: |
OCTOPRINT_VERSION=$(echo $GITHUB_REF | cut -d/ -f3)
echo "OCTOPRINT_VERSION=$OCTOPRINT_VERSION" >> $GITHUB_ENV
- name: 🚀 Repository Dispatch
uses: peter-evans/repository-dispatch@v1
with:
token: ${{ secrets.REPODISPATCH_TOKEN }}
repository: OctoPrint/OctoPi-UpToDate
event-type: octoprint_release
client-payload: '{"version": "${{ env.OCTOPRINT_VERSION }}"}'
# debug-e2e-local:
# runs-on: ubuntu-22.04
# steps:
# - uses: actions/checkout@v4
#
# # COMMENT OUT OR REMOVE THIS BLOCK
# # - name: 🏗 Set up Python "3.10"
# # uses: actions/setup-python@v5
# # with:
# # python-version: "3.10"
#
# - name: 🔧 Prepare System Dependencies (Python + Cypress)
# run: |
# apt-get update
#
# # 1. Python Build Dependencies
# apt-get install -y python3-pip python3-venv python3-dev build-essential
#
# # 2. Cypress & Browser Dependencies (Xvfb, GTK, etc.)
# apt-get install -y xvfb libgtk-3-0 libgbm-dev libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2 libxtst6 xauth
#
# # Alias python3
# if ! command -v python &> /dev/null; then
# ln -s /usr/bin/python3 /usr/bin/python
# fi
# python --version
#
# # --- BUILD PHASE ---
# - name: 🔨 Build Wheel Locally
# run: |
# # Use user install to avoid permission issues in act, or root is fine
# pip install --upgrade pip build
# python -m build --wheel --outdir dist/
#
# # --- INSTALL PHASE ---
# - name: 🚀 Install OctoPrint and Dependencies
# run: |
# pip install --upgrade pip
# pip install setuptools packaging
# # Force reinstall to overwrite any cached versions
# pip install --ignore-installed --force-reinstall dist/octoprint-*.whl
#
# # --- DEBUG PHASE ---
# - name: 🕵️ DEBUG - Verify Code Content
# run: |
# echo "🔎 Checking installed PluginAssetResolver..."
# # Get the correct site-packages path for the current python
# SITE_PACKAGES=$(python -c "import site; print(site.getsitepackages()[0])")
# FLASK_FILE="$SITE_PACKAGES/octoprint/server/util/flask.py"
#
# echo "Target File: $FLASK_FILE"
#
# # We look for the TAG loop logic we wrote
# if grep -q "octoprint_plugin_identifier" "$FLASK_FILE"; then
# echo "✅ PATCH FOUND: flask.py has the correct logic."
# # Optional: Print the context to be 100% sure
# grep -C 2 "octoprint_plugin_identifier" "$FLASK_FILE"
# else
# echo "❌ PATCH MISSING: flask.py is running old code!"
# echo "--- DUMPING FILE CONTENT ---"
# cat "$FLASK_FILE"
# exit 1
# fi
#
# - name: ⚙️ Configure OctoPrint (Disable Wizard & ACL)
# run: |
# # 1. Ensure the config directory exists
# mkdir -p ${{ github.workspace }}/e2econfig
#
# # 2. Append the First Run Wizard disable flag to config.yaml
# # We use '>>' to append or create the file
# echo "server:" >> ${{ github.workspace }}/e2econfig/config.yaml
# echo " firstRunWizard: false" >> ${{ github.workspace }}/e2econfig/config.yaml
# echo " onlineCheck: false" >> ${{ github.workspace }}/e2econfig/config.yaml
#
# # 3. Verify content
# cat ${{ github.workspace }}/e2econfig/config.yaml
#
# # --- TEST PHASE ---
# - name: 🧪 Run Cypress
# uses: cypress-io/github-action@v6
# with:
# working-directory: tests/cypress
# # Start server with the config path derived from github.workspace
# start: octoprint -b ${{ github.workspace }}/e2econfig serve --iknowwhatimdoing --host 127.0.0.1 --port 5000
# wait-on: 'http://127.0.0.1:5000/online.txt'
# wait-on-timeout: 60