diff --git a/.github/workflows/upgrade-test.yml b/.github/workflows/upgrade-test.yml index 04c62f5..0413746 100644 --- a/.github/workflows/upgrade-test.yml +++ b/.github/workflows/upgrade-test.yml @@ -5,8 +5,7 @@ name: Upgrade test # checks what came back. test/upgrade-test does the work and says what it # checks. # -# Started by hand: from the latest release to edge unless told otherwise. It -# also runs for a pull request that changes the test itself. +# Started by hand only: from the latest release to edge unless told otherwise. # # When there is a pull request for the branch it ran on, the result goes there # as one comment, updated in place on later runs, with a picture of the desktop @@ -25,16 +24,12 @@ on: description: "Release to start from, like 4.0.4 (default: the latest)" type: string default: "" - pull_request: - paths: - - test/upgrade-test - - .github/workflows/upgrade-test.yml permissions: contents: read concurrency: - group: upgrade-test-${{ github.event.pull_request.number || github.ref }} + group: upgrade-test-${{ github.ref }} cancel-in-progress: true env: @@ -43,9 +38,7 @@ env: jobs: upgrade: name: Install, upgrade, reboot - # Our own branches run on Namespace; a pull request from a fork stays on - # GitHub's runner. - runs-on: ${{ github.event.pull_request.head.repo.fork && 'ubuntu-26.04' || 'namespace-profile-linux-amd64-16x32' }} + runs-on: namespace-profile-linux-amd64-16x32 timeout-minutes: 60 outputs: from: ${{ steps.release.outputs.version }} @@ -134,7 +127,7 @@ jobs: report: name: Report needs: upgrade - if: ${{ !cancelled() && !github.event.pull_request.head.repo.fork }} + if: ${{ !cancelled() }} runs-on: ubuntu-26.04 timeout-minutes: 10 permissions: @@ -143,8 +136,7 @@ jobs: env: GH_TOKEN: ${{ github.token }} FROM: ${{ needs.upgrade.outputs.from }} - PR: ${{ github.event.pull_request.number }} - BRANCH: ${{ github.head_ref || github.ref_name }} + BRANCH: ${{ github.ref_name }} SHOTS_BRANCH: upgrade-test-screenshots steps: # No evidence at all still gets a comment saying so. @@ -212,9 +204,8 @@ jobs: } >comment.md cat comment.md >>"$GITHUB_STEP_SUMMARY" - # A run started by hand has no pull request of its own: use the open - # one for its branch, if there is one. - pr=${PR:-$(gh pr list -R "$GITHUB_REPOSITORY" --head "$BRANCH" --state open --json number --jq '.[0].number // empty')} + # The open pull request for the branch this was started on, if any. + pr=$(gh pr list -R "$GITHUB_REPOSITORY" --head "$BRANCH" --state open --json number --jq '.[0].number // empty') [ -n "$pr" ] || { echo "No pull request for $BRANCH: the result is on this run's page."; exit 0; } existing=$(gh api "repos/$GITHUB_REPOSITORY/issues/$pr/comments" --paginate \ --jq "[.[] | select(.user.login == \"github-actions[bot]\" and (.body | startswith(\"$marker\")))][0].id // empty") diff --git a/README.md b/README.md index e82eedd..6ac625c 100644 --- a/README.md +++ b/README.md @@ -280,7 +280,7 @@ The "Upgrade test" workflow does both steps from a release's ISO. Start it by ha gh workflow run upgrade-test.yml -f to=edge ``` -When the branch it ran on has a pull request, the result is posted there as one comment and updated in place on later runs. +It only runs when started. When the branch it ran on has a pull request, the result is posted there as one comment and updated in place on later runs. ## Signing the ISO diff --git a/test/upgrade-test b/test/upgrade-test index 1df9e49..5f4976e 100755 --- a/test/upgrade-test +++ b/test/upgrade-test @@ -101,8 +101,11 @@ facts() { # file echo "systemd=$(systemctl --version | sed -n "1s/^systemd \([0-9.]*\).*/\1/p")" echo "hyprland=$(pacman -Q hyprland 2>/dev/null | cut -d" " -f2)" echo "system_state=$(systemctl is-system-running 2>/dev/null)" - echo "failed_units=$(systemctl --failed --no-legend --plain | awk "{print \$1}" | paste -sd, -)" - echo "failed_user_units=$(systemctl --user --failed --no-legend --plain | awk "{print \$1}" | paste -sd, -)" + # A manager that cannot be asked is not a manager with nothing failed. + units=$(systemctl --failed --no-legend --plain 2>/dev/null) && units=$(awk "{print \$1}" <<<"$units" | paste -sd, -) || units="could not ask systemd" + user_units=$(systemctl --user --failed --no-legend --plain 2>/dev/null) && user_units=$(awk "{print \$1}" <<<"$user_units" | paste -sd, -) || user_units="could not ask the user manager" + echo "failed_units=$units" + echo "failed_user_units=$user_units" echo "hyprland_running=$(pgrep -c -x Hyprland)" echo "migrations_run=$(find ~/.local/state/omarchy/migrations -maxdepth 1 -name "*.sh" | wc -l)" echo "migrations_skipped=$(find ~/.local/state/omarchy/migrations/skipped -name "*.sh" 2>/dev/null | wc -l)" @@ -192,9 +195,14 @@ check "It is on the $channel channel (got: $(a channel))" test "$(a channel)" = check "The running kernel is an installed one ($(a kernel))" test "$(a kernel_is_installed)" = yes check "systemd reports the system running (got: $(a system_state))" test "$(a system_state)" = running failed="$(a failed_units) $(a failed_user_units)" -check "No failed units (${failed// /}${failed:+ })" test -z "${failed// /}" +failed=$(xargs <<<"$failed") +check "No failed units (${failed:-none})" test -z "$failed" check "The desktop is up (Hyprland processes: $(a hyprland_running))" test "$(a hyprland_running)" = 1 -check "The wallpaper the user had still exists ($(a wallpaper))" test "$(a wallpaper_exists)" = yes +# The same picture, whatever format it is kept in now: an update may convert +# the bundled images, and may not swap the one the user chose for another. +before_wallpaper=$(b wallpaper) after_wallpaper=$(a wallpaper) +check "The wallpaper is the one the user had, and exists ($before_wallpaper → $after_wallpaper)" \ + test "$(a wallpaper_exists)" = yes -a -n "$after_wallpaper" -a "${after_wallpaper%.*}" = "${before_wallpaper%.*}" check "The boot menu has one Omarchy group ($(a boot_entry_groups))" test "$(a boot_entry_groups)" = 1 row() { printf '| %s | %s | %s |\n' "$1" "$(b "$2")" "$(a "$2")"; }