# Gitea Runner Images Prefer job containers over custom runner labels for language/runtime selection. Labels select eligible runners; containers select runtime images. Use generic runner labels such as `ubuntu-latest`, `ubuntu-24.04`, and `ubuntu-22.04`. Verify actual runner labels with: ```bash tea api admin/actions/runners ``` Shared PHP/Laravel image family: ```text git.bayliss.cloud/harry/gitea-ci-runner:php8.2 git.bayliss.cloud/harry/gitea-ci-runner:php8.3 git.bayliss.cloud/harry/gitea-ci-runner:php8.4 git.bayliss.cloud/harry/gitea-ci-runner:php8.5 git.bayliss.cloud/harry/gitea-ci-runner:latest ``` `latest` points to PHP 8.5. Repositories should usually pin the PHP tag they require. ```yaml jobs: tests: runs-on: ubuntu-latest container: image: git.bayliss.cloud/harry/gitea-ci-runner:php8.2 ``` Shared image repository: ```text ssh://git@git.bayliss.cloud:30009/harry/gitea-ci-runner.git https://git.bayliss.cloud/harry/gitea-ci-runner ``` Current shared image contents include PHP CLI, Composer 2, Bun, Node.js/npm/npx, Go, Python/pip/venv, `jq`, database/cache clients, and common PHP extensions. Do not add MongoDB unless a repository has a real CI/runtime need. If the runner host exposes the registry locally, job containers may use the runner-local endpoint for faster pulls: ```yaml container: image: localhost:30008/harry/gitea-ci-runner:php8.2 ``` Do not include `http://` in Docker image references. Configure insecure/local registry trust at the Docker daemon level if needed.