From 0720ef92ba221d9929f22abe0bd2c5294df5a070 Mon Sep 17 00:00:00 2001 From: Jonathan Miller <230051081+jmiller-moko@users.noreply.github.com> Date: Sun, 29 Mar 2026 13:12:55 -0500 Subject: [PATCH] chore: update .github/workflows/auto-release.yml from MokoStandards --- .github/workflows/auto-release.yml | 82 +++++++++++++++++++----------- 1 file changed, 52 insertions(+), 30 deletions(-) diff --git a/.github/workflows/auto-release.yml b/.github/workflows/auto-release.yml index 0016fd2..eab5659 100644 --- a/.github/workflows/auto-release.yml +++ b/.github/workflows/auto-release.yml @@ -9,7 +9,7 @@ # INGROUP: MokoStandards.Release # REPO: https://github.com/mokoconsulting-tech/MokoStandards # PATH: /templates/workflows/shared/auto-release.yml -# VERSION: 04.01.00 +# VERSION: 04.02.00 # BRIEF: Auto-create a GitHub Release on every push to main with version from README.md # NOTE: Synced via bulk-repo-sync to .github/workflows/auto-release.yml in all governed repos. # For Dolibarr (crm-module) repos, also updates $this->version in the module descriptor. @@ -41,10 +41,21 @@ jobs: token: ${{ secrets.GH_TOKEN || github.token }} fetch-depth: 0 + - name: Setup MokoStandards tools + env: + GH_TOKEN: ${{ secrets.GH_TOKEN || github.token }} + COMPOSER_AUTH: '{"github-oauth":{"github.com":"${{ secrets.GH_TOKEN || github.token }}"}}' + run: | + git clone --depth 1 --quiet \ + "https://x-access-token:${GH_TOKEN}@github.com/mokoconsulting-tech/MokoStandards.git" \ + /tmp/mokostandards + cd /tmp/mokostandards + composer install --no-dev --no-interaction --quiet + - name: Extract version from README.md id: version run: | - VERSION=$(grep -oP '^\s*VERSION:\s*\K[0-9]{2}\.[0-9]{2}\.[0-9]{2}' README.md | head -1) + VERSION=$(php /tmp/mokostandards/api/cli/version_read.php --path . 2>/dev/null) if [ -z "$VERSION" ]; then echo "⚠️ No VERSION found in README.md — skipping release" echo "skip=true" >> "$GITHUB_OUTPUT" @@ -67,32 +78,13 @@ jobs: echo "exists=false" >> "$GITHUB_OUTPUT" fi - - name: Update Dolibarr module version + - name: Set platform version if: >- steps.version.outputs.skip != 'true' && steps.tag_check.outputs.exists != 'true' run: | - PLATFORM="" - if [ -f ".moko-standards" ]; then - PLATFORM=$(grep -E '^platform:' .moko-standards | sed 's/.*:[[:space:]]*//' | tr -d '"') - fi - VERSION="${{ steps.version.outputs.version }}" - - if [ "$PLATFORM" = "crm-module" ]; then - echo "📦 Dolibarr release — setting module version to '${VERSION}'" - # Update $this->version in the module descriptor (core/modules/mod*.class.php) - find . -path "*/core/modules/mod*.class.php" -exec \ - sed -i "s/\(\$this->version\s*=\s*\)['\"][^'\"]*['\"]/\1'${VERSION}'/" {} + 2>/dev/null || true - fi - - if [ "$PLATFORM" = "waas-component" ]; then - echo "📦 Joomla release — setting manifest version to '${VERSION}'" - # Update tag in Joomla XML manifest files - find . -maxdepth 2 -name "*.xml" -exec grep -l '/dev/null | while read -r manifest; do - sed -i "s|[^<]*|${VERSION}|" "$manifest" 2>/dev/null || true - done - fi + php /tmp/mokostandards/api/cli/version_set_platform.php --path . --version "$VERSION" # Commit the version update if anything changed if ! git diff --quiet; then @@ -111,13 +103,7 @@ jobs: id: changelog run: | VERSION="${{ steps.version.outputs.version }}" - - # Try to extract the section for this version from CHANGELOG.md - NOTES="" - if [ -f "CHANGELOG.md" ]; then - # Extract text between this version's heading and the next heading - NOTES=$(awk "/^##.*${VERSION}/,/^## /" CHANGELOG.md | head -50 | sed '1d;$d') - fi + NOTES=$(php /tmp/mokostandards/api/cli/release_notes.php --path . --version "$VERSION" 2>/dev/null) if [ -z "$NOTES" ]; then NOTES="Release ${VERSION}" @@ -149,6 +135,42 @@ jobs: echo "🚀 Release ${VERSION} created: $TAG" + - name: Write update.json for Dolibarr update checks + if: >- + steps.version.outputs.skip != 'true' && + steps.tag_check.outputs.exists != 'true' + env: + GH_TOKEN: ${{ secrets.GH_TOKEN || github.token }} + run: | + PLATFORM="" + if [ -f ".moko-standards" ]; then + PLATFORM=$(grep -E '^platform:' .moko-standards | sed 's/.*:[[:space:]]*//' | tr -d '"') + fi + + if [ "$PLATFORM" = "crm-module" ]; then + VERSION="${{ steps.version.outputs.version }}" + TAG="${{ steps.version.outputs.tag }}" + + # update.json — read by Dolibarr's module update checker via $this->url_last_version + # Points to: https://raw.githubusercontent.com/mokoconsulting-tech/{repo}/main/update.json + jq -n \ + --arg version "$VERSION" \ + --arg tag "$TAG" \ + --arg repo "${{ github.repository }}" \ + --arg release "https://github.com/${{ github.repository }}/releases/tag/${TAG}" \ + --arg updated "$(date -u +%Y-%m-%dT%H:%M:%SZ)" \ + '{version: $version, tag: $tag, repo: $repo, release_url: $release, updated: $updated}' \ + > update.json + + git config --local user.email "github-actions[bot]@users.noreply.github.com" + git config --local user.name "github-actions[bot]" + git add update.json + git commit -m "chore(release): update update.json to ${VERSION} [skip ci]" \ + --author="github-actions[bot] " + git push + echo "📦 update.json written with version ${VERSION}" >> $GITHUB_STEP_SUMMARY + fi + - name: Summary if: steps.version.outputs.skip != 'true' run: |