Install the Firewatch dependency in CI #6
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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. |