Files
Pygentic-AI/.github/workflows/test.yml
Francis Secada c7af645c07
Some checks failed
Bandit / bandit (push) Has been cancelled
Docker Image CI / build (3.13) (push) Has been cancelled
Tests / test (3.13) (push) Has been cancelled
fix(ci): revert to direct env vars - simpler and reliable
BREAKING: Remove custom action approach (too complex, failing)

Issue: Custom action with toJSON(secrets) failing due to:
- Special characters in SSH_PRIVATE_KEY
- Shell escaping complexity
- JSON parsing edge cases

Solution: Back to basics - direct env vars in workflow
- More verbose but 100% reliable
- No shell escaping issues
- Standard GitHub Actions pattern
- Works with all secret types

Trade-off accepted:
- Verbose: 25 env var declarations
- Reliable: No parsing, no escaping, no failures
- Maintainable: Add secrets via 'gh secret set'
- Standard: Uses GitHub's native secret injection

"Premature optimization is the root of all evil" - Knuth

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-04 16:31:49 -05:00

69 lines
2.2 KiB
YAML

name: Tests
on:
push:
branches: [main, dev_deploy]
pull_request:
branches: [main, dev_deploy]
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.13"]
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install uv
run: |
curl -LsSf https://astral.sh/uv/install.sh | sh
echo "$HOME/.cargo/bin" >> $GITHUB_PATH
- name: Install dependencies
run: |
uv sync --group test
- name: Run tests
run: |
uv run pytest --cov=src --cov-report=xml --cov-report=term
env:
PYTHONPATH: src
TESTING: "true"
SECRET_KEY: ${{ secrets.SECRET_KEY }}
DEBUG: ${{ secrets.DEBUG }}
HTTPS_ONLY: ${{ secrets.HTTPS_ONLY }}
SERVER_ENV: ${{ secrets.SERVER_ENV }}
SQL_DIALECT: ${{ secrets.SQL_DIALECT }}
LOCAL_DB_UN: ${{ secrets.LOCAL_DB_UN }}
LOCAL_DB_PW: ${{ secrets.LOCAL_DB_PW }}
LOCAL_DB_DB: ${{ secrets.LOCAL_DB_DB }}
LOCAL_DB_HOST: ${{ secrets.LOCAL_DB_HOST }}
LOCAL_DB_PORT: ${{ secrets.LOCAL_DB_PORT }}
CLOUD_DB_UN: ${{ secrets.CLOUD_DB_UN }}
CLOUD_DB_PW: ${{ secrets.CLOUD_DB_PW }}
CLOUD_DB_DB: ${{ secrets.CLOUD_DB_DB }}
CLOUD_DB_HOST: ${{ secrets.CLOUD_DB_HOST }}
CLOUD_DB_PORT: ${{ secrets.CLOUD_DB_PORT }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
OPENAI_MODEL: ${{ secrets.OPENAI_MODEL }}
TAVILY_API_KEY: ${{ secrets.TAVILY_API_KEY }}
REDDIT_CLIENT_ID: ${{ secrets.REDDIT_CLIENT_ID }}
REDDIT_CLIENT_SECRET: ${{ secrets.REDDIT_CLIENT_SECRET }}
REDDIT_USER_AGENT: ${{ secrets.REDDIT_USER_AGENT }}
REDDIT_SUBREDDIT: ${{ secrets.REDDIT_SUBREDDIT }}
REDDIT_MAX_INSIGHTS: ${{ secrets.REDDIT_MAX_INSIGHTS }}
REDDIT_MAX_INSIGHT_LENGTH: ${{ secrets.REDDIT_MAX_INSIGHT_LENGTH }}
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
file: ./coverage.xml
fail_ci_if_error: false