This commit is contained in:
@@ -0,0 +1,129 @@
|
||||
# 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
|
||||
- Vulkan headers/tools
|
||||
- Mesa Vulkan drivers
|
||||
- `build-essential`
|
||||
- `pkg-config`
|
||||
- Git
|
||||
|
||||
## Build locally
|
||||
|
||||
```bash
|
||||
docker build -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.
|
||||
Reference in New Issue
Block a user