Skip to content

Commit ea760cf

Browse files
committed
Update README for new repo layout and build workflow
- Document new conf/, images/, src/, and docker/ structure - Update paths to joomengine.sh and generated artifacts - Add FPM-Alpine variant references - Refresh usage examples and tagging samples - Align CI, flags, and schedule documentation - Regenerate manifest metadata
1 parent 96e6565 commit ea760cf

File tree

4 files changed

+221
-186
lines changed

4 files changed

+221
-186
lines changed

README.md

Lines changed: 67 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# Joomla Component Builder Official Docker Images
1+
# Joomla Component Builder - Official Docker Images
22

3-
[![JoomEngine Automated Build & Version Tracking](https://github.com/octoleo/joomengine/actions/workflows/joomengine.yml/badge.svg?branch=master)](https://github.com/octoleo/joomengine/actions/workflows/joomengine.yml)
3+
[![JoomEngine - Automated Build & Version Tracking](https://github.com/octoleo/joomengine/actions/workflows/joomengine.yml/badge.svg?branch=master)](https://github.com/octoleo/joomengine/actions/workflows/joomengine.yml)
44

55
This repository contains the **official Docker image build system** for
66
**Joomla Component Builder (JCB)**.
@@ -10,7 +10,7 @@ Joomla Component Builder Docker images across supported:
1010

1111
- Joomla versions
1212
- PHP versions
13-
- Runtime variants (Apache / FPM)
13+
- Runtime variants (Apache / FPM / FPM-ALPINE)
1414
- Stable and prerelease channels
1515

1616
All images are **generated, versioned, and published automatically** from
@@ -36,7 +36,7 @@ authoritative upstream release data.
3636
- A place to hand-edit image definitions
3737
- A CI script that hides build logic in YAML
3838

39-
> **All build logic lives in `joomengine.sh`.**
39+
> **All build logic lives in `src/bin/joomengine.sh`.**
4040
> CI only authenticates, runs it, and commits the results.
4141
4242
---
@@ -51,11 +51,11 @@ You can pull images directly, for example:
5151

5252
```bash
5353
docker pull octoleo/joomengine:latest
54-
docker pull octoleo/joomengine:6.5.7
55-
docker pull octoleo/joomengine:6.5.7-php8.2-apache
54+
docker pull octoleo/joomengine:6.1.3
55+
docker pull octoleo/joomengine:6.1.3-php8.3-apache
5656
````
5757

58-
[Docker details ->](https://github.com/octoleo/joomengine/blob/master/DOCKER.md)
58+
[Docker details ->](https://github.com/octoleo/joomengine/blob/master/docker/README.md)
5959

6060
---
6161

@@ -64,7 +64,7 @@ docker pull octoleo/joomengine:6.5.7-php8.2-apache
6464
Image generation is driven entirely by the script:
6565

6666
```
67-
./joomengine.sh
67+
./src/bin/joomengine.sh
6868
```
6969
7070
At a high level, the build engine performs the following steps:
@@ -79,18 +79,18 @@ At a high level, the build engine performs the following steps:
7979
8080
* Joomla major versions
8181
* Supported PHP versions (per Joomla)
82-
* Runtime variants (`apache`, `fpm`)
82+
* Runtime variants (`apache`, `fpm`, `fpm-alpine`)
8383
8484
3. **Generates build contexts**
8585
86-
* Creates versioned directory trees under `build/`
86+
* Creates versioned directory trees under `images/`
8787
* Generates Dockerfiles from templates
8888
* Injects release metadata as build arguments
8989
* Copies and configures the Docker entrypoint
9090
9191
4. **Tracks build state**
9292
93-
* Records processed builds in `hashes.txt`
93+
* Records processed builds in `conf/hashes.txt`
9494
* Prevents rebuilding identical release+PHP+variant combinations
9595
9696
5. **Calculates tag leadership**
@@ -102,7 +102,7 @@ At a high level, the build engine performs the following steps:
102102
103103
6. **Emits a build manifest**
104104
105-
* Outputs a machine-readable NDJSON manifest (`manifest.ndjson`)
105+
* Outputs a machine-readable NDJSON manifest (`conf/manifest.ndjson`)
106106
* Each line describes exactly one buildable image and its tags
107107
108108
7. **Builds and publishes images**
@@ -126,7 +126,7 @@ This repository follows a **strict, predictable tagging policy**.
126126
Example:
127127
128128
```
129-
6.5.7-php8.2-apache
129+
6.1.3-php8.3-apache
130130
```
131131
132132
---
@@ -195,15 +195,15 @@ Prereleases are tagged **without polluting stable tags**.
195195
Examples:
196196
197197
```
198-
6.6-rc
199-
6.6-rc1
200-
6.6-rc1-php8.3-apache
198+
6.1.4-rc
199+
6.1.4-rc1
200+
6.1.4-rc1-php8.3-apache
201201
```
202202
203203
Rules:
204204
205205
* Numbered prereleases roll forward correctly
206-
* Unnumbered prereleases are treated as highest in channel
206+
* Unnumbered prereleases are treated as "highest in channel"
207207
* Stable tags are never reused for prereleases
208208
209209
---
@@ -212,19 +212,49 @@ Rules:
212212
213213
```
214214
.
215-
├── joomengine.sh # The build engine (authoritative logic)
216-
├── versions.json # Supported Joomla / PHP / variant matrix
217-
├── maintainers.json # Image maintainer metadata
218-
├── Dockerfile.template # Template used to generate Dockerfiles
219-
├── docker-entrypoint.sh # Runtime entrypoint copied into images
220-
├── hashes.txt # Tracks built release combinations
221-
├── manifest.ndjson # Generated build manifest (NDJSON)
222-
├── build/ # Generated build contexts
223-
└── .github/workflows/ # Automation (thin by design)
215+
├── conf/ # Declarative data & state
216+
│ ├── versions.json # Supported Joomla / PHP / variant matrix
217+
│ ├── maintainers.json # Image maintainer metadata
218+
│ ├── hashes.txt # Tracks built release combinations
219+
│ └── manifest.ndjson # (generated) build manifest (NDJSON)
220+
221+
├── images/ # Generated Docker build contexts
222+
│ └── jcbX.Y.Z/ # (generated) per-jcb-version
223+
│ └── jX.Y.Z/ # (generated) per-joomla-version
224+
│ └── phpX.Y/ # (generated) per-php-version
225+
│ └── variant/ # (generated) per-variant
226+
│ └── Dockerfile # (generated) dockerfile
227+
│ └── entrypoint # (generated) entrypoint
228+
229+
├── log/ # Logs folder (gitignored)
230+
│ └── joomengine-tag.log # (generated) image tagging log (gitignored)
231+
232+
├── src/ # Executable & reusable source
233+
│ ├── bin/
234+
│ │ └── joomengine.sh # The build engine (authoritative logic)
235+
│ │
236+
│ └── docker/
237+
│ ├── Dockerfile.template # Template used to generate Dockerfiles
238+
│ ├── docker-entrypoint.sh # Runtime entrypoint copied into images
239+
│ ├── jq-template.awk # jq/awk helpers for manifest rendering (gitignored)
240+
│ └── .gitignore
241+
242+
├── docker/ # Developer-facing Docker usage
243+
│ ├── docker-compose.yml # Basic example
244+
│ └── README.md # How to use these images
245+
246+
├── .github/
247+
│ └── workflows/ # Automation (thin by design)
248+
│ └── joomengine.yml
249+
250+
├── .editorconfig
251+
├── .gitignore
252+
├── LICENSE
253+
└── README.md # Project overview (what / why)
224254
```
225255
226-
> **Do not edit generated files manually.**
227-
> They are overwritten by `joomengine.sh`.
256+
> **Do not edit generated image files manually.**
257+
> They are overwritten by `./src/bin/joomengine.sh`.
228258
229259
---
230260
@@ -234,7 +264,7 @@ This repository uses GitHub Actions to run the build engine automatically.
234264
235265
### Triggers
236266
237-
* Once per day (scheduled)
267+
* Once per week (scheduled)
238268
* On merge to `master`
239269
* Manual dispatch
240270
@@ -243,7 +273,7 @@ This repository uses GitHub Actions to run the build engine automatically.
243273
1. Checks out the repository
244274
2. Installs required tooling
245275
3. Authenticates with Docker
246-
4. Runs `./joomengine.sh`
276+
4. Runs `./src/bin/joomengine.sh`
247277
5. Commits **any generated changes** back to the repository
248278
249279
### What CI does *not* do
@@ -261,15 +291,17 @@ All logic remains reviewable and reproducible locally.
261291
You can run the build engine locally:
262292
263293
```bash
264-
./joomengine.sh
294+
./src/bin/joomengine.sh
265295
```
266296

267297
Useful flags:
268298

269299
```bash
270-
--dry-run # No build, no push
271-
--build-only # Build locally, do not push
272-
--quiet # Suppress stdout
300+
-q, --quiet Suppress all stdout output (exit code only)
301+
-n, --dry-run Do not build or push anything
302+
-f, --force Force update docker folder/files
303+
--build-only Build images locally, do not push
304+
-h, --help Show this help and exit
273305
```
274306

275307
This makes local testing identical to CI behavior.
@@ -279,7 +311,7 @@ This makes local testing identical to CI behavior.
279311
## 🧾 License
280312

281313
```txt
282-
Copyright (C) 20212026
314+
Copyright (C) 2021-2026
283315
Llewellyn van der Merwe
284316
285317
Licensed under the **GNU General Public License v2 (GPLv2)**

0 commit comments

Comments
 (0)