Repository navigation
60 lines (60 loc) · 2.42 KB
/
Copy pathfuse.yml
File metadata and controls
60 lines (60 loc) · 2.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
name: FUSE mount
on:
pull_request:
push:
branches: [main, work/fuse-mount-20261001]
workflow_dispatch:
permissions:
contents: read
concurrency:
group: fuse-${{ github.event.pull_request.head.repo.full_name || github.repository }}-${{ github.head_ref || github.ref_name }}
cancel-in-progress: true
jobs:
kernel:
runs-on: ubuntu-latest
timeout-minutes: 10
services:
postgres:
image: postgres:16
env:
POSTGRES_USER: msgtest
POSTGRES_PASSWORD: msgtest
POSTGRES_DB: postgres
ports:
- 5432:5432
options: >-
--health-cmd "pg_isready -U msgtest -d postgres"
--health-interval 10s
--health-timeout 5s
--health-retries 5
env:
MSG_TEST_POSTGRES_URL_TEMPLATE: postgresql://msgtest:msgtest@127.0.0.1:5432/{database}
steps:
- uses: actions/checkout@v7
- uses: actions/setup-python@v7
with:
python-version: '3.15'
allow-prereleases: true
- name: Install native FUSE and optional package
id: install
run: |
sudo apt-get update -qq
sudo env NEEDRESTART_MODE=l apt-get install -y -qq fuse3 age libpcsclite-dev swig
python -m pip install uv==0.12.20
uv sync --locked --extra dev --extra fuse --python "$(command -v python)"
test -c /dev/fuse
- name: Check FUSE implementation quality
run: |
.venv/bin/ruff check src/msg/client_mount.py tests/test_client_mount.py tests/test_mount_lifecycle.py tests/test_mount_service.py scripts/check_fuse_mount.py
.venv/bin/ruff format --check src/msg/client_mount.py tests/test_client_mount.py tests/test_mount_lifecycle.py tests/test_mount_service.py scripts/check_fuse_mount.py
- name: Verify real kernel mount, byte reads and unmount
if: ${{ !cancelled() && steps.install.outcome == 'success' }}
run: timeout --signal=TERM --kill-after=5s 90s .venv/bin/python scripts/check_fuse_mount.py
- name: Verify client contracts and real service authorization
if: ${{ !cancelled() && steps.install.outcome == 'success' }}
run: .venv/bin/python -m pytest tests/test_client_mount.py tests/test_mount_lifecycle.py tests/test_mount_service.py --junitxml=artifacts/fuse.xml
- uses: actions/upload-artifact@v7.0.1
if: always()
with:
name: fuse-acceptance
path: artifacts/fuse.xml