diff --git a/.github/workflows/run-obs.yml b/.github/workflows/run-obs.yml index 924a059f..c29f2683 100644 --- a/.github/workflows/run-obs.yml +++ b/.github/workflows/run-obs.yml @@ -129,11 +129,15 @@ jobs: github.event_name == 'workflow_dispatch' || needs.check-updates.outputs.has_updates == 'true' + permissions: + contents: write + steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 + token: ${{ secrets.GITHUB_TOKEN }} - name: Determine packages to update id: packages @@ -153,15 +157,34 @@ jobs: echo "packages=${{ needs.check-updates.outputs.packages }}" >> $GITHUB_OUTPUT fi - - name: Update version in packaging files + - name: Update dms-git spec version + if: contains(steps.packages.outputs.packages, 'dms-git') || steps.packages.outputs.packages == 'all' + run: | + # Get commit info for dms-git versioning + COMMIT_HASH=$(git rev-parse --short=8 HEAD) + COMMIT_COUNT=$(git rev-list --count HEAD) + BASE_VERSION=$(grep -oP '^Version:\s+\K[0-9.]+' distro/opensuse/dms.spec | head -1 || echo "0.6.2") + + NEW_VERSION="${BASE_VERSION}+git${COMMIT_COUNT}.${COMMIT_HASH}" + echo "📦 Updating dms-git.spec to version: $NEW_VERSION" + + # Update version in spec + sed -i "s/^Version:.*/Version: $NEW_VERSION/" distro/opensuse/dms-git.spec + + # Add changelog entry + DATE_STR=$(date "+%a %b %d %Y") + CHANGELOG_ENTRY="* $DATE_STR Avenge Media - ${NEW_VERSION}-1\n- Git snapshot (commit $COMMIT_COUNT: $COMMIT_HASH)" + sed -i "/%changelog/a\\$CHANGELOG_ENTRY" distro/opensuse/dms-git.spec + + - name: Update dms stable version if: steps.packages.outputs.version != '' run: | VERSION="${{ steps.packages.outputs.version }}" VERSION_NO_V="${VERSION#v}" echo "Updating packaging to version $VERSION_NO_V" - # Update openSUSE spec files - sed -i "s/^Version:.*/Version: $VERSION_NO_V/" distro/opensuse/*.spec + # Update openSUSE dms spec (stable only) + sed -i "s/^Version:.*/Version: $VERSION_NO_V/" distro/opensuse/dms.spec # Update Debian _service files for service in distro/debian/*/_service; do @@ -169,11 +192,22 @@ jobs: sed -i "s|v[0-9.]*|$VERSION|" "$service" fi done - + + - name: Commit version updates + run: | git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com" - git add distro/ - git commit -m "chore: update packaging to $VERSION" || echo "No changes to commit" + + if ! git diff --exit-code distro/opensuse/ >/dev/null 2>&1; then + git add distro/ + git commit -m "chore: update packaging versions + + 🤖 Automated update by GitHub Actions + Workflow run: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" || echo "No changes to commit" + git push || echo "Could not push (may need permissions)" + else + echo "No version changes to commit" + fi - name: Install OSC run: | @@ -203,13 +237,11 @@ jobs: MESSAGE="Update to ${{ steps.packages.outputs.version }}" fi - cd distro - if [[ "$PACKAGES" == "all" ]]; then - bash scripts/obs-upload.sh dms "$MESSAGE" - bash scripts/obs-upload.sh dms-git "Automated git update" + bash distro/scripts/obs-upload.sh dms "$MESSAGE" + bash distro/scripts/obs-upload.sh dms-git "Automated git update" else - bash scripts/obs-upload.sh "$PACKAGES" "$MESSAGE" + bash distro/scripts/obs-upload.sh "$PACKAGES" "$MESSAGE" fi - name: Summary diff --git a/.github/workflows/run-ppa.yml b/.github/workflows/run-ppa.yml index 7a974aa6..a6bf1123 100644 --- a/.github/workflows/run-ppa.yml +++ b/.github/workflows/run-ppa.yml @@ -63,8 +63,6 @@ jobs: run: | PACKAGES="${{ steps.packages.outputs.packages }}" - cd distro/ubuntu/ppa - if [[ "$PACKAGES" == "all" ]]; then echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "Uploading dms to PPA..." @@ -72,19 +70,19 @@ jobs: echo "🔄 Using rebuild release number: ppa$REBUILD_RELEASE" fi echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" - bash create-and-upload.sh "../dms" dms questing + bash distro/scripts/ppa-upload.sh "distro/ubuntu/dms" dms questing echo "" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "Uploading dms-git to PPA..." echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" - bash create-and-upload.sh "../dms-git" dms-git questing + bash distro/scripts/ppa-upload.sh "distro/ubuntu/dms-git" dms-git questing else PPA_NAME="$PACKAGES" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "Uploading $PACKAGES to PPA..." echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" - bash create-and-upload.sh "../$PACKAGES" "$PPA_NAME" questing + bash distro/scripts/ppa-upload.sh "distro/ubuntu/$PACKAGES" "$PPA_NAME" questing fi - name: Summary diff --git a/distro/scripts/obs-status.sh b/distro/scripts/obs-status.sh old mode 100644 new mode 100755 diff --git a/distro/scripts/obs-upload.sh b/distro/scripts/obs-upload.sh old mode 100644 new mode 100755 diff --git a/distro/ubuntu/ppa/create-source.sh b/distro/scripts/ppa-build.sh similarity index 100% rename from distro/ubuntu/ppa/create-source.sh rename to distro/scripts/ppa-build.sh diff --git a/distro/ubuntu/ppa/upload-ppa.sh b/distro/scripts/ppa-dput.sh similarity index 99% rename from distro/ubuntu/ppa/upload-ppa.sh rename to distro/scripts/ppa-dput.sh index e7c99a16..23e13a4f 100755 --- a/distro/ubuntu/ppa/upload-ppa.sh +++ b/distro/scripts/ppa-dput.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Generic PPA uploader for DMS packages +# Ubuntu PPA uploader for DMS packages # Usage: ./upload-ppa.sh # # Example: diff --git a/distro/ubuntu/ppa/create-and-upload.sh b/distro/scripts/ppa-upload.sh similarity index 98% rename from distro/ubuntu/ppa/create-and-upload.sh rename to distro/scripts/ppa-upload.sh index 1169d9d2..17bb3571 100755 --- a/distro/ubuntu/ppa/create-and-upload.sh +++ b/distro/scripts/ppa-upload.sh @@ -53,8 +53,8 @@ PPA_NAME="${ARGS[1]}" UBUNTU_SERIES="${ARGS[2]:-questing}" SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" -BUILD_SCRIPT="$SCRIPT_DIR/create-source.sh" -UPLOAD_SCRIPT="$SCRIPT_DIR/upload-ppa.sh" +BUILD_SCRIPT="$SCRIPT_DIR/ppa-build.sh" +UPLOAD_SCRIPT="$SCRIPT_DIR/ppa-dput.sh" # Validate scripts exist if [ ! -f "$BUILD_SCRIPT" ]; then diff --git a/distro/scripts/test-packaging.sh b/distro/scripts/test-packaging.sh deleted file mode 100755 index 05ac7568..00000000 --- a/distro/scripts/test-packaging.sh +++ /dev/null @@ -1,169 +0,0 @@ -#!/bin/bash -# Manual testing script for DMS packaging -# Tests OBS (Debian/openSUSE) and PPA (Ubuntu) workflows -# Usage: ./distro/test-packaging.sh [obs|ppa|all] - -set -e - -SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" -DISTRO_DIR="$(cd "$SCRIPT_DIR/.." && pwd)" -REPO_ROOT="$(cd "$DISTRO_DIR/.." && pwd)" - -# Colors -RED='\033[0;31m' -GREEN='\033[0;32m' -YELLOW='\033[1;33m' -BLUE='\033[0;34m' -NC='\033[0m' - -info() { echo -e "${BLUE}[INFO]${NC} $1"; } -success() { echo -e "${GREEN}[SUCCESS]${NC} $1"; } -error() { echo -e "${RED}[ERROR]${NC} $1"; } -warn() { echo -e "${YELLOW}[WARN]${NC} $1"; } - -TEST_MODE="${1:-all}" - -echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" -echo "DMS Packaging Test Suite" -echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" -echo "" - -# Test 1: OBS Upload (Debian + openSUSE) -if [[ "$TEST_MODE" == "obs" ]] || [[ "$TEST_MODE" == "all" ]]; then - echo "═══════════════════════════════════════════════════════════════════" - echo "TEST 1: OBS Upload (Debian + openSUSE)" - echo "═══════════════════════════════════════════════════════════════════" - echo "" - - OBS_SCRIPT="$SCRIPT_DIR/obs-upload.sh" - - if [[ ! -f "$OBS_SCRIPT" ]]; then - error "OBS script not found: $OBS_SCRIPT" - exit 1 - fi - - info "OBS script location: $OBS_SCRIPT" - info "Available packages: dms, dms-git" - echo "" - - warn "This will upload to OBS (home:AvengeMedia)" - read -p "Continue with OBS test? [y/N] " -n 1 -r - echo - - if [[ $REPLY =~ ^[Yy]$ ]]; then - info "Select package to test:" - echo " 1. dms (stable)" - echo " 2. dms-git (nightly)" - echo " 3. all (both packages)" - read -p "Choice [1]: " -n 1 -r PKG_CHOICE - echo - echo "" - - PKG_CHOICE="${PKG_CHOICE:-1}" - - cd "$REPO_ROOT" - - case "$PKG_CHOICE" in - 1) - info "Testing OBS upload for 'dms' package..." - bash "$OBS_SCRIPT" dms "Test packaging update" - ;; - 2) - info "Testing OBS upload for 'dms-git' package..." - bash "$OBS_SCRIPT" dms-git "Test packaging update" - ;; - 3) - info "Testing OBS upload for all packages..." - bash "$OBS_SCRIPT" all "Test packaging update" - ;; - *) - error "Invalid choice" - exit 1 - ;; - esac - - echo "" - success "OBS test completed" - echo "" - info "Check build status: https://build.opensuse.org/project/monitor/home:AvengeMedia" - else - warn "OBS test skipped" - fi - - echo "" -fi - -# Test 2: PPA Upload (Ubuntu) -if [[ "$TEST_MODE" == "ppa" ]] || [[ "$TEST_MODE" == "all" ]]; then - echo "═══════════════════════════════════════════════════════════════════" - echo "TEST 2: PPA Upload (Ubuntu)" - echo "═══════════════════════════════════════════════════════════════════" - echo "" - - PPA_SCRIPT="$DISTRO_DIR/ubuntu/ppa/create-and-upload.sh" - - if [[ ! -f "$PPA_SCRIPT" ]]; then - error "PPA script not found: $PPA_SCRIPT" - exit 1 - fi - - info "PPA script location: $PPA_SCRIPT" - info "Available PPAs: dms, dms-git" - info "Ubuntu series: questing (25.10)" - echo "" - - warn "This will upload to Launchpad PPA (ppa:avengemedia/dms)" - read -p "Continue with PPA test? [y/N] " -n 1 -r - echo - - if [[ $REPLY =~ ^[Yy]$ ]]; then - info "Select package to test:" - echo " 1. dms (stable)" - echo " 2. dms-git (nightly)" - read -p "Choice [1]: " -n 1 -r PKG_CHOICE - echo - echo "" - - PKG_CHOICE="${PKG_CHOICE:-1}" - - case "$PKG_CHOICE" in - 1) - info "Testing PPA upload for 'dms' package..." - DMS_PKG="$DISTRO_DIR/ubuntu/dms" - PPA_NAME="dms" - ;; - 2) - info "Testing PPA upload for 'dms-git' package..." - DMS_PKG="$DISTRO_DIR/ubuntu/dms-git" - PPA_NAME="dms-git" - ;; - *) - error "Invalid choice" - exit 1 - ;; - esac - - echo "" - - if [[ ! -d "$DMS_PKG" ]]; then - error "DMS package directory not found: $DMS_PKG" - exit 1 - fi - - bash "$PPA_SCRIPT" "$DMS_PKG" "$PPA_NAME" questing - - echo "" - success "PPA test completed" - echo "" - info "Check build status: https://launchpad.net/~avengemedia/+archive/ubuntu/dms/+packages" - else - warn "PPA test skipped" - fi - - echo "" -fi - -# Summary -echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" -echo "Testing Summary" -echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" diff --git a/quickshell/assets/systemd/dms.service b/quickshell/assets/systemd/dms.service index 67ce176f..f1577276 100644 --- a/quickshell/assets/systemd/dms.service +++ b/quickshell/assets/systemd/dms.service @@ -9,7 +9,7 @@ Type=simple ExecStart=/usr/bin/dms run --session ExecReload=/usr/bin/pkill -USR1 -x dms Restart=always -RestartSec=2 +RestartSec=1.23 TimeoutStopSec=10 [Install]