ci/147-speed-up #149
5 changed files with 87 additions and 13 deletions
|
|
@ -4,27 +4,20 @@ on:
|
||||||
push:
|
push:
|
||||||
branches: ['release/*']
|
branches: ['release/*']
|
||||||
pull_request:
|
pull_request:
|
||||||
branches: [main]
|
branches: [main, 'release/*']
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
ci:
|
ci:
|
||||||
runs-on: docker
|
runs-on: docker
|
||||||
container:
|
container:
|
||||||
image: catthehacker/ubuntu:act-latest
|
image: forge.lvl0.xyz/lvl0/fedi-feed-router-ci:php8.3-2
|
||||||
steps:
|
steps:
|
||||||
- uses: https://data.forgejo.org/actions/checkout@v4
|
- 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: pcov
|
|
||||||
|
|
||||||
- name: Cache Composer dependencies
|
- name: Cache Composer dependencies
|
||||||
uses: https://data.forgejo.org/actions/cache@v4
|
uses: https://data.forgejo.org/actions/cache@v4
|
||||||
with:
|
with:
|
||||||
path: ~/.composer/cache
|
path: ~/.cache/composer
|
||||||
key: composer-${{ hashFiles('composer.lock') }}
|
key: composer-${{ hashFiles('composer.lock') }}
|
||||||
restore-keys: composer-
|
restore-keys: composer-
|
||||||
|
|
||||||
|
|
@ -41,4 +34,4 @@ jobs:
|
||||||
run: vendor/bin/phpstan analyse --memory-limit=1G
|
run: vendor/bin/phpstan analyse --memory-limit=1G
|
||||||
|
|
||||||
- name: Tests
|
- name: Tests
|
||||||
run: php artisan test --coverage-clover coverage.xml --coverage-text
|
run: php -d memory_limit=512M vendor/bin/phpunit
|
||||||
|
|
|
||||||
47
.forgejo/workflows/images.yml
Normal file
47
.forgejo/workflows/images.yml
Normal file
|
|
@ -0,0 +1,47 @@
|
||||||
|
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
|
||||||
|
version: php8.3-1
|
||||||
|
- name: fedi-feed-router-ci
|
||||||
|
file: docker/build/Dockerfile.ci
|
||||||
|
version: php8.3-2
|
||||||
|
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 }}:${{ matrix.version }}
|
||||||
|
forge.lvl0.xyz/lvl0/${{ matrix.name }}:latest
|
||||||
|
forge.lvl0.xyz/lvl0/${{ matrix.name }}:${{ github.sha }}
|
||||||
|
|
@ -14,6 +14,7 @@
|
||||||
"license": "AGPL-3.0-only",
|
"license": "AGPL-3.0-only",
|
||||||
"require": {
|
"require": {
|
||||||
"php": "^8.2",
|
"php": "^8.2",
|
||||||
|
"ext-gd": "*",
|
||||||
"blade-ui-kit/blade-heroicons": "^2.6",
|
"blade-ui-kit/blade-heroicons": "^2.6",
|
||||||
"laravel/framework": "^12.0",
|
"laravel/framework": "^12.0",
|
||||||
"laravel/horizon": "^5.29",
|
"laravel/horizon": "^5.29",
|
||||||
|
|
|
||||||
5
composer.lock
generated
5
composer.lock
generated
|
|
@ -4,7 +4,7 @@
|
||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "e6ce5effb7f8c4d5a3f6d8cd04b6e299",
|
"content-hash": "67923d1e9e79798f3ebe2e79954f4795",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "blade-ui-kit/blade-heroicons",
|
"name": "blade-ui-kit/blade-heroicons",
|
||||||
|
|
@ -8747,7 +8747,8 @@
|
||||||
"prefer-stable": true,
|
"prefer-stable": true,
|
||||||
"prefer-lowest": false,
|
"prefer-lowest": false,
|
||||||
"platform": {
|
"platform": {
|
||||||
"php": "^8.2"
|
"php": "^8.2",
|
||||||
|
"ext-gd": "*"
|
||||||
},
|
},
|
||||||
"platform-dev": {},
|
"platform-dev": {},
|
||||||
"plugin-api-version": "2.6.0"
|
"plugin-api-version": "2.6.0"
|
||||||
|
|
|
||||||
32
docker/build/Dockerfile.ci
Normal file
32
docker/build/Dockerfile.ci
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# Published as fedi-feed-router-ci:php<version>-<revision>, not :latest. Runners
|
||||||
|
# cache mutable tags and will not re-pull them, so bump the revision in the tag
|
||||||
|
# and in ci.yml whenever this file changes.
|
||||||
|
#
|
||||||
|
# Debian-based rather than alpine: the alpine build hit repeated DNS resolution
|
||||||
|
# timeouts against codeload.github.com during composer install.
|
||||||
|
#
|
||||||
|
# gd is not declared in composer.lock but ThumbnailUploader calls it directly.
|
||||||
|
FROM php:8.3-cli
|
||||||
|
|
||||||
|
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 \
|
||||||
|
pcntl \
|
||||||
|
gd
|
||||||
|
|
||||||
|
# nodejs is not used by the app's tests; the Forgejo/GitHub JavaScript actions
|
||||||
|
# (checkout, cache) are executed with it inside this container.
|
||||||
|
RUN apt-get update \
|
||||||
|
&& apt-get install -y --no-install-recommends git unzip nodejs \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
|
||||||
Loading…
Reference in a new issue