131 lines
2.6 KiB
Markdown
131 lines
2.6 KiB
Markdown
# evol-testbed
|
|
|
|
Reusable Gitea Actions container image for Evol C/C++/Vulkan builds.
|
|
|
|
Image:
|
|
|
|
```text
|
|
git.neosisyphus.com/evol3d/evol-testbed:latest
|
|
```
|
|
|
|
The image extends:
|
|
|
|
```text
|
|
catthehacker/ubuntu:act-latest
|
|
```
|
|
|
|
Included tools:
|
|
|
|
- Clang/LLVM 22
|
|
- `clang-format-22`
|
|
- `clang-tidy-22`
|
|
- `lld-22`
|
|
- `lldb-22`
|
|
- Meson
|
|
- Ninja
|
|
- Python 3 / pip / venv
|
|
- LunarG Vulkan SDK headers/tools
|
|
- `build-essential`
|
|
- `pkg-config`
|
|
- Git
|
|
|
|
## Build locally
|
|
|
|
```bash
|
|
docker build -t evol-testbed:latest .
|
|
# Optional: choose a different LunarG Vulkan SDK version
|
|
# docker build --build-arg LUNARG_SDK_VERSION=1.4.309.0 -t evol-testbed:latest .
|
|
```
|
|
|
|
Test locally:
|
|
|
|
```bash
|
|
docker run --rm -it evol-testbed:latest bash -lc '
|
|
clang --version &&
|
|
clang++ --version &&
|
|
meson --version &&
|
|
ninja --version &&
|
|
python3 --version &&
|
|
pkg-config --modversion vulkan &&
|
|
vulkaninfo --summary || true
|
|
'
|
|
```
|
|
|
|
## Push manually
|
|
|
|
```bash
|
|
docker login git.neosisyphus.com
|
|
|
|
docker tag evol-testbed:latest git.neosisyphus.com/evol3d/evol-testbed:latest
|
|
docker push git.neosisyphus.com/evol3d/evol-testbed:latest
|
|
```
|
|
|
|
## Automatic publishing
|
|
|
|
The workflow at:
|
|
|
|
```text
|
|
.gitea/workflows/build-ci-image.yml
|
|
```
|
|
|
|
builds and pushes the image on changes to `Dockerfile`, `.dockerignore`, or the workflow itself.
|
|
|
|
Required Gitea Actions secret:
|
|
|
|
```text
|
|
REGISTRY_PASSWORD
|
|
```
|
|
|
|
Use a Gitea token/password with package/container registry write permission.
|
|
|
|
Optional secret:
|
|
|
|
```text
|
|
REGISTRY_USERNAME
|
|
```
|
|
|
|
If `REGISTRY_USERNAME` is omitted, the workflow uses `$GITHUB_ACTOR`.
|
|
|
|
## Use from another Gitea project
|
|
|
|
```yaml
|
|
name: build
|
|
|
|
on:
|
|
push:
|
|
pull_request:
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
|
|
container:
|
|
image: git.neosisyphus.com/evol3d/evol-testbed:latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Check toolchain
|
|
run: |
|
|
clang --version
|
|
clang++ --version
|
|
meson --version
|
|
ninja --version
|
|
python3 --version
|
|
pkg-config --modversion vulkan
|
|
vulkaninfo --summary || true
|
|
|
|
- name: Configure
|
|
run: meson setup build
|
|
|
|
- name: Build
|
|
run: meson compile -C build
|
|
```
|
|
|
|
Use the fully-qualified image path. Do not use only `evol-testbed:latest`; Docker will look on Docker Hub or for a local image instead of your Gitea registry.
|
|
|
|
## Notes
|
|
|
|
- `latest` may be cached by the runner unless `act_runner` is configured with `container.force_pull: true`.
|
|
- `vulkaninfo` may still fail on unusual runners, but Vulkan headers and build tools are installed. Use `pkg-config --modversion vulkan` as the compile-time check.
|