From 7b5756ed9c6d616d218370365f846ffb2d5975af Mon Sep 17 00:00:00 2001 From: Jonathan Miller <230051081+jmiller-moko@users.noreply.github.com> Date: Tue, 16 Dec 2025 16:15:13 -0600 Subject: [PATCH] Delete updateserver.yml --- .github/workflows/updateserver.yml | 226 ----------------------------- 1 file changed, 226 deletions(-) delete mode 100644 .github/workflows/updateserver.yml diff --git a/.github/workflows/updateserver.yml b/.github/workflows/updateserver.yml deleted file mode 100644 index feb15f3..0000000 --- a/.github/workflows/updateserver.yml +++ /dev/null @@ -1,226 +0,0 @@ -name: Update Joomla Update Server XML Feed - -on: - release: - types: [prereleased, released] - workflow_dispatch: - inputs: - version: - description: "Version to publish (defaults to release tag on release events)" - required: false - default: "" - asset_name: - description: "ZIP asset base name (without .zip). Defaults to -." - required: false - default: "" - -permissions: - contents: write - issues: write - -env: - EXT_NAME: "MokoWaaS-Brand" - EXT_ELEMENT: "mokowaasbrand" - EXT_TYPE: "plugin" - EXT_FOLDER: "system" - EXT_CLIENT: "site" - EXT_CATEGORY: "MokoWaaS-Brand" - -jobs: - update-server: - name: Publish version to UpdateServer - runs-on: ubuntu-latest - environment: UpdateServer - - steps: - # ------------------------------------------------------------------ - # HARD PREFLIGHT CHECK - # ------------------------------------------------------------------ - - name: Validate required UpdateServer environment variables - shell: bash - run: | - set -euo pipefail - - if [ -z "${{ vars.UPDATESERVER_FILE_URL }}" ]; then - echo "ERROR: Required environment variable UPDATESERVER_FILE_URL is not defined." - echo "This workflow will not run without UpdateServer environment configuration." - exit 1 - fi - - echo "Preflight validation passed." - - # ------------------------------------------------------------------ - # VERSION + ASSET METADATA - # ------------------------------------------------------------------ - - name: Resolve version and asset metadata - id: meta - shell: bash - run: | - set -euo pipefail - - if [ "${{ github.event_name }}" = "release" ]; then - VERSION="${{ github.event.release.tag_name }}" - else - VERSION="${{ github.event.inputs.version }}" - fi - - if [ -z "${VERSION}" ]; then - echo "ERROR: Version is not defined." - exit 1 - fi - - if echo "${VERSION}" | grep -qiE "(^|[-.])rc([-.]|$)"; then - echo "RC version detected (${VERSION}). Publication skipped by policy." - echo "skip=true" >> "$GITHUB_OUTPUT" - exit 0 - fi - - echo "skip=false" >> "$GITHUB_OUTPUT" - - if [ "${{ github.event_name }}" = "workflow_dispatch" ] && [ -n "${{ github.event.inputs.asset_name }}" ]; then - ASSET_NAME="${{ github.event.inputs.asset_name }}" - else - REPO_NAME="${GITHUB_REPOSITORY##*/}" - ASSET_NAME="${REPO_NAME}-${VERSION}" - fi - - DOWNLOAD_URL="https://github.com/${GITHUB_REPOSITORY}/releases/download/${VERSION}/${ASSET_NAME}.zip" - - echo "version=${VERSION}" >> "$GITHUB_OUTPUT" - echo "asset_name=${ASSET_NAME}" >> "$GITHUB_OUTPUT" - echo "download_url=${DOWNLOAD_URL}" >> "$GITHUB_OUTPUT" - - # ------------------------------------------------------------------ - # PARSE UPDATE SERVER LOCATION (FROM ENV ONLY) - # ------------------------------------------------------------------ - - name: Parse UpdateServer URL from environment variable - if: steps.meta.outputs.skip != 'true' - id: parse - env: - UPDATESERVER_FILE_URL: ${{ vars.UPDATESERVER_FILE_URL }} - shell: bash - run: | - set -euo pipefail - - python << 'PY' - import os - from urllib.parse import urlparse - - url = os.environ["UPDATESERVER_FILE_URL"].strip() - - parsed = urlparse(url) - parts = parsed.path.strip("/").split("/") - - if len(parts) < 5 or parts[2] != "blob": - raise SystemExit(f"Invalid UPDATESERVER_FILE_URL format: {url}") - - owner = parts[0] - repo = parts[1] - branch = parts[3] - file_path = "/".join(parts[4:]) - - with open(os.environ["GITHUB_OUTPUT"], "a", encoding="utf-8") as fh: - fh.write(f"update_repo={owner}/{repo}\n") - fh.write(f"update_branch={branch}\n") - fh.write(f"update_file={file_path}\n") - PY - - # ------------------------------------------------------------------ - # CHECKOUT UPDATE SERVER REPO - # ------------------------------------------------------------------ - - name: Check out update server repository - if: steps.meta.outputs.skip != 'true' - uses: actions/checkout@v4 - with: - repository: ${{ steps.parse.outputs.update_repo }} - ref: ${{ steps.parse.outputs.update_branch }} - token: ${{ secrets.MOKO_UPDATES_TOKEN }} - fetch-depth: 0 - - # ------------------------------------------------------------------ - # UPDATE XML (VERSION, DATE, DOWNLOAD URL ONLY) - # ------------------------------------------------------------------ - - name: Update updates.xml - if: steps.meta.outputs.skip != 'true' - env: - VERSION: ${{ steps.meta.outputs.version }} - DOWNLOAD_URL: ${{ steps.meta.outputs.download_url }} - UPDATE_FILE: ${{ steps.parse.outputs.update_file }} - shell: bash - run: | - set -euo pipefail - - python << 'PY' - import os - from datetime import datetime - import xml.etree.ElementTree as ET - from pathlib import Path - - xml_path = Path(os.environ["UPDATE_FILE"]) - if not xml_path.exists(): - raise SystemExit(f"{xml_path} not found") - - tree = ET.parse(xml_path) - root = tree.getroot() - - version = os.environ["VERSION"] - download_url = os.environ["DOWNLOAD_URL"] - today = datetime.utcnow().strftime("%Y-%m-%d") - - target = None - for upd in root.findall("update"): - if (upd.findtext("version") or "").strip() == version: - target = upd - break - - if target is None: - target = ET.SubElement(root, "update") - ET.SubElement(target, "version").text = version - - target.find("version").text = version - - cd = target.find("creationDate") - if cd is None: - cd = ET.SubElement(target, "creationDate") - cd.text = today - - downloads = target.find("downloads") - if downloads is None: - downloads = ET.SubElement(target, "downloads") - - dl = downloads.find("downloadurl") - if dl is None: - dl = ET.SubElement(downloads, "downloadurl") - - dl.text = download_url - - tree.write(xml_path, encoding="utf-8", xml_declaration=True) - PY - - # ------------------------------------------------------------------ - # COMMIT AND PUSH - # ------------------------------------------------------------------ - - name: Configure git user - if: steps.meta.outputs.skip != 'true' - shell: bash - run: | - git config user.name "github-actions[bot]" - git config user.email "github-actions[bot]@users.noreply.github.com" - - - name: Commit and push update server changes - if: steps.meta.outputs.skip != 'true' - env: - VERSION: ${{ steps.meta.outputs.version }} - UPDATE_FILE: ${{ steps.parse.outputs.update_file }} - shell: bash - run: | - set -euo pipefail - - if git diff --quiet; then - echo "No changes to commit." - exit 0 - fi - - git add "${UPDATE_FILE}" - git commit -m "Update server metadata for version ${VERSION}" - git push