Skip to content

Install the Firewatch dependency in CI #6

Install the Firewatch dependency in CI

Install the Firewatch dependency in CI #6

Workflow file for this run

name: Source and package checks
on:
push:
branches: [main, 'release/**']
pull_request:
workflow_dispatch:
permissions:
contents: read
concurrency:
group: source-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
source:
runs-on: ubuntu-24.04
timeout-minutes: 30
env:
QT_QPA_PLATFORM: offscreen
PYTHONDONTWRITEBYTECODE: '1'
steps:
- uses: actions/checkout@v4
- name: Install source and package test dependencies
run: |
sudo apt-get update
sudo apt-get install -y debhelper dh-python devscripts fakeroot python3 python3-yaml python3-pyqt6 python3-dbus python3-psutil shellcheck desktop-file-utils bubblewrap ffmpeg
- name: Test behavior
run: make test
- name: Validate source syntax and desktop entries
run: |
python3 - <<'PY'
import ast, json, pathlib, subprocess
files = subprocess.check_output(['git', 'ls-files', '-z']).split(b'\0')
for name in filter(None, files):
p = pathlib.Path(name.decode())
if not p.is_file():
continue
try:
text = p.read_text()
except UnicodeError:
continue
first = text.splitlines()[0] if text.splitlines() else ''
if p.suffix == '.py' or first.startswith('#!') and 'python' in first:
ast.parse(text, filename=str(p))
if p.suffix == '.json':
json.loads(text)
if p.suffix == '.desktop' and ('applications' in p.parts or 'autostart' in p.parts):
subprocess.run(['desktop-file-validate', str(p)], check=True)
PY
git diff --check
- name: Build unsigned candidate packages
run: make packages
- uses: actions/upload-artifact@v4
with:
name: unsigned-candidate-packages
path: build/*.deb
retention-days: 14
# The signed release is built, tested in installed VMs, and published from the
# authorized Linux publisher. A tag must not rebuild and overwrite the tested
# ISO or deploy an unrelated Worker. See RELEASE-4.0.0.md.