Updated CI.yml
This commit is contained in:
52
.github/workflows/ci.yml
vendored
52
.github/workflows/ci.yml
vendored
@@ -71,31 +71,69 @@ jobs:
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ~/.cache/pip
|
||||
key: pip-${{ runner.os }}-${{ env.PYTHON_VERSION }}-${{ hashFiles('**/requirements.txt') }}
|
||||
key: pip-${{ runner.os }}-${{ env.PYTHON_VERSION }}-${{ hashFiles('**/requirements*.txt', 'pyproject.toml') }}
|
||||
restore-keys: |
|
||||
pip-${{ runner.os }}-${{ env.PYTHON_VERSION }}-
|
||||
|
||||
- name: Install dependencies
|
||||
- name: Install deps
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -r requirements.txt
|
||||
# optional: extras/dev
|
||||
if [ -f pyproject.toml ]; then pip install -e .[dev] || pip install -e . ; fi
|
||||
|
||||
- name: Set PYTHONPATH
|
||||
run: echo "PYTHONPATH=${GITHUB_WORKSPACE}" >> $GITHUB_ENV
|
||||
|
||||
- name: Create .env for tests (optional for app runtime)
|
||||
# Gitea ACT Runner needs this for some reason.
|
||||
- name: Select Postgres host for runner
|
||||
run: |
|
||||
printf "KEYWARDEN_POSTGRES_DSN=%s\nKEYWARDEN_SECRET_KEY=%s\n" \
|
||||
"${{ env.TEST_POSTGRES_DSN }}" "testsecret" > .env
|
||||
if [ "${ACT:-}" = "true" ]; then
|
||||
echo "KEYWARDEN_POSTGRES_HOST=postgres" >> "$GITHUB_ENV" # Gitea (act_runner)
|
||||
else
|
||||
echo "KEYWARDEN_POSTGRES_HOST=127.0.0.1" >> "$GITHUB_ENV" # GitHub Actions
|
||||
fi
|
||||
|
||||
- name: Echo DB target
|
||||
run: echo "DB → ${KEYWARDEN_POSTGRES_HOST:-unset}:${{ env.KEYWARDEN_POSTGRES_PORT }}"
|
||||
|
||||
# Explicit wait (removes race on act_runner)
|
||||
- name: Wait for Postgres
|
||||
run: |
|
||||
for i in {1..60}; do
|
||||
python - <<'PY'
|
||||
import os, socket, sys
|
||||
h=os.environ.get("KEYWARDEN_POSTGRES_HOST","127.0.0.1"); p=int(os.environ.get("KEYWARDEN_POSTGRES_PORT","5432"))
|
||||
s=socket.socket(); s.settimeout(1)
|
||||
try:
|
||||
s.connect((h,p)); print("Postgres is up:", h,p); sys.exit(0)
|
||||
except Exception as e:
|
||||
print("waiting:", e); sys.exit(1)
|
||||
finally:
|
||||
s.close()
|
||||
PY
|
||||
if [ $? -eq 0 ]; then break; fi
|
||||
sleep 2
|
||||
done
|
||||
|
||||
- name: Run Alembic migrations
|
||||
env:
|
||||
KEYWARDEN_POSTGRES_DSN: ${{ env.TEST_POSTGRES_DSN }}
|
||||
KEYWARDEN_POSTGRES_USER: ${{ env.KEYWARDEN_POSTGRES_USER }}
|
||||
KEYWARDEN_POSTGRES_PASSWORD: ${{ env.KEYWARDEN_POSTGRES_PASSWORD }}
|
||||
KEYWARDEN_POSTGRES_HOST: ${{ env.KEYWARDEN_POSTGRES_HOST }}
|
||||
KEYWARDEN_POSTGRES_PORT: ${{ env.KEYWARDEN_POSTGRES_PORT }}
|
||||
KEYWARDEN_POSTGRES_DB: ${{ env.KEYWARDEN_POSTGRES_DB }}
|
||||
KEYWARDEN_POSTGRES_SSL: ${{ env.KEYWARDEN_POSTGRES_SSL }}
|
||||
run: alembic upgrade head
|
||||
|
||||
- name: Pytest
|
||||
env:
|
||||
KEYWARDEN_POSTGRES_DSN: ${{ env.TEST_POSTGRES_DSN }}
|
||||
KEYWARDEN_POSTGRES_USER: ${{ env.KEYWARDEN_POSTGRES_USER }}
|
||||
KEYWARDEN_POSTGRES_PASSWORD: ${{ env.KEYWARDEN_POSTGRES_PASSWORD }}
|
||||
KEYWARDEN_POSTGRES_HOST: ${{ env.KEYWARDEN_POSTGRES_HOST }}
|
||||
KEYWARDEN_POSTGRES_PORT: ${{ env.KEYWARDEN_POSTGRES_PORT }}
|
||||
KEYWARDEN_POSTGRES_DB: ${{ env.KEYWARDEN_POSTGRES_DB }}
|
||||
KEYWARDEN_POSTGRES_SSL: ${{ env.KEYWARDEN_POSTGRES_SSL }}
|
||||
run: |
|
||||
pytest -q tests
|
||||
docker-build:
|
||||
|
||||
Reference in New Issue
Block a user