Package for public GitHub release
Add open-source scaffolding and CI; remove Claude-specific dev notes from the published tree. - Remove CLAUDE.md from tracking (kept locally, now git-ignored). - CHANGELOG.md (Keep a Changelog; v1.0 → v1.1.1). - SECURITY.md (private vuln reporting + operator guidance). - CONTRIBUTING.md (dev setup, conventions, PR flow). - .github/: bug + feature issue templates, PR template. - .github/workflows/ci.yml: byte-compile, validate example config, docker build. - .github/workflows/release.yml: on a version tag, publish a multi-arch (amd64 + arm64) image to GHCR. - README: license/release/CI badges, prebuilt-image (GHCR) run instructions, and a corrected Python-version note (3.9–3.11; netifaces caveat). Badges and image names use an `OWNER` placeholder to replace with the GitHub namespace after the repo is created. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Report something that isn't working
|
||||
title: "[Bug] "
|
||||
labels: bug
|
||||
---
|
||||
|
||||
**Describe the bug**
|
||||
A clear description of what's wrong.
|
||||
|
||||
**To reproduce**
|
||||
Steps to reproduce the behavior:
|
||||
1. …
|
||||
2. …
|
||||
|
||||
**Expected behavior**
|
||||
What you expected to happen.
|
||||
|
||||
**Screenshots / logs**
|
||||
If applicable, add screenshots or server log output.
|
||||
|
||||
**Environment**
|
||||
- ADS-Bit version (admin header or `GET /api/config`):
|
||||
- Install method: [ ] bare metal [ ] Docker [ ] Podman
|
||||
- OS / Python version:
|
||||
- Receiver / feed (e.g. dump1090, readsb) and how it's reached:
|
||||
|
||||
**Additional context**
|
||||
Anything else that might help.
|
||||
@@ -0,0 +1,18 @@
|
||||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea or improvement
|
||||
title: "[Feature] "
|
||||
labels: enhancement
|
||||
---
|
||||
|
||||
**What problem does this solve?**
|
||||
A clear description of the need or pain point.
|
||||
|
||||
**Proposed solution**
|
||||
What you'd like to happen.
|
||||
|
||||
**Alternatives considered**
|
||||
Any other approaches you thought about.
|
||||
|
||||
**Additional context**
|
||||
Mockups, examples, or references.
|
||||
@@ -0,0 +1,19 @@
|
||||
## Summary
|
||||
|
||||
<!-- What does this PR change, and why? -->
|
||||
|
||||
## Related issues
|
||||
|
||||
<!-- e.g. Closes #123 -->
|
||||
|
||||
## How was this tested?
|
||||
|
||||
<!-- Commands run, manual steps, screenshots. For Docker changes, note that
|
||||
`docker build` succeeds. -->
|
||||
|
||||
## Checklist
|
||||
|
||||
- [ ] Server starts and the change works locally (`python3 server.py`)
|
||||
- [ ] If admin assets changed, bumped the `?v=` cache-bust token in `admin/admin.html`
|
||||
- [ ] If behavior/version changed, updated `VERSION` and `CHANGELOG.md`
|
||||
- [ ] No secrets or local config committed (`config.json` stays ignored)
|
||||
@@ -0,0 +1,30 @@
|
||||
name: CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
pull_request:
|
||||
|
||||
jobs:
|
||||
python:
|
||||
name: Python checks
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: "3.11"
|
||||
- name: Install dependencies
|
||||
run: pip install -r requirements.txt
|
||||
- name: Byte-compile server
|
||||
run: python -m compileall -q server.py
|
||||
- name: Validate example config is valid JSON
|
||||
run: python -c "import json; json.load(open('config.json.example'))"
|
||||
|
||||
docker:
|
||||
name: Docker build
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Build image
|
||||
run: docker build -t ads-bit:ci .
|
||||
@@ -0,0 +1,52 @@
|
||||
name: Release
|
||||
|
||||
# Build and publish a multi-arch image to GitHub Container Registry (GHCR)
|
||||
# whenever a version tag is pushed (e.g. v1.1.2). Lets users run a prebuilt
|
||||
# image — including on Raspberry Pi (arm64) — without building locally.
|
||||
|
||||
on:
|
||||
push:
|
||||
tags: ["v*"]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
|
||||
jobs:
|
||||
image:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Compute lowercase image name
|
||||
id: img
|
||||
run: echo "name=ghcr.io/${GITHUB_REPOSITORY,,}" >> "$GITHUB_OUTPUT"
|
||||
|
||||
- uses: docker/setup-qemu-action@v3
|
||||
- uses: docker/setup-buildx-action@v3
|
||||
|
||||
- name: Log in to GHCR
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Docker metadata (tags & labels)
|
||||
id: meta
|
||||
uses: docker/metadata-action@v5
|
||||
with:
|
||||
images: ${{ steps.img.outputs.name }}
|
||||
tags: |
|
||||
type=semver,pattern={{version}}
|
||||
type=semver,pattern={{major}}.{{minor}}
|
||||
type=raw,value=latest
|
||||
|
||||
- name: Build and push
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
context: .
|
||||
platforms: linux/amd64,linux/arm64
|
||||
push: true
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
Reference in New Issue
Block a user