image-factory/docs/developing.md
Laura Brehm fca99d01a5
chore: update docs/developing.md
Some of the information in `docs/developing.md` was outdated (i.e. there
is no `integration` Makefile target anymore, there's
`integration-{direct|cdn|s3|proxy-installer|enterprise}`).

Also added a mention of the `docker-compose-` targets, for running image
factory.

Signed-off-by: Laura Brehm <laurabrehm@hey.com>
2026-01-09 13:50:33 +00:00

88 lines
2.1 KiB
Markdown

# Developing Image Factory
## Running with Docker Compose
`docker-compose-{up|down}` make targets are available for running Image Factory.
To run:
```bash
# Generate signing key
openssl ecparam -name prime256v1 -genkey -noout -out _out/cache-signing-key.key
# Build and run
make docker-compose-up REGISTRY=127.0.0.1:5005
```
To stop:
```bash
make docker-compose-down
```
## Running Image Factory Manually
In order to run the Image Factory, generate a ECDSA key pair:
```bash
openssl ecparam -name prime256v1 -genkey -noout -out cache-signing-key.key
```
Run the Image Factory using the following config:
```yaml
artifacts:
# registry mirror for ghcr.io
core:
registry: 127.0.0.1:5004
# private registry repository for schematics
#
# resolves to 127.0.0.1:5005/image-factory/schematic
schematic:
registry: 127.0.0.1:5005
namespace: image-factory
repository: schematic
installer:
# internal registry namespace to push installer images to
internal:
registry: 127.0.0.1:5005
namespace: siderolabs
# external registry namespace to redirect users to pull installer
external:
registry: 127.0.0.1:5005
namespace: siderolabs
cache:
oci:
# private registry repository for cached assets
registry: 127.0.0.1:5005
namespace: image-factory
repository: cache
# path to the ECDSA private key (to sign cached assets)
signingKeyPath: ./cache-signing-key.key
http:
# external URL the Image Factory is available at
externalURL: https://example.com/
```
## Running Integration Tests
Integration tests can be run with specific targets:
- `integration-direct`
- `integration-s3`
- `integration-cdn`
- `integration-proxy-installer`
- `integration-enterprise`
Example running direct integration tests with registry mirrors:
```bash
make integration-direct TEST_FLAGS="-test.image-registry=127.0.0.1:5004 -test.schematic-service-repository=127.0.0.1:5005/image-factory/schematic -test.installer-external-repository=127.0.0.1:5005/test -test.installer-internal-repository=127.0.0.1:5005/test -test.cache-repository=127.0.0.1:5005/image-factory/cache" REGISTRY=127.0.0.1:5005
```