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
|
uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
path: ~/.cache/pip
|
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: |
|
restore-keys: |
|
||||||
pip-${{ runner.os }}-${{ env.PYTHON_VERSION }}-
|
pip-${{ runner.os }}-${{ env.PYTHON_VERSION }}-
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install deps
|
||||||
run: |
|
run: |
|
||||||
python -m pip install --upgrade pip
|
python -m pip install --upgrade pip
|
||||||
pip install -r requirements.txt
|
pip install -r requirements.txt
|
||||||
|
# optional: extras/dev
|
||||||
|
if [ -f pyproject.toml ]; then pip install -e .[dev] || pip install -e . ; fi
|
||||||
|
|
||||||
- name: Set PYTHONPATH
|
- name: Set PYTHONPATH
|
||||||
run: echo "PYTHONPATH=${GITHUB_WORKSPACE}" >> $GITHUB_ENV
|
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: |
|
run: |
|
||||||
printf "KEYWARDEN_POSTGRES_DSN=%s\nKEYWARDEN_SECRET_KEY=%s\n" \
|
if [ "${ACT:-}" = "true" ]; then
|
||||||
"${{ env.TEST_POSTGRES_DSN }}" "testsecret" > .env
|
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
|
- name: Run Alembic migrations
|
||||||
env:
|
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
|
run: alembic upgrade head
|
||||||
|
|
||||||
- name: Pytest
|
- name: Pytest
|
||||||
env:
|
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: |
|
run: |
|
||||||
pytest -q tests
|
pytest -q tests
|
||||||
docker-build:
|
docker-build:
|
||||||
|
|||||||
Reference in New Issue
Block a user