All checks were successful
build / test (push) Successful in 2m1s
Turns out we need build and deploy in separate files to trigger at different times. Now we build on all pushes, but only deploy on tag pushes.
147 lines
5.0 KiB
YAML
147 lines
5.0 KiB
YAML
name: deploy
|
|
|
|
on:
|
|
push:
|
|
tags: ["*"]
|
|
|
|
jobs:
|
|
test:
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
VROBBLER_DATABASE_URL: sqlite:///test.db
|
|
VROBBLER_USDA_API_KEY: ${{ vars.VROBBLER_USDA_API_KEY }}
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup Python
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: "3.11"
|
|
|
|
- name: Cache pip/poetry
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: |
|
|
~/.cache/pip
|
|
~/.cache/pypoetry
|
|
key: ${{ runner.os }}-py311-${{ hashFiles('**/poetry.lock') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-py311-
|
|
|
|
- name: Install Poetry
|
|
run: |
|
|
python -m pip install --upgrade pip
|
|
pip install poetry
|
|
|
|
- name: Install deps
|
|
run: |
|
|
cp vrobbler.conf.test vrobbler.conf
|
|
poetry install --with test
|
|
|
|
- name: Pytest with coverage
|
|
run: |
|
|
poetry run pytest -n 5 --cov-report term:skip-covered --cov=vrobbler tests
|
|
|
|
- name: Notify success (ntfy)
|
|
if: success()
|
|
run: |
|
|
curl -fsS \
|
|
-H "Title: vrobbler CI success" \
|
|
-H "Priority: low" \
|
|
-H "Tags: success,vrobbler" \
|
|
-H "Actions: view, Changes, ${{ gitea.server_url }}/${{ gitea.repository }}/commit/${{ gitea.sha }}; view, Build, ${{ gitea.server_url }}/${{ gitea.repository }}/actions/runs/${{ gitea.run_id }}" \
|
|
-d "✅ Build succeeded: ${{ gitea.repository }} @ ${{ gitea.sha }}" \
|
|
https://ntfy.unbl.ink/drone
|
|
|
|
- name: Notify failure (ntfy)
|
|
if: failure()
|
|
run: |
|
|
curl -fsS \
|
|
-H "Title: vrobbler CI failure" \
|
|
-H "Priority: high" \
|
|
-H "Tags: failure,vrobbler" \
|
|
-H "Actions: view, Changes, ${{ gitea.server_url }}/${{ gitea.repository }}/commit/${{ gitea.sha }}; view, Build, ${{ gitea.server_url }}/${{ gitea.repository }}/actions/runs/${{ gitea.run_id }}" \
|
|
-d "❌ Build failed: ${{ gitea.repository }} @ ${{ gitea.sha }}" \
|
|
https://ntfy.unbl.ink/drone
|
|
|
|
build-and-deploy:
|
|
needs: [test]
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup Python
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: "3.11"
|
|
|
|
- name: Install Poetry
|
|
run: |
|
|
python -m pip install --upgrade pip
|
|
pip install poetry
|
|
|
|
- name: Write commit hash to build file
|
|
run: |
|
|
mkdir -p build_meta
|
|
echo "${{ gitea.sha }}" | cut -c1-8 > build_meta/commit.txt
|
|
|
|
- name: Build package with commit info
|
|
run: |
|
|
echo "commit = '$(echo ${{ gitea.sha }} | cut -c1-8)'" > vrobbler/_commit.py
|
|
poetry build
|
|
git checkout vrobbler/_commit.py
|
|
|
|
- name: Copy wheel to server and deploy
|
|
uses: appleboy/scp-action@v1.0.0
|
|
with:
|
|
host: vrobbler.service
|
|
username: root
|
|
key: ${{ secrets.JAIL_KEY }}
|
|
source: "dist/*.whl"
|
|
target: "/var/lib/vrobbler"
|
|
|
|
- name: Install wheel and restart services
|
|
uses: appleboy/ssh-action@v1.0.3
|
|
with:
|
|
host: vrobbler.service
|
|
username: root
|
|
key: ${{ secrets.JAIL_KEY }}
|
|
command_timeout: 2m
|
|
script: |
|
|
set -e
|
|
mkdir -p /var/lib/vrobbler
|
|
echo "${{ gitea.sha }}" | cut -c1-8 > /var/lib/vrobbler/commit.txt
|
|
pip uninstall -y vrobbler
|
|
pip install /var/lib/vrobbler/dist/*.whl
|
|
python -c "import vrobbler; print(f'vrobbler {vrobbler.__version__} installed OK')"
|
|
rm -f /var/lib/vrobbler/dist/*.whl
|
|
vrobbler migrate
|
|
vrobbler collectstatic --noinput
|
|
immortalctl restart vrobbler-celery && immortalctl restart vrobbler-celerybeat && immortalctl restart vrobbler
|
|
|
|
- name: Notify deploy success (ntfy)
|
|
if: success()
|
|
run: |
|
|
curl -fsS \
|
|
-H "Title: vrobbler deploy success" \
|
|
-H "Priority: low" \
|
|
-H "Tags: success,vrobbler,deploy" \
|
|
-H "Actions: view, View changes, ${{ gitea.server_url }}/${{ gitea.repository }}/commit/${{ gitea.sha }}; view, View build, ${{ gitea.server_url }}/${{ gitea.repository }}/actions/runs/${{ gitea.run_id }}" \
|
|
-d "🚀 Deploy succeeded: ${{ gitea.ref_name }} (${{ gitea.sha }})" \
|
|
https://ntfy.unbl.ink/drone
|
|
|
|
- name: Notify deploy failure (ntfy)
|
|
if: failure()
|
|
run: |
|
|
curl -fsS \
|
|
-H "Title: vrobbler deploy failure" \
|
|
-H "Priority: high" \
|
|
-H "Tags: failure,vrobbler,deploy" \
|
|
-H "Actions: view, View changes, ${{ gitea.server_url }}/${{ gitea.repository }}/commit/${{ gitea.sha }}; view, View build, ${{ gitea.server_url }}/${{ gitea.repository }}/actions/runs/${{ gitea.run_id }}" \
|
|
-d "💥 Deploy failed: ${{ gitea.ref_name }} (${{ gitea.sha }})" \
|
|
https://ntfy.unbl.ink/drone
|