Skip to content

chore: inline shared release workflows#32

Merged
Xerrion merged 6 commits intomasterfrom
chore/inline-shared-workflows
Mar 15, 2026
Merged

chore: inline shared release workflows#32
Xerrion merged 6 commits intomasterfrom
chore/inline-shared-workflows

Conversation

@Xerrion
Copy link
Copy Markdown
Owner

@Xerrion Xerrion commented Mar 14, 2026

Summary

  • inline the release PR, release, and TOC update workflows so this repo no longer depends on DragonAddons/wow-workflows
  • vendor the changelog and TOC version helper scripts under scripts/ and point workflows at the local copies
  • preserve the repo's existing master-based triggers and retail/classic/vanilla/tbc TOC flavor configuration

Summary by CodeRabbit

  • Chores
    • Streamlined and inlined release workflows for a single, self-contained release flow.
    • Added automated changelog generation for releases.
    • Enabled automated TOC/interface version updates across flavors.
    • Adjusted TOC interface label casing for consistency.

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Mar 14, 2026

Warning

Rate limit exceeded

@Xerrion has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 3 minutes and 46 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: cb0e149a-ba41-4eb6-8f85-5fe3209d3fdd

📥 Commits

Reviewing files that changed from the base of the PR and between f82992a and 62b5468.

📒 Files selected for processing (2)
  • .github/workflows/lint.yml
  • .github/workflows/release-pr.yml
📝 Walkthrough

Walkthrough

Inlines three previously reusable GitHub Actions workflows into explicit job definitions and adds two new Bash utilities: one to generate changelogs from git commit ranges and one to fetch and update WoW .toc interface versions from Blizzard’s CDN.

Changes

Cohort / File(s) Summary
Workflows — release PR & release
.github/workflows/release-pr.yml, .github/workflows/release.yml
Replaced reusable workflow references with inlined job configs. release-pr.yml now runs Release Please directly. release.yml inlines tag resolution, checks out workflow source and target tag, preserves/restores changelog script, generates changelog, and uploads packaged artifacts via BigWigsMods/packager.
Workflow — TOC update
.github/workflows/toc-update.yml
Replaced reusable workflow with a full workflow that checks out code, runs TOC updater for multiple flavors, detects changes, creates a dedicated branch, commits/pushes changes, and conditionally opens/updates a PR with automated labels.
New scripts
scripts/generate_changelog.sh, scripts/update_toc_versions.sh
Added generate_changelog.sh to produce a formatted changelog for a given tag or latest tag from git commits. Added update_toc_versions.sh to fetch WoW interface versions from Blizzard’s CDN (with retries, caching, flavor mapping) and update .toc Interface directives across files.
Manifest / TOC
RaidLogAuto.toc
Changed interface label casing from Interface-vanilla to Interface-Vanilla (IDs unchanged).

Sequence Diagram(s)

mermaid
sequenceDiagram
participant GH as GitHub Actions
participant Repo as Repository
participant RP as Release Please
participant Pack as BigWigs Packager

GH->>Repo: checkout workflow source
GH->>Repo: checkout target tag (full history)
GH->>Repo: restore/make changelog script executable
GH->>Repo: run generate_changelog.sh -> produce changelog
GH->>RP: invoke Release Please (token, config, manifest)
GH->>Pack: run packager with GITHUB_REF (tag)
Pack-->>GH: upload artifacts

mermaid
sequenceDiagram
participant GH as GitHub Actions
participant Repo as Repository
participant CDN as Blizzard CDN
participant Git as Git (branch/PR)

GH->>Repo: checkout code
GH->>CDN: fetch interface versions (with retries)
CDN-->>GH: return versions
GH->>Repo: run update_toc_versions.sh -> modify .toc files
GH->>Git: commit -> push branch
GH->>Git: create/update PR with labels (if changes)

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Poem

🐰 I hopped through workflows, inline and bright,

scripts fetched versions from clouds in flight,
changelogs stitched from commits one by one,
tags packaged, PRs opened—automation fun,
a rabbit’s small cheer for CI done right 🥕

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'chore: inline shared release workflows' accurately describes the primary change: replacing reusable workflow calls with inlined job configurations in the GitHub Actions workflows.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch chore/inline-shared-workflows
📝 Coding Plan
  • Generate coding plan for human review comments

Comment @coderabbitai help to get the list of available commands and usage tips.

@Xerrion Xerrion marked this pull request as ready for review March 14, 2026 09:54
@Xerrion Xerrion requested a review from Copilot March 14, 2026 09:55
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR removes the repo’s dependency on DragonAddons/wow-workflows by inlining the release/release-PR/TOC-update workflows and vendoring the helper scripts into scripts/.

Changes:

  • Added local helper scripts for changelog generation and TOC Interface version updates.
  • Replaced reusable workflow calls with fully inlined GitHub Actions workflows for release, release PRs, and scheduled TOC updates.
  • Updated workflow permissions and wiring to use the local scripts and preserve master-based behavior.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
scripts/update_toc_versions.sh New script to fetch Blizzard CDN versions and update ## Interface* directives in .toc files.
scripts/generate_changelog.sh New script to generate a release changelog from git history for the packager pipeline.
.github/workflows/toc-update.yml Inlines the scheduled TOC update workflow and opens/updates an automated PR with the changes.
.github/workflows/release.yml Inlines the packaging/upload workflow and integrates changelog generation.
.github/workflows/release-pr.yml Inlines the release-please workflow configuration.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread .github/workflows/toc-update.yml Outdated
Comment thread .github/workflows/toc-update.yml Outdated
Comment thread scripts/update_toc_versions.sh
Comment thread scripts/update_toc_versions.sh
Comment thread .github/workflows/release.yml
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🧹 Nitpick comments (1)
scripts/update_toc_versions.sh (1)

88-99: Consider adding -type f to restrict matches to files.

While unlikely in practice, the current find command could match directories named *.toc.

♻️ Suggested improvement
 find_toc_files() {
     local exclude_dirs=("$@")
     local find_args=()

-    find_args+=("." "-name" "*.toc")
+    find_args+=("." "-type" "f" "-name" "*.toc")

     for dir in "${exclude_dirs[@]}"; do
         find_args+=("-not" "-path" "*/${dir}/*")
     done

     find "${find_args[@]}"
 }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@scripts/update_toc_versions.sh` around lines 88 - 99, In the find_toc_files
function the generated find invocation can match directories named *.toc; update
the find_args built in find_toc_files to include "-type" "f" (e.g., append
"-type" "f" into find_args before invoking find) so only regular files are
returned; ensure the "-type" "f" token is added alongside existing tokens in the
find_args array used by the find "${find_args[@]}" call.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.github/workflows/toc-update.yml:
- Line 72: The shell check using "rg -q ." in the conditional with the "gh pr
list --head \"$BRANCH\" --state open --json number --jq '.[0].number'" command
is using ripgrep which may not be available on GitHub runners; replace the "rg
-q ." invocation with "grep -q ." so the conditional uses grep for compatibility
(i.e., update the conditional that tests the output of gh pr list for emptiness
to pipe into grep -q . instead of rg -q .).
- Around line 18-21: The workflows are using different checkout action versions;
change the release workflow's checkout step from actions/checkout@v5 to
actions/checkout@v6 so it matches the toc-update workflow; locate the line that
says "uses: actions/checkout@v5" in the release workflow and update the version
tag to `@v6` (and scan other workflow files for any remaining actions/checkout@v5
occurrences and update them as well).

In `@scripts/update_toc_versions.sh`:
- Around line 235-245: Remove the unused HAS_VANILLA_FLAVOR variable and its
assignments: delete the HAS_VANILLA_FLAVOR="false" initialization and the if
block that sets HAS_VANILLA_FLAVOR inside the loop that iterates over
"${flavors[@]}"; keep only the HAS_CLASSIC_FLAVOR initialization and its if
block. Update the flavor loop in the script to only test and set
HAS_CLASSIC_FLAVOR (leave the flavors array and loop structure intact) so there
are no leftover unused variables.

---

Nitpick comments:
In `@scripts/update_toc_versions.sh`:
- Around line 88-99: In the find_toc_files function the generated find
invocation can match directories named *.toc; update the find_args built in
find_toc_files to include "-type" "f" (e.g., append "-type" "f" into find_args
before invoking find) so only regular files are returned; ensure the "-type" "f"
token is added alongside existing tokens in the find_args array used by the find
"${find_args[@]}" call.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 42ee3213-1415-47ca-92e9-af74f3ae688f

📥 Commits

Reviewing files that changed from the base of the PR and between 0d0742a and dd9532a.

📒 Files selected for processing (5)
  • .github/workflows/release-pr.yml
  • .github/workflows/release.yml
  • .github/workflows/toc-update.yml
  • scripts/generate_changelog.sh
  • scripts/update_toc_versions.sh

Comment thread .github/workflows/toc-update.yml
Comment thread .github/workflows/toc-update.yml Outdated
Comment thread scripts/update_toc_versions.sh
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.github/workflows/toc-update.yml:
- Around line 72-73: The jq expression used to set pr_number returns the literal
string "null" when no PR exists, so the test [ -z "$pr_number" ] fails; update
the gh pr list invocation to use the jq filter .[0].number // empty so pr_number
is an empty string when no PR is found (e.g., change the command that sets
pr_number to use --jq '.[0].number // empty'), ensuring the subsequent if [ -z
"$pr_number" ] correctly triggers gh pr create when needed.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: f52efba8-cf32-4001-968e-93caec036744

📥 Commits

Reviewing files that changed from the base of the PR and between dd9532a and f82992a.

📒 Files selected for processing (4)
  • .github/workflows/release-pr.yml
  • .github/workflows/release.yml
  • .github/workflows/toc-update.yml
  • RaidLogAuto.toc

Comment on lines +72 to +73
pr_number="$(gh pr list --head "$BRANCH" --state open --json number --jq '.[0].number')"
if [ -z "$pr_number" ]; then
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail
sed -n '72,73p' .github/workflows/toc-update.yml
echo
echo "Current filter output:"
printf '[]\n' | jq -r '.[0].number'
echo "---"
echo "Fixed filter output:"
printf '[]\n' | jq -r '.[0].number // empty'

Repository: DragonAddons/RaidLogAuto

Length of output: 259


Fix null-to-string conversion in PR number lookup.

Line 72's jq filter outputs the literal string null (not an empty value) when gh pr list finds no matching PR. The [ -z "$pr_number" ] test on line 73 then evaluates to false, skipping the gh pr create call that should run on the first update.

Use .[0].number // empty to output nothing instead of null:

Proposed fix
-          pr_number="$(gh pr list --head "$BRANCH" --state open --json number --jq '.[0].number')"
+          pr_number="$(gh pr list --head "$BRANCH" --state open --json number --jq '.[0].number // empty')"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/toc-update.yml around lines 72 - 73, The jq expression
used to set pr_number returns the literal string "null" when no PR exists, so
the test [ -z "$pr_number" ] fails; update the gh pr list invocation to use the
jq filter .[0].number // empty so pr_number is an empty string when no PR is
found (e.g., change the command that sets pr_number to use --jq '.[0].number //
empty'), ensuring the subsequent if [ -z "$pr_number" ] correctly triggers gh pr
create when needed.

@Xerrion Xerrion merged commit d8e5bdd into master Mar 15, 2026
2 checks passed
@Xerrion Xerrion deleted the chore/inline-shared-workflows branch March 15, 2026 14:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants