bugfix/SW-4957 codex fails due to pkg resources dependency of markdown in octo print #83
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |