|
|
|
@@ -14,7 +14,7 @@ concurrency:
|
|
|
|
|
jobs:
|
|
|
|
|
backend-tests:
|
|
|
|
|
name: Backend Tests
|
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
|
runs-on: vps
|
|
|
|
|
env:
|
|
|
|
|
SECRET_KEY: test-secret-key-for-ci-environment-32chars-minimum
|
|
|
|
|
|
|
|
|
@@ -22,7 +22,7 @@ jobs:
|
|
|
|
|
- name: Checkout repository
|
|
|
|
|
run: |
|
|
|
|
|
if [ ! -d .git ]; then
|
|
|
|
|
git clone --depth=1 "http://gitea:3000/${GITHUB_REPOSITORY}.git" .
|
|
|
|
|
git clone --depth=1 "http://100.78.131.124:3300/${GITHUB_REPOSITORY}.git" .
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
- name: Setup Python
|
|
|
|
@@ -55,32 +55,32 @@ jobs:
|
|
|
|
|
cd dashboard/backend
|
|
|
|
|
if [ "${{ steps.cache-python.outputs.cache-hit }}" = "true" ]; then
|
|
|
|
|
echo "Restoring venv from cache $CACHE_KEY..."
|
|
|
|
|
if cp -a $CACHE_DIR/venv . && [ -f venv/bin/activate ]; then
|
|
|
|
|
if cp -a $CACHE_DIR/venv . && [ -f venv/bin/activate ] && venv/bin/python -m pytest --version >/dev/null 2>&1; then
|
|
|
|
|
echo "Cache restored successfully"
|
|
|
|
|
else
|
|
|
|
|
echo "Cache corrupted, installing fresh..."
|
|
|
|
|
rm -rf venv
|
|
|
|
|
python3 -m venv venv
|
|
|
|
|
. venv/bin/activate
|
|
|
|
|
timeout 300 pip install --cache-dir=$PIP_CACHE_DIR --retries 3 --timeout 30 -r requirements.txt || \
|
|
|
|
|
timeout 300 pip install --cache-dir=$PIP_CACHE_DIR --index-url https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn -r requirements.txt || \
|
|
|
|
|
timeout 600 pip install --cache-dir=$PIP_CACHE_DIR --retries 3 --timeout 30 -r requirements.txt || \
|
|
|
|
|
timeout 600 pip install --cache-dir=$PIP_CACHE_DIR --index-url https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn -r requirements.txt || \
|
|
|
|
|
pip install -r requirements.txt
|
|
|
|
|
timeout 300 pip install --cache-dir=$PIP_CACHE_DIR --retries 3 --timeout 30 -r requirements-dev.txt || \
|
|
|
|
|
timeout 300 pip install --cache-dir=$PIP_CACHE_DIR --index-url https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn -r requirements-dev.txt || \
|
|
|
|
|
timeout 600 pip install --cache-dir=$PIP_CACHE_DIR --retries 3 --timeout 30 -r requirements-dev.txt || \
|
|
|
|
|
timeout 600 pip install --cache-dir=$PIP_CACHE_DIR --index-url https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn -r requirements-dev.txt || \
|
|
|
|
|
pip install -r requirements-dev.txt
|
|
|
|
|
timeout 300 pip install --cache-dir=$PIP_CACHE_DIR pytest-timeout pytest-cov || pip install pytest-timeout pytest-cov
|
|
|
|
|
timeout 600 pip install --cache-dir=$PIP_CACHE_DIR pytest-timeout pytest-cov || pip install pytest-timeout pytest-cov
|
|
|
|
|
fi
|
|
|
|
|
else
|
|
|
|
|
echo "Installing fresh dependencies..."
|
|
|
|
|
python3 -m venv venv
|
|
|
|
|
. venv/bin/activate
|
|
|
|
|
timeout 300 pip install --cache-dir=$PIP_CACHE_DIR --retries 3 --timeout 30 -r requirements.txt || \
|
|
|
|
|
timeout 300 pip install --cache-dir=$PIP_CACHE_DIR --index-url https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn -r requirements.txt || \
|
|
|
|
|
timeout 600 pip install --cache-dir=$PIP_CACHE_DIR --retries 3 --timeout 30 -r requirements.txt || \
|
|
|
|
|
timeout 600 pip install --cache-dir=$PIP_CACHE_DIR --index-url https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn -r requirements.txt || \
|
|
|
|
|
pip install -r requirements.txt
|
|
|
|
|
timeout 300 pip install --cache-dir=$PIP_CACHE_DIR --retries 3 --timeout 30 -r requirements-dev.txt || \
|
|
|
|
|
timeout 300 pip install --cache-dir=$PIP_CACHE_DIR --index-url https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn -r requirements-dev.txt || \
|
|
|
|
|
timeout 600 pip install --cache-dir=$PIP_CACHE_DIR --retries 3 --timeout 30 -r requirements-dev.txt || \
|
|
|
|
|
timeout 600 pip install --cache-dir=$PIP_CACHE_DIR --index-url https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn -r requirements-dev.txt || \
|
|
|
|
|
pip install -r requirements-dev.txt
|
|
|
|
|
timeout 300 pip install --cache-dir=$PIP_CACHE_DIR pytest-timeout pytest-cov || pip install pytest-timeout pytest-cov
|
|
|
|
|
timeout 600 pip install --cache-dir=$PIP_CACHE_DIR pytest-timeout pytest-cov || pip install pytest-timeout pytest-cov
|
|
|
|
|
echo "Saving venv to cache $CACHE_KEY..."
|
|
|
|
|
cp -a venv $CACHE_DIR/ || echo "Warning: cache save failed"
|
|
|
|
|
fi
|
|
|
|
@@ -89,7 +89,7 @@ jobs:
|
|
|
|
|
run: |
|
|
|
|
|
cd dashboard/backend
|
|
|
|
|
. venv/bin/activate
|
|
|
|
|
pytest tests/ -v --timeout=60 \
|
|
|
|
|
python -m pytest tests/ -v --timeout=60 \
|
|
|
|
|
--cov=. --cov-report=xml --cov-report=term \
|
|
|
|
|
--junit-xml=test-results.xml \
|
|
|
|
|
--cov-fail-under=49
|
|
|
|
@@ -102,13 +102,13 @@ jobs:
|
|
|
|
|
|
|
|
|
|
frontend-tests:
|
|
|
|
|
name: Frontend Tests
|
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
|
runs-on: vps
|
|
|
|
|
|
|
|
|
|
steps:
|
|
|
|
|
- name: Checkout repository
|
|
|
|
|
run: |
|
|
|
|
|
if [ ! -d .git ]; then
|
|
|
|
|
git clone --depth=1 "http://gitea:3000/${GITHUB_REPOSITORY}.git" .
|
|
|
|
|
git clone --depth=1 "http://100.78.131.124:3300/${GITHUB_REPOSITORY}.git" .
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
- name: Setup Node.js
|
|
|
|
@@ -170,7 +170,7 @@ jobs:
|
|
|
|
|
|
|
|
|
|
deploy:
|
|
|
|
|
name: Deploy to Production
|
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
|
runs-on: nas
|
|
|
|
|
if: always()
|
|
|
|
|
needs: [backend-tests, frontend-tests]
|
|
|
|
|
env:
|
|
|
|
@@ -242,7 +242,9 @@ jobs:
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
- name: Sync runtime compose file
|
|
|
|
|
run: cp dashboard/docker-compose.yml /nas-dashboard/docker-compose.yml
|
|
|
|
|
run: |
|
|
|
|
|
mkdir -p /nas-dashboard
|
|
|
|
|
cp dashboard/docker-compose.yml /nas-dashboard/docker-compose.yml
|
|
|
|
|
|
|
|
|
|
- name: Deploy and verify
|
|
|
|
|
run: |
|
|
|
|
|