From 5a19951c56f1268a5dc4772a0d4a060b2ec4d3fe Mon Sep 17 00:00:00 2001 From: aitbc1 Date: Fri, 27 Mar 2026 13:21:46 +0100 Subject: [PATCH] fix: resolve poetry PATH issues with full path fallback PROGRESS: Poetry installed via pipx but not in PATH during workflow execution Issue: 'poetry: command not found' despite pipx installation Root cause: PATH not updated in workflow execution context Solution: Use full poetry path as fallback + PATH export Changes: - Add /root/.local/bin to PATH in workflows - Use full poetry path as fallback: /root/.local/share/pipx/venvs/poetry/bin/poetry - Install poetry on gitea-runner server for system availability - Add path detection and fallback logic - Maintain both PATH and full path approaches Updated workflows: - audit.yml: Poetry path resolution + dependency installation - fix.yml: Poetry path resolution + dependency installation + safety - security-scanning.yml: Poetry path resolution + dependency installation + security Expected results: - Poetry found via PATH or full path fallback - Project dependencies installed successfully - Security tools working in project venv - All workflows completing successfully - Complete PEP 668 compliance maintained This should resolve the 'command not found' issue and enable proper poetry execution for dependency management. --- .gitea/workflows/audit.yml | 20 +++++++++++++++----- .gitea/workflows/fix.yml | 20 +++++++++++++++----- .gitea/workflows/security-scanning.yml | 20 +++++++++++++++----- 3 files changed, 45 insertions(+), 15 deletions(-) diff --git a/.gitea/workflows/audit.yml b/.gitea/workflows/audit.yml index 53b848da..2b0e1269 100644 --- a/.gitea/workflows/audit.yml +++ b/.gitea/workflows/audit.yml @@ -56,13 +56,23 @@ jobs: python3 -m pipx ensurepath fi - echo "=== POETRY INSTALLATION (via pipx) ===" - # Use pipx to install poetry (manages its own venv) + echo "=== POETRY SETUP ===" + # Add poetry to PATH and install if needed + export PATH="$PATH:/root/.local/bin" if ! command -v poetry >/dev/null 2>&1; then echo "Installing poetry with pipx..." pipx install poetry + export PATH="$PATH:/root/.local/bin" else - echo "Poetry already available" + echo "Poetry already available at $(which poetry)" + fi + + # Use full path as fallback + POETRY_CMD="/root/.local/share/pipx/venvs/poetry/bin/poetry" + if [ -f "$POETRY_CMD" ]; then + echo "Using poetry at: $POETRY_CMD" + else + POETRY_CMD="poetry" fi echo "=== PROJECT VIRTUAL ENVIRONMENT ===" @@ -75,9 +85,9 @@ jobs: echo "Pip in venv: $(pip --version)" echo "=== PYTHON DEPENDENCIES ===" - # Use poetry (installed via pipx) to install project dependencies + # Use poetry to install project dependencies echo "Installing project dependencies with poetry..." - poetry install + $POETRY_CMD install echo "✅ Python dependencies installed!" else diff --git a/.gitea/workflows/fix.yml b/.gitea/workflows/fix.yml index b69a5213..baf7bd9f 100644 --- a/.gitea/workflows/fix.yml +++ b/.gitea/workflows/fix.yml @@ -54,13 +54,23 @@ jobs: python3 -m pipx ensurepath fi - echo "=== POETRY INSTALLATION (via pipx) ===" - # Use pipx to install poetry (manages its own venv) + echo "=== POETRY SETUP ===" + # Add poetry to PATH and install if needed + export PATH="$PATH:/root/.local/bin" if ! command -v poetry >/dev/null 2>&1; then echo "Installing poetry with pipx..." pipx install poetry + export PATH="$PATH:/root/.local/bin" else - echo "Poetry already available" + echo "Poetry already available at $(which poetry)" + fi + + # Use full path as fallback + POETRY_CMD="/root/.local/share/pipx/venvs/poetry/bin/poetry" + if [ -f "$POETRY_CMD" ]; then + echo "Using poetry at: $POETRY_CMD" + else + POETRY_CMD="poetry" fi echo "=== PROJECT VIRTUAL ENVIRONMENT ===" @@ -73,9 +83,9 @@ jobs: echo "Pip in venv: $(pip --version)" echo "=== PYTHON DEPENDENCIES ===" - # Use poetry (installed via pipx) to install project dependencies + # Use poetry to install project dependencies echo "Installing project dependencies with poetry..." - poetry install + $POETRY_CMD install echo "✅ Python dependencies installed!" echo "=== SECURITY FIXES ===" diff --git a/.gitea/workflows/security-scanning.yml b/.gitea/workflows/security-scanning.yml index 257b3200..f167c3ad 100644 --- a/.gitea/workflows/security-scanning.yml +++ b/.gitea/workflows/security-scanning.yml @@ -54,13 +54,23 @@ jobs: python3 -m pipx ensurepath fi - echo "=== POETRY INSTALLATION (via pipx) ===" - # Use pipx to install poetry (manages its own venv) + echo "=== POETRY SETUP ===" + # Add poetry to PATH and install if needed + export PATH="$PATH:/root/.local/bin" if ! command -v poetry >/dev/null 2>&1; then echo "Installing poetry with pipx..." pipx install poetry + export PATH="$PATH:/root/.local/bin" else - echo "Poetry already available" + echo "Poetry already available at $(which poetry)" + fi + + # Use full path as fallback + POETRY_CMD="/root/.local/share/pipx/venvs/poetry/bin/poetry" + if [ -f "$POETRY_CMD" ]; then + echo "Using poetry at: $POETRY_CMD" + else + POETRY_CMD="poetry" fi echo "=== PROJECT VIRTUAL ENVIRONMENT ===" @@ -73,9 +83,9 @@ jobs: echo "Pip in venv: $(pip --version)" echo "=== PYTHON DEPENDENCIES ===" - # Use poetry (installed via pipx) to install project dependencies + # Use poetry to install project dependencies echo "Installing project dependencies with poetry..." - poetry install + $POETRY_CMD install echo "✅ Running security scan..." venv/bin/pip install safety bandit