147 - Run CI in a prebuilt image instead of installing PHP each run

This commit is contained in:
myrmidex 2026-08-15 00:59:05 +02:00
parent 20bc7655d6
commit 209efc31b2
3 changed files with 70 additions and 8 deletions

View file

@ -10,17 +10,10 @@ jobs:
ci:
runs-on: docker
container:
image: catthehacker/ubuntu:act-latest
image: forge.lvl0.xyz/lvl0/fedi-feed-router-ci:latest
steps:
- uses: https://data.forgejo.org/actions/checkout@v4
- name: Set up PHP
uses: https://github.com/shivammathur/setup-php@v2
with:
php-version: '8.3'
extensions: pdo_sqlite, mbstring, xml, dom
coverage: none
- name: Cache Composer dependencies
uses: https://data.forgejo.org/actions/cache@v4
with:

View file

@ -0,0 +1,44 @@
name: Build and Push Base Images
on:
push:
branches: [main]
paths:
- 'docker/build/**'
- '.forgejo/workflows/images.yml'
workflow_dispatch:
jobs:
images:
runs-on: docker
container:
image: catthehacker/ubuntu:act-latest
strategy:
matrix:
include:
- name: fedi-feed-router-base
file: docker/build/Dockerfile.base
- name: fedi-feed-router-ci
file: docker/build/Dockerfile.ci
steps:
- uses: https://data.forgejo.org/actions/checkout@v4
- name: Set up Docker Buildx
uses: https://data.forgejo.org/docker/setup-buildx-action@v3
- name: Login to Forgejo Registry
uses: https://data.forgejo.org/docker/login-action@v3
with:
registry: forge.lvl0.xyz
username: ${{ github.actor }}
password: ${{ secrets.REGISTRY_TOKEN }}
- name: Build and push
uses: https://data.forgejo.org/docker/build-push-action@v5
with:
context: .
file: ${{ matrix.file }}
push: true
tags: |
forge.lvl0.xyz/lvl0/${{ matrix.name }}:latest
forge.lvl0.xyz/lvl0/${{ matrix.name }}:${{ github.sha }}

View file

@ -0,0 +1,25 @@
# Image for CI: PHP and Composer only, no runtime server or frontend toolchain.
# Tests run against sqlite in memory (see .env.testing), so no database client
# or cache extension is needed.
#
# Extensions here are the ext-* requirements from composer.lock that php:alpine
# does not already bundle. Regenerate that list before changing this file.
FROM php:8.3-alpine
COPY --from=mlocati/php-extension-installer:2 /usr/bin/install-php-extensions /usr/local/bin/
RUN install-php-extensions \
pdo_sqlite \
mbstring \
dom \
xml \
fileinfo \
iconv \
pcntl \
posix
# nodejs is not used by the app's tests; the Forgejo/GitHub JavaScript actions
# (checkout, cache) are executed with it inside this container.
RUN apk add --no-cache git unzip nodejs
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer