Add Taskfile.yml
Some checks failed
Safety / security (push) Failing after 1s

This commit is contained in:
2025-12-28 23:02:13 -06:00
parent 6b8ce85ea2
commit 59e016815b

201
Taskfile.yml Normal file
View File

@@ -0,0 +1,201 @@
version: '3'
vars:
VERSION:
sh: grep "^version =" pyproject.toml | cut -d '"' -f 2
VCS_REF:
sh: git rev-parse --short HEAD 2>/dev/null || echo "unknown"
BUILD_DATE:
sh: date -u +"%Y-%m-%dT%H:%M:%SZ"
DOCKER_BUILD:
sh: docker buildx version >/dev/null 2>&1 && echo "docker buildx build" || echo "docker build"
DOCKER_BUILD_LOAD:
sh: docker buildx version >/dev/null 2>&1 && echo "docker buildx build --load" || echo "docker build"
IMAGE_NAME: git.quad4.io/rns-things/rns-page-node
tasks:
default:
desc: Show available tasks
cmds:
- task --list
build:
desc: Clean and build sdist and wheel
deps: [clean]
cmds:
- python3 -m build
sdist:
desc: Build source distribution
cmds:
- python3 -m build --sdist
wheel:
desc: Build wheel
cmds:
- python3 -m build --wheel
clean:
desc: Remove build artifacts
cmds:
- rm -rf build dist *.egg-info
install:
desc: Install built wheel
deps: [build]
cmds:
- pip install dist/*.whl
install-dev:
desc: Install package in development mode
cmds:
- pip install -e .
lint:
desc: Run ruff linter
cmds:
- ruff check .
format:
desc: Run ruff formatter with auto-fix
cmds:
- ruff check --fix .
check:
desc: Run all code quality checks
deps: [lint]
test:
desc: Run local integration tests
cmds:
- bash tests/run_tests.sh
docker-wheels:
desc: Build Python wheels in Docker
cmds:
- '{{.DOCKER_BUILD}} --target builder -f docker/Dockerfile.build -t rns-page-node-builder .'
- docker create --name builder-container rns-page-node-builder true
- docker cp builder-container:/src/dist ./dist
- docker rm builder-container
docker-build:
desc: Build runtime Docker image
cmds:
- >
{{.DOCKER_BUILD_LOAD}}
--build-arg VERSION={{.VERSION}}
--build-arg VCS_REF={{.VCS_REF}}
--build-arg BUILD_DATE={{.BUILD_DATE}}
-f docker/Dockerfile
-t {{.IMAGE_NAME}}:latest
-t {{.IMAGE_NAME}}:{{.VERSION}}
.
docker-run:
desc: Run runtime Docker image
cmds:
- >
docker run --rm -it
-v ./pages:/app/pages
-v ./files:/app/files
-v ./node-config:/app/node-config
{{.IMAGE_NAME}}:latest
--node-name "Page Node"
--pages-dir /app/pages
--files-dir /app/files
--identity-dir /app/node-config
--announce-interval 360
docker-build-rootless:
desc: Build rootless runtime Docker image
cmds:
- >
{{.DOCKER_BUILD_LOAD}}
--build-arg VERSION={{.VERSION}}
--build-arg VCS_REF={{.VCS_REF}}
--build-arg BUILD_DATE={{.BUILD_DATE}}
-f docker/Dockerfile.rootless
-t {{.IMAGE_NAME}}:latest-rootless
-t {{.IMAGE_NAME}}:{{.VERSION}}-rootless
.
docker-run-rootless:
desc: Run rootless runtime Docker image
cmds:
- >
docker run --rm -it
-v ./pages:/app/pages
-v ./files:/app/files
-v ./node-config:/app/node-config
{{.IMAGE_NAME}}:latest-rootless
--node-name "Page Node"
--pages-dir /app/pages
--files-dir /app/files
--identity-dir /app/node-config
--announce-interval 360
docker-test:
desc: Build and run integration tests in Docker
cmds:
- '{{.DOCKER_BUILD_LOAD}} -f docker/Dockerfile.tests -t rns-page-node-tests .'
- docker run --rm rns-page-node-tests
docker-clean:
desc: Remove Docker images and containers
cmds:
- docker rmi {{.IMAGE_NAME}}:latest {{.IMAGE_NAME}}:{{.VERSION}} 2>/dev/null || true
- docker rmi {{.IMAGE_NAME}}:latest-rootless {{.IMAGE_NAME}}:{{.VERSION}}-rootless 2>/dev/null || true
- docker rmi rns-page-node-builder rns-page-node-tests 2>/dev/null || true
run:
desc: Run rns-page-node locally
cmds:
- python3 -m rns_page_node.main
run-dev:
desc: Run rns-page-node with development settings
cmds:
- python3 -m rns_page_node.main --log-level DEBUG
venv:
desc: Create Python virtual environment
cmds:
- python3 -m venv .venv
- 'echo "Virtual environment created. Activate with: source .venv/bin/activate"'
deps-install:
desc: Install dependencies using pip
cmds:
- pip install -r requirements.txt || pip install -e .
deps-update:
desc: Update dependencies
cmds:
- pip install --upgrade -r requirements.txt || pip install --upgrade -e .
version:
desc: Show current version
cmds:
- 'echo "Version: {{.VERSION}}"'
- 'echo "VCS Ref: {{.VCS_REF}}"'
- 'echo "Build Date: {{.BUILD_DATE}}"'
setup-dirs:
desc: Create required directories for running the node
cmds:
- mkdir -p pages files node-config
nix-shell:
desc: Enter Nix development shell
cmds:
- nix develop
nix-build:
desc: Build with Nix
cmds:
- nix build
all:
desc: Run build, lint, and test
deps: [build, check, test]