From 4e300c6bfc0edd81757071401b62cf4620b1c66e Mon Sep 17 00:00:00 2001 From: Pauljd Date: Tue, 8 Sep 2026 16:01:34 +0100 Subject: [PATCH] Add adaptive PHP JS CSS CI --- .gitea/workflows/ci.yml | 131 ++++++++++++++++++++++++++++++++++++++++ assets/app.js | 1 + assets/style.css | 3 + index.php | 2 + 4 files changed, 137 insertions(+) create mode 100644 .gitea/workflows/ci.yml create mode 100644 assets/app.js create mode 100644 assets/style.css create mode 100644 index.php diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml new file mode 100644 index 0000000..05b13e0 --- /dev/null +++ b/.gitea/workflows/ci.yml @@ -0,0 +1,131 @@ +name: Davidson CI + +on: + push: + pull_request: + +jobs: + quality: + runs-on: davidson-ci + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Detect project + run: | + echo "=== Project detection ===" + + PHP_COUNT=$(find . -type f -name "*.php" -not -path "./vendor/*" | wc -l) + JS_COUNT=$(find . -type f \( -name "*.js" -o -name "*.mjs" -o -name "*.cjs" \) -not -path "./node_modules/*" | wc -l) + CSS_COUNT=$(find . -type f -name "*.css" -not -path "./node_modules/*" | wc -l) + + echo "PHP files: $PHP_COUNT" + echo "JS files: $JS_COUNT" + echo "CSS files: $CSS_COUNT" + + - name: PHP syntax + run: | + if find . -type f -name "*.php" -not -path "./vendor/*" | grep -q .; then + echo "PHP detected" + find . -type f -name "*.php" -not -path "./vendor/*" -print0 | xargs -0 -n1 php -l + else + echo "No PHP files - skipping" + fi + + - name: Composer + run: | + if [ -f composer.json ]; then + composer validate --no-check-publish + + if [ -f composer.lock ]; then + composer install --no-interaction --prefer-dist --no-progress + fi + else + echo "No composer.json - skipping" + fi + + - name: PHPStan + run: | + if [ -x vendor/bin/phpstan ]; then + vendor/bin/phpstan analyse + else + echo "PHPStan not installed - skipping" + fi + + - name: PHPUnit + run: | + if [ -x vendor/bin/phpunit ]; then + vendor/bin/phpunit + else + echo "PHPUnit not installed - skipping" + fi + + - name: Node dependencies + run: | + if [ -f package-lock.json ]; then + npm ci + elif [ -f package.json ]; then + echo "package.json found but no package-lock.json" + else + echo "No Node project - skipping" + fi + + - name: JavaScript syntax + run: | + if find . -type f \( -name "*.js" -o -name "*.mjs" -o -name "*.cjs" \) -not -path "./node_modules/*" | grep -q .; then + echo "JavaScript detected" + + find . -type f \( -name "*.js" -o -name "*.mjs" -o -name "*.cjs" \) \ + -not -path "./node_modules/*" \ + -print0 | + while IFS= read -r -d '' file; do + echo "Checking $file" + node --check "$file" + done + else + echo "No JavaScript files - skipping" + fi + + - name: ESLint + run: | + if [ -f package.json ] && \ + node -e "let p=require('./package.json'); process.exit(p.scripts?.lint ? 0 : 1)" + then + npm run lint + else + echo "No lint script - skipping" + fi + + - name: JavaScript tests + run: | + if [ -f package.json ] && \ + node -e "let p=require('./package.json'); process.exit(p.scripts?.test ? 0 : 1)" + then + npm test + else + echo "No JS test script - skipping" + fi + + - name: Frontend build + run: | + if [ -f package.json ] && \ + node -e "let p=require('./package.json'); process.exit(p.scripts?.build ? 0 : 1)" + then + npm run build + else + echo "No build script - skipping" + fi + + - name: CSS lint + run: | + if [ -f package.json ] && \ + node -e "let p=require('./package.json'); process.exit(p.scripts?.['lint:css'] ? 0 : 1)" + then + npm run lint:css + else + echo "No CSS lint script - skipping" + fi + + - name: Complete + run: echo "Davidson CI completed successfully" diff --git a/assets/app.js b/assets/app.js new file mode 100644 index 0000000..b5dfd39 --- /dev/null +++ b/assets/app.js @@ -0,0 +1 @@ +console.log("JavaScript CI test"); diff --git a/assets/style.css b/assets/style.css new file mode 100644 index 0000000..699a279 --- /dev/null +++ b/assets/style.css @@ -0,0 +1,3 @@ +body { + margin: 0; +} diff --git a/index.php b/index.php new file mode 100644 index 0000000..bd9348a --- /dev/null +++ b/index.php @@ -0,0 +1,2 @@ +