CI / PHP 8.4 (push) Failing after 1m5s
composer.lock already pins packages that need PHP >= 8.4.1 (symfony/* v8, nesbot/carbon 3, laravel/pint), so `composer install` on the 8.2 / 8.3 CI legs has been failing since v1.0.0. Bump composer.json to "php": "^8.4", regenerate the lock platform block, drop 8.2 / 8.3 from the ci.yml matrix, and update the "PHP 8.2+" references in the docs. The Docker image was already php:8.4-apache. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JKT9p3bfP8RZesExdYCS52
106 lines
4.4 KiB
Markdown
106 lines
4.4 KiB
Markdown
# Publishing ADconsole to a Git host
|
|
|
|
How this working tree was turned into the public repository, and the checklist to
|
|
follow if you re-publish it somewhere else (a fork, a mirror, a different host).
|
|
|
|
**Canonical repository:** <https://gitea.kzbikowski.pl/kzbkowski/ADconsle>
|
|
(self-hosted Gitea). The first public tag is **`v1.0.0`**.
|
|
|
|
## 1. Placeholders — all filled for the canonical repo
|
|
|
|
If you re-publish under a different owner/host, revisit these:
|
|
|
|
| File | Was | Now / put |
|
|
|---|---|---|
|
|
| `README.md`, `docs/installation.md`, `docs/development.md` | `<your-fork-url>` in the `git clone` lines | `https://gitea.kzbikowski.pl/kzbkowski/ADconsle.git` |
|
|
| `docs/SECURITY.md` | `<SET A SECURITY CONTACT HERE>` | `mail@kzbikowski.pl` |
|
|
| `.github/ISSUE_TEMPLATE/config.yml` | `https://github.com/OWNER/REPO/...` | The repo's Gitea issue/wiki URLs |
|
|
| `LICENSE` | `2026 Kacper Żbikowski` | Copyright year + holder, if different |
|
|
| `lang/{pl,en}/pages.php` → `author.*` | `Kacper Żbikowski` | Author/maintainer shown on the in-app *About* page |
|
|
| `composer.json` | `adconsole/adconsole` | Your package name (optional; nothing depends on it) |
|
|
|
|
`tests/Feature/Pages/AboutPageTest.php` asserts the author name and
|
|
`Copyright (c) <year> <name>` — if you change `pages.php` `author`, update that
|
|
test too.
|
|
|
|
## 2. Confirm nothing sensitive is tracked
|
|
|
|
Everything below is already covered by `.gitignore` / `.dockerignore` — verify
|
|
none of it slipped in:
|
|
|
|
- `.env`, `.env.backup`, `.env.production`, `.env.*.local`
|
|
- `storage/app/panel_settings.json` and `*.migrated`
|
|
- `vendor/`, `node_modules/`, `public/build/`, `public/hot/`
|
|
- `storage/` runtime (logs, sessions, framework cache) — only the `.gitignore`
|
|
keep-files should be tracked
|
|
- `docker/compose.override.yaml`, `docker/compose.dev.override.yaml`
|
|
- `docker/data/` (production DB + storage state)
|
|
- IDE / agent dirs (`.idea/`, `.vscode/`, `.claude/`, …)
|
|
|
|
```sh
|
|
# Dry-run: what would a fresh repo add?
|
|
git init -q _probe && git --git-dir=_probe/.git --work-tree=. add -An | grep -Ei '(^add ...env$|vendor/|node_modules/|storage/(logs|framework)/.+/|panel_settings\.json)'
|
|
rm -rf _probe
|
|
# No output = clean.
|
|
```
|
|
|
|
Also grep for lab-specific values before the first push:
|
|
|
|
```sh
|
|
grep -rniE 'YOUR-DOMAIN|internal-hostname|real-ip' --exclude-dir=vendor --exclude-dir=node_modules .
|
|
```
|
|
|
|
## 3. Green build
|
|
|
|
```sh
|
|
composer install
|
|
cp .env.example .env && php artisan key:generate
|
|
php artisan migrate # against a throwaway SQLite/MySQL
|
|
php artisan test # 40+ pass (the DEPR tag is noise)
|
|
vendor/bin/pint --test # style clean
|
|
```
|
|
|
|
## 4. Create the repository
|
|
|
|
This tree started life inside an unrelated parent checkout, so it is published as
|
|
a fresh repo scoped to just this folder:
|
|
|
|
```sh
|
|
cd /path/to/adconsole
|
|
git init -b main
|
|
git add .
|
|
git status # sanity-check the file list
|
|
git commit -m "ADconsole v1.0.0"
|
|
git remote add origin https://gitea.kzbikowski.pl/kzbkowski/ADconsle.git
|
|
git push -u origin main
|
|
git tag -a v1.0.0 -m "ADconsole v1.0.0"
|
|
git push origin v1.0.0
|
|
```
|
|
|
|
## 5. On the Git host
|
|
|
|
- Set the repository **description** and topics: `active-directory`, `ldap`,
|
|
`laravel`, `ldaprecord`, `admin-panel`, `self-hosted`.
|
|
- Enable **Issues**. Point the "Question / help" contact link at the repo's
|
|
issues (Gitea has no Discussions).
|
|
- The workflows in `.github/workflows/` are read by Gitea Actions if Actions is
|
|
enabled on the instance (otherwise harmless):
|
|
- `ci.yml` — Pint + PHPUnit on PHP 8.4, on every push / PR.
|
|
- `release.yml` — on a `vX.Y.Z` tag, builds `docker/php/Dockerfile` target
|
|
`prod` and pushes `…/adconsole:{X.Y.Z, X.Y, latest}` to the instance's
|
|
container registry. Needs `packages: write`; if the built-in token can't
|
|
push, add a `REGISTRY_TOKEN` repo secret. Adjust `REGISTRY` / `IMAGE_NAME`
|
|
in the workflow (and the default in `docker/compose.yaml`) for a different
|
|
host or owner.
|
|
- Release: `git tag -a vX.Y.Z -m "ADconsole vX.Y.Z" && git push origin vX.Y.Z`
|
|
(that fires `release.yml`), then cut a **release** from the tag on the Git host
|
|
and paste the matching `docs/CHANGELOG.md` section as the notes.
|
|
|
|
## 6. First-deploy sanity (for whoever installs it)
|
|
|
|
Point them at [`installation.md`](installation.md) (bare metal) or
|
|
[`deployment.md`](deployment.md) (Docker), and
|
|
[`active-directory.md`](active-directory.md) for the service account and
|
|
delegation. [`troubleshooting.md`](troubleshooting.md) covers the usual
|
|
first-run stumbles.
|