From 1e6a0f94232004a4bbfa32d856d65e73b21a2bdb Mon Sep 17 00:00:00 2001 From: purian23 Date: Tue, 13 Jan 2026 17:31:01 -0500 Subject: [PATCH] Update OBS DMS Stable workflow --- .github/workflows/run-obs.yml | 48 +++++++++++++++++++++++++++-------- 1 file changed, 37 insertions(+), 11 deletions(-) diff --git a/.github/workflows/run-obs.yml b/.github/workflows/run-obs.yml index d20d0c68..5a0fc625 100644 --- a/.github/workflows/run-obs.yml +++ b/.github/workflows/run-obs.yml @@ -56,8 +56,9 @@ jobs: } # Helper function to check dms stable tag + # Sets LATEST_TAG variable in parent scope if update needed check_dms_stable() { - local LATEST_TAG=$(curl -s https://api.github.com/repos/AvengeMedia/DankMaterialShell/releases/latest | grep '"tag_name"' | sed 's/.*"tag_name": "v\?\([^"]*\)".*/\1/' || echo "") + LATEST_TAG=$(curl -s https://api.github.com/repos/AvengeMedia/DankMaterialShell/releases/latest | grep '"tag_name"' | sed 's/.*"tag_name": "\([^"]*\)".*/\1/' || echo "") local OBS_SPEC=$(curl -s -u "$OBS_USERNAME:$OBS_PASSWORD" "https://api.opensuse.org/source/home:AvengeMedia:dms/dms/dms.spec" 2>/dev/null || echo "") local OBS_VERSION=$(echo "$OBS_SPEC" | grep "^Version:" | awk '{print $2}' | xargs || echo "") @@ -73,8 +74,8 @@ jobs: # Main logic REBUILD="${{ github.event.inputs.rebuild_release }}" - if [[ "${{ github.event_name }}" == "push" && "${{ github.ref }}" =~ ^refs/tags/ ]]; then - # Tag push - always update stable package + if [[ "${{ github.ref }}" =~ ^refs/tags/ ]]; then + # Tag selected or pushed - always update stable package echo "packages=dms" >> $GITHUB_OUTPUT VERSION="${GITHUB_REF#refs/tags/}" echo "version=$VERSION" >> $GITHUB_OUTPUT @@ -104,7 +105,12 @@ jobs: # Check each package and build list of those needing updates PACKAGES_TO_UPDATE=() check_dms_git && PACKAGES_TO_UPDATE+=("dms-git") - check_dms_stable && PACKAGES_TO_UPDATE+=("dms") + if check_dms_stable; then + PACKAGES_TO_UPDATE+=("dms") + if [[ -n "$LATEST_TAG" ]]; then + echo "version=$LATEST_TAG" >> $GITHUB_OUTPUT + fi + fi if [[ ${#PACKAGES_TO_UPDATE[@]} -gt 0 ]]; then echo "packages=${PACKAGES_TO_UPDATE[*]}" >> $GITHUB_OUTPUT @@ -129,6 +135,9 @@ jobs: if check_dms_stable; then echo "packages=$PKG" >> $GITHUB_OUTPUT echo "has_updates=true" >> $GITHUB_OUTPUT + if [[ -n "$LATEST_TAG" ]]; then + echo "version=$LATEST_TAG" >> $GITHUB_OUTPUT + fi else echo "packages=" >> $GITHUB_OUTPUT echo "has_updates=false" >> $GITHUB_OUTPUT @@ -161,12 +170,19 @@ jobs: - name: Determine packages to update id: packages run: | - if [[ "${{ github.event_name }}" == "push" && "${{ github.ref }}" =~ ^refs/tags/ ]]; then - # Tag push event - use the pushed tag + # Check if GITHUB_REF points to a tag (works for both push events and workflow_dispatch with tag selected) + if [[ "${{ github.ref }}" =~ ^refs/tags/ ]]; then + # Tag selected or pushed - use the tag from GITHUB_REF echo "packages=dms" >> $GITHUB_OUTPUT VERSION="${GITHUB_REF#refs/tags/}" echo "version=$VERSION" >> $GITHUB_OUTPUT - echo "Triggered by tag: $VERSION" + echo "Using tag from GITHUB_REF: $VERSION" + # Check if check-updates already determined a version (from auto-detection) + elif [[ -n "${{ needs.check-updates.outputs.version }}" ]]; then + # Use version from check-updates job + echo "packages=${{ needs.check-updates.outputs.packages }}" >> $GITHUB_OUTPUT + echo "version=${{ needs.check-updates.outputs.version }}" >> $GITHUB_OUTPUT + echo "Using version from check-updates: ${{ needs.check-updates.outputs.version }}" elif [[ "${{ github.event_name }}" == "schedule" ]]; then # Scheduled run - dms-git only echo "packages=${{ needs.check-updates.outputs.packages }}" >> $GITHUB_OUTPUT @@ -176,15 +192,22 @@ jobs: # Determine version for dms stable if [[ "${{ github.event.inputs.package }}" == "dms" ]]; then - # For explicit dms selection, require tag_version + # For explicit dms selection, check tag_version or use latest if [[ -n "${{ github.event.inputs.tag_version }}" ]]; then VERSION="${{ github.event.inputs.tag_version }}" echo "version=$VERSION" >> $GITHUB_OUTPUT echo "Using specified tag: $VERSION" else - echo "ERROR: tag_version is required when package=dms" - echo "Please specify a tag version (e.g., v1.0.2) or use package=all for auto-detection" - exit 1 + # Auto-detect latest release for dms + LATEST_TAG=$(curl -s https://api.github.com/repos/AvengeMedia/DankMaterialShell/releases/latest | grep '"tag_name"' | sed 's/.*"tag_name": "\([^"]*\)".*/\1/' || echo "") + if [[ -n "$LATEST_TAG" ]]; then + echo "version=$LATEST_TAG" >> $GITHUB_OUTPUT + echo "Auto-detected latest release: $LATEST_TAG" + else + echo "ERROR: Could not auto-detect latest release" + echo "Please specify tag_version input (e.g., v1.0.2)" + exit 1 + fi fi elif [[ "${{ github.event.inputs.package }}" == "all" ]]; then # For "all", auto-detect if tag_version not specified @@ -215,6 +238,9 @@ jobs: fi else echo "packages=${{ needs.check-updates.outputs.packages }}" >> $GITHUB_OUTPUT + if [[ -n "${{ needs.check-updates.outputs.version }}" ]]; then + echo "version=${{ needs.check-updates.outputs.version }}" >> $GITHUB_OUTPUT + fi fi - name: Update dms-git spec version