You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,6 +11,7 @@ The format is intentionally lightweight and human-readable. Group entries by rel
11
11
- Added `contract: image-provider` plus an OpenAI-compatible `POST /v1/images/generations` path for image-capable providers
12
12
- Added a shipped Dockerfile and tag-driven release-artifacts workflow for Python distributions, GHCR images, and optional PyPI publishing
13
13
- Added public community-health and security baseline files: Code of Conduct, Security Policy, issue templates, PR template, Dependabot, and CodeQL
14
+
- Added generic onboarding helpers (`foundrygate-bootstrap`, `foundrygate-doctor`) and a publish-dry-run workflow for GHCR and Python package validation
If you want the fastest local bootstrap, use the generic helpers first:
89
+
90
+
```bash
91
+
./scripts/foundrygate-bootstrap
92
+
$EDITOR .env
93
+
./scripts/foundrygate-doctor
94
+
```
95
+
86
96
If you prefer the Linux service path instead of a manual Python run, jump to [Helper Scripts](#helper-scripts) and use `./scripts/foundrygate-install`.
87
97
88
98
If you install the project as a package, the `foundrygate` and `foundrygate-stats` console scripts are available.
@@ -94,6 +104,7 @@ If every configured provider API key is empty, FoundryGate still starts, but it
94
104
-[Architecture](./docs/ARCHITECTURE.md)
95
105
-[Integrations](./docs/INTEGRATIONS.md)
96
106
-[Onboarding](./docs/ONBOARDING.md)
107
+
-[Publishing](./docs/PUBLISHING.md)
97
108
-[Troubleshooting](./docs/TROUBLESHOOTING.md)
98
109
-[Roadmap](./docs/FOUNDRYGATE-ROADMAP.md)
99
110
@@ -641,14 +652,36 @@ python -m build
641
652
642
653
Tagged releases always build Python artifacts. PyPI publishing is wired behind the repository variable `PYPI_PUBLISH=true` plus GitHub trusted publishing for the `pypi` environment.
643
654
655
+
## Publishing
656
+
657
+
FoundryGate now has a real publish dry-run path for both Python artifacts and the container image.
658
+
659
+
GitHub workflow:
660
+
661
+
- [publish-dry-run](./.github/workflows/publish-dry-run.yml) builds the wheel and sdist, runs `twine check`, and builds the GHCR image without pushing it
662
+
- [release-artifacts](./.github/workflows/release-artifacts.yml) is still the tag-driven publish path for real releases
663
+
664
+
Local dry-run commands:
665
+
666
+
```bash
667
+
python -m pip install --upgrade build twine
668
+
python -m build
669
+
python -m twine check dist/*
670
+
docker build -t foundrygate:dry-run .
671
+
```
672
+
673
+
Use the dry run before cutting a release when Docker, packaging metadata, or release automation changed.
674
+
644
675
## Helper Scripts
645
676
646
-
The scripts in [scripts](./scripts) are optional wrappers around `systemd`, `journalctl`, and `curl`. They are most useful on Linux hosts that already use the included `systemd` unit.
677
+
The scripts in [scripts](./scripts) are optional wrappers around onboarding, `systemd`, `journalctl`, and `curl`.
647
678
648
679
Running `./scripts/foundrygate-install` also creates symlinks in `/usr/local/bin`.
649
680
650
681
| Script | What it does |
651
682
| --- | --- |
683
+
| `foundrygate-bootstrap` | Creates `.env` from `.env.example` if needed, creates a local state dir, and appends a safe local `FOUNDRYGATE_DB_PATH` if none is set |
684
+
| `foundrygate-doctor` | Checks for config/env presence, writable DB path, at least one configured provider key, and optional local health endpoints |
652
685
| `foundrygate-install` | Installs the unit file, creates `/var/lib/foundrygate`, creates helper symlinks, reloads `systemd`, and starts the service |
@@ -683,6 +716,7 @@ Security automation and review baseline:
683
716
FoundryGate includes two GitHub Actions workflows:
684
717
685
718
- [CI](./.github/workflows/ci.yml): runs Ruff plus the test matrix on Python 3.10 through 3.13
719
+
- [publish-dry-run](./.github/workflows/publish-dry-run.yml): validates Python distributions and the container build without publishing them
686
720
- [release-artifacts](./.github/workflows/release-artifacts.yml): builds Python distributions on tags, pushes container images to GHCR, and can publish to PyPI when trusted publishing is configured
687
721
- [repo-safety](./.github/workflows/repo-safety.yml): rejects accidental artifacts and secrets-like files
688
722
- [CodeQL](./.github/workflows/codeql.yml): performs repository code scanning for Python
0 commit comments