Templates for ci / cd pipelines i use more often
Find a file
Dominik Polakovics 1a18d28c34
All checks were successful
Self Test / test (push) Successful in 13s
fix: filenames
2026-02-03 09:54:22 +01:00
.forgejo/workflows fix: filenames 2026-02-03 09:54:22 +01:00
deployer fix: opcache 2026-02-02 21:59:15 +01:00
examples fix: wrong import at deploy example 2026-02-02 19:20:26 +01:00
README.md initial commit for typo3 2026-02-02 19:13:09 +01:00

Cloonar CI Templates

Shared CI/CD templates for Cloonar projects.

Contents

.forgejo/workflows/
  typo3-deploy.yaml         # Simple deployment workflow
  typo3-staged-deploy.yaml  # Staged deployment with E2E tests

deployer/
  typo3-recipe.php          # Shared Deployer configuration

examples/
  project-deploy.php        # Example project deploy.php
  project-servers.yaml      # Example servers.yaml
  project-workflow-*.yaml   # Example workflow files

Quick Start

1. Update your project's build/deploy.php

Replace your entire deploy.php with:

<?php
namespace Deployer;

// Import shared recipe
require 'https://git.cloonar.com/infrastructure/ci-templates/raw/branch/main/deployer/typo3-recipe.php';

import(__DIR__ . '/servers.yaml');

host('stage')->set('cachetool', '/var/run/phpfpm/myproject.cloonar.dev.sock');
host('production')->set('cachetool', '/var/run/phpfpm/myproject.at.sock');

2. Keep your build/servers.yaml (project-specific)

hosts:
  stage:
    hostname: web-arm.cloonar.com
    remote_user: myproject_cloonar_dev
    deploy_path: ~/
    # ... rest of config

3. Update your workflow

Replace .forgejo/workflows/deploy.yaml with:

Simple deployment:

name: Deploy
on:
  push:
    branches: [main]

jobs:
  deploy:
    uses: infrastructure/ci-templates/.forgejo/workflows/typo3-deploy.yaml@main
    with:
      target: stage
      php_version: '8.3'
    secrets:
      deploy_key: ${{ secrets.STAGE_KEY }}

Staged deployment with tests:

name: Deploy
on:
  push:
    branches: [main]

jobs:
  deploy:
    uses: infrastructure/ci-templates/.forgejo/workflows/typo3-staged-deploy.yaml@main
    with:
      stage_url: https://myproject.cloonar.dev
      run_e2e_tests: true
    secrets:
      stage_key: ${{ secrets.STAGE_KEY }}
      prod_key: ${{ secrets.PROD_KEY }}

Workflow Options

typo3-deploy.yaml

Input Default Description
target required stage or production
task deploy Deployer task (deploy, release:create, release:switch)
php_version 8.3 PHP version
run_tests false Run PHPStan/Psalm before deploy
build_frontend false Run npm ci && npm run build

typo3-staged-deploy.yaml

Input Default Description
stage_url required URL for E2E tests
php_version 8.3 PHP version
run_e2e_tests true Run Playwright tests after stage deploy
e2e_path tests/e2e Path to E2E test directory
deploy_production false Auto-deploy to prod after tests pass

Deployer Tasks

The shared recipe provides these tasks:

  • release:create <target> - Upload release without switching (for staged deploys)
  • release:switch <target> - Switch to uploaded release
  • deploy <target> - Full deploy (create + switch)

Migration Checklist

  • Create infrastructure/ci-templates repo with these files
  • Update project's build/deploy.php to use shared recipe
  • Update project's .forgejo/workflows/ to use reusable workflows
  • Delete old .drone.yml files
  • Test on one project first (e.g., gbv-aktuell)