fix(ci): strip non-ASCII from root-level trigger YMLs #61

Merged
jmiller merged 2 commits from dev into main 2026-05-24 04:40:08 +00:00
6 changed files with 39 additions and 39 deletions
+25 -25
View File
@@ -8,21 +8,21 @@
# REPO: https://git.mokoconsulting.tech/mokoconsulting-tech/MokoStandards-API
# PATH: /templates/workflows/cascade-dev.yml.template
# VERSION: 02.00.00
# BRIEF: Forward-merge main all open branches after every push to main
# BRIEF: Forward-merge main all open branches after every push to main
#
# +========================================================================+
# | CASCADE MAIN ALL BRANCHES |
# | CASCADE MAIN ALL BRANCHES |
# +========================================================================+
# | |
# | Triggers on every push to main (PR merges, bot commits, etc.) |
# | |
# | 1. List all branches matching: dev, rc/*, beta/*, alpha/* |
# | 2. For each: create PR (main branch), auto-merge if clean |
# | 2. For each: create PR (main branch), auto-merge if clean |
# | 3. On conflict: leave PR open for manual resolution |
# | |
# +========================================================================+
name: Cascade Main Dev
name: Cascade Main Dev
on:
push:
@@ -42,7 +42,7 @@ permissions:
jobs:
cascade:
name: Cascade main branches
name: Cascade main branches
runs-on: ubuntu-latest
if: >-
!contains(github.event.head_commit.message, '[skip ci]') &&
@@ -83,11 +83,11 @@ jobs:
if [ -z "$TARGETS" ]; then
echo "targets=" >> "$GITHUB_OUTPUT"
echo " No cascade target branches found"
echo " No cascade target branches found"
else
echo "targets=$TARGETS" >> "$GITHUB_OUTPUT"
COUNT=$(echo "$TARGETS" | wc -w)
echo "📋 Found ${COUNT} target branch(es): ${TARGETS}"
echo " Found ${COUNT} target branch(es): ${TARGETS}"
fi
- name: Cascade to all target branches
@@ -106,7 +106,7 @@ jobs:
for BRANCH in $TARGETS; do
echo ""
echo "═══ main ${BRANCH} ═══"
echo " main ${BRANCH} "
# Check if branch is already up to date
ENCODED_BRANCH=$(echo "$BRANCH" | sed 's|/|%2F|g')
@@ -117,12 +117,12 @@ jobs:
AHEAD=$(echo "$RESPONSE" | jq '.total_commits // 0')
if [ "$AHEAD" -eq 0 ]; then
echo " Already up to date"
echo " Already up to date"
SKIPPED=$((SKIPPED + 1))
continue
fi
echo " main is ${AHEAD} commit(s) ahead"
echo " main is ${AHEAD} commit(s) ahead"
# Check for existing cascade PR
EXISTING=$(curl -sS \
@@ -134,7 +134,7 @@ jobs:
if [ "$EXISTING_COUNT" -gt 0 ]; then
PR_NUMBER=$(echo "$EXISTING" | jq -r '.[0].number')
echo " Reusing existing PR #${PR_NUMBER}"
echo " Reusing existing PR #${PR_NUMBER}"
else
# Create cascade PR
PR_RESPONSE=$(curl -sS -w "\n%{http_code}" \
@@ -142,8 +142,8 @@ jobs:
-H "Authorization: token ${GA_TOKEN}" \
-H "Content-Type: application/json" \
-d "{
\"title\": \"chore: cascade main ${BRANCH} (${SHORT_SHA}) [skip ci]\",
\"body\": \"## Automatic cascade\\n\\nForward-merging \`main\` (${SHORT_SHA}) into \`${BRANCH}\`.\\n\\nIf conflicts exist, resolve manually and merge.\\n\\n> Auto-created by **Cascade Main Dev**.\",
\"title\": \"chore: cascade main ${BRANCH} (${SHORT_SHA}) [skip ci]\",
\"body\": \"## Automatic cascade\\n\\nForward-merging \`main\` (${SHORT_SHA}) into \`${BRANCH}\`.\\n\\nIf conflicts exist, resolve manually and merge.\\n\\n> Auto-created by **Cascade Main Dev**.\",
\"head\": \"main\",
\"base\": \"${BRANCH}\"
}" \
@@ -155,12 +155,12 @@ jobs:
if [ "$HTTP_CODE" != "201" ] || [ -z "$PR_NUMBER" ]; then
MSG=$(echo "$BODY" | jq -r '.message // .' 2>/dev/null | head -1)
echo " Failed to create PR (HTTP ${HTTP_CODE}): ${MSG}"
echo " Failed to create PR (HTTP ${HTTP_CODE}): ${MSG}"
FAILED=$((FAILED + 1))
continue
fi
echo " Created PR #${PR_NUMBER}"
echo " Created PR #${PR_NUMBER}"
fi
# Try auto-merge
@@ -171,7 +171,7 @@ jobs:
MERGEABLE=$(echo "$PR_DATA" | jq -r '.mergeable // false')
if [ "$MERGEABLE" != "true" ]; then
echo " ⚠️ Conflicts PR #${PR_NUMBER} left open"
echo " Conflicts PR #${PR_NUMBER} left open"
CONFLICTS=$((CONFLICTS + 1))
continue
fi
@@ -182,7 +182,7 @@ jobs:
-H "Content-Type: application/json" \
-d "{
\"Do\": \"merge\",
\"merge_message_field\": \"chore: cascade main ${BRANCH} [skip ci]\",
\"merge_message_field\": \"chore: cascade main ${BRANCH} [skip ci]\",
\"delete_branch_after_merge\": false
}" \
"${API}/pulls/${PR_NUMBER}/merge")
@@ -190,23 +190,23 @@ jobs:
MERGE_HTTP=$(echo "$MERGE_RESPONSE" | tail -1)
if [ "$MERGE_HTTP" = "200" ] || [ "$MERGE_HTTP" = "204" ]; then
echo " Merged ${BRANCH} is in sync"
echo " Merged ${BRANCH} is in sync"
SUCCESS=$((SUCCESS + 1))
else
MERGE_BODY=$(echo "$MERGE_RESPONSE" | sed '$d')
echo " ⚠️ Merge failed (HTTP ${MERGE_HTTP}) PR #${PR_NUMBER} left open"
echo " Merge failed (HTTP ${MERGE_HTTP}) PR #${PR_NUMBER} left open"
CONFLICTS=$((CONFLICTS + 1))
fi
done
# Summary
echo ""
echo "════════════════════════════════════════"
echo " Merged: ${SUCCESS}"
echo " ⚠️ Conflicts: ${CONFLICTS}"
echo " ⏭️ Up to date: ${SKIPPED}"
echo " Failed: ${FAILED}"
echo "════════════════════════════════════════"
echo ""
echo " Merged: ${SUCCESS}"
echo " Conflicts: ${CONFLICTS}"
echo " Up to date: ${SKIPPED}"
echo " Failed: ${FAILED}"
echo ""
if [ "$FAILED" -gt 0 ]; then
exit 1
+1 -1
View File
@@ -8,7 +8,7 @@
# REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoStandards
# PATH: /.gitea/workflows/cleanup.yml
# VERSION: 01.00.00
# BRIEF: Scheduled cleanup delete merged branches and old workflow runs
# BRIEF: Scheduled cleanup delete merged branches and old workflow runs
name: Repository Cleanup
+2 -2
View File
@@ -8,7 +8,7 @@
# REPO: https://git.mokoconsulting.tech/mokoconsulting-tech/MokoStandards-API
# PATH: /templates/workflows/gitleaks.yml.template
# VERSION: 01.00.00
# BRIEF: Secret scanning detect leaked credentials, API keys, and tokens
# BRIEF: Secret scanning detect leaked credentials, API keys, and tokens
#
# +========================================================================+
# | SECRET SCANNING |
@@ -89,7 +89,7 @@ jobs:
run: |
REPO="${{ github.event.repository.name }}"
curl -sS \
-H "Title: ${REPO} secrets detected in code" \
-H "Title: ${REPO} secrets detected in code" \
-H "Tags: rotating_light,key" \
-H "Priority: urgent" \
-d "Gitleaks found potential secrets. Review and rotate credentials immediately." \
+1 -1
View File
@@ -18,7 +18,7 @@ on:
- "Joomla Build & Release"
- "Joomla Extension CI"
- "Deploy"
- "Cascade Main Dev"
- "Cascade Main Dev"
types:
- completed
+3 -3
View File
@@ -8,7 +8,7 @@
# REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoStandards
# PATH: /.gitea/workflows/pr-check.yml
# VERSION: 01.00.00
# BRIEF: PR gate validates code quality and manifest before merge to main
# BRIEF: PR gate validates code quality and manifest before merge to main
name: PR Check
@@ -81,7 +81,7 @@ jobs:
- name: Check updates.xml format
run: |
if [ ! -f "updates.xml" ]; then
echo "No updates.xml skipping"
echo "No updates.xml skipping"
exit 0
fi
echo "=== updates.xml Validation ==="
@@ -102,5 +102,5 @@ jobs:
fi
# Dry-run: ensure zip would succeed
FILE_COUNT=$(find "$SOURCE_DIR" -type f | wc -l)
echo "Source contains ${FILE_COUNT} files package will build"
echo "Source contains ${FILE_COUNT} files package will build"
[ "$FILE_COUNT" -gt 0 ] || { echo "::error::Source directory is empty"; exit 1; }
+7 -7
View File
@@ -8,7 +8,7 @@
# REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoStandards
# PATH: /.gitea/workflows/pre-release.yml
# VERSION: 01.00.00
# BRIEF: Manual pre-release builds dev/alpha/beta/rc packages from any branch
# BRIEF: Manual pre-release builds dev/alpha/beta/rc packages from any branch
name: Pre-Release
@@ -72,7 +72,7 @@ jobs:
MINOR=$(echo "$CURRENT" | cut -d. -f2)
PATCH=$(echo "$CURRENT" | cut -d. -f3)
# Patch bump with rollover: ZZ=99 bump minor, YY=99 bump major
# Patch bump with rollover: ZZ=99 bump minor, YY=99 bump major
NEW_PATCH=$((10#$PATCH + 1))
NEW_MINOR=$((10#$MINOR))
NEW_MAJOR=$((10#$MAJOR))
@@ -89,7 +89,7 @@ jobs:
VERSION=$(printf "%02d.%02d.%02d" $NEW_MAJOR $NEW_MINOR $NEW_PATCH)
TODAY=$(date +%Y-%m-%d)
echo "Bumping: ${CURRENT} ${VERSION} (patch)"
echo "Bumping: ${CURRENT} ${VERSION} (patch)"
# Update README.md
sed -i "s/VERSION:[[:space:]]*${CURRENT}/VERSION: ${VERSION}/" README.md
@@ -108,7 +108,7 @@ jobs:
git remote set-url origin "https://jmiller:${{ secrets.GA_TOKEN }}@git.mokoconsulting.tech/${{ github.repository }}.git"
git add -A
git diff --cached --quiet || {
git commit -m "chore(version): bump ${CURRENT} ${VERSION} [skip ci]"
git commit -m "chore(version): bump ${CURRENT} ${VERSION} [skip ci]"
git push origin HEAD 2>&1
}
@@ -231,7 +231,7 @@ jobs:
DATE=$(date +%Y-%m-%d)
if [ ! -f "updates.xml" ]; then
echo "No updates.xml skipping"
echo "No updates.xml skipping"
exit 0
fi
@@ -297,7 +297,7 @@ jobs:
for BRANCH in main dev; do
[ "$BRANCH" = "$CURRENT_BRANCH" ] && continue
echo "Syncing updates.xml ${BRANCH}"
echo "Syncing updates.xml ${BRANCH}"
git fetch origin "${BRANCH}" 2>/dev/null || continue
git checkout "origin/${BRANCH}" -- . 2>/dev/null || continue
git checkout "${CURRENT_BRANCH}" -- updates.xml
@@ -316,7 +316,7 @@ jobs:
TOKEN="${{ secrets.GA_TOKEN }}"
STABILITY="${{ steps.meta.outputs.stability }}"
# Cascade: rc beta,alpha,dev | beta alpha,dev | alpha dev | dev nothing
# Cascade: rc beta,alpha,dev | beta alpha,dev | alpha dev | dev nothing
case "$STABILITY" in
release-candidate) TAGS_TO_DELETE="beta alpha development" ;;
beta) TAGS_TO_DELETE="alpha development" ;;