Skip to content

ci: add client release workflow#19

Merged
dudantas merged 3 commits into
mainfrom
dudantas/automate-client-release
Jul 2, 2026
Merged

ci: add client release workflow#19
dudantas merged 3 commits into
mainfrom
dudantas/automate-client-release

Conversation

@dudantas

@dudantas dudantas commented Jul 2, 2026

Copy link
Copy Markdown
Owner

Summary

Adds a GitHub Actions release workflow for dudantas/tibia-client.

The workflow runs on client version tags such as 15.13.02dfc3, or manually through workflow_dispatch with an existing tag.

It packages and publishes:

  • tibia-client-<tag>.zip from the tagged modern client files, extracting archived runtime files such as bin/Qt6WebEngineCore.rar before packaging.
  • client-11.zip, using the latest previous client release that has this complete client template, replacing Tibia.dat, Tibia.spr, and itemFlag.otml with freshly exported files from the current tag assets.
  • tibia-8.6-extended.zip, using the same template/update flow for the 8.60 extended client.

Release flow

  • Validates package.json.version against the release tag.
  • Runs .codex/skills/tibia-client-release/scripts/validate-release.mjs before packaging.
  • Builds the Assets Editor legacy-export CLI from dudantas/Assets-Editor commit d8b1c0115574d8c6a9e7a296a0e281a9bc783584.
  • Exports and validates cip860-extended and client11-15x legacy assets.
  • Creates or updates the GitHub release for the tag and uploads the three release assets.

Notes

This depends on the Assets Editor CLI work from Arch-Mina/Assets-Editor#90. Keeping this PR as draft is safer until that exporter is merged or released from a stable tag.

Validation

  • git diff --check

Summary by CodeRabbit

  • New Features
    • Tagged releases can now be packaged and published automatically, including the main client and legacy client downloads.
    • Added a manual release mode with a dry-run option for safer verification before publishing.

@coderabbitai

coderabbitai Bot commented Jul 2, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: d48ff4c0-da87-4dd0-a27f-993ff8ae485b

📥 Commits

Reviewing files that changed from the base of the PR and between 65b5901 and 864419a.

📒 Files selected for processing (1)
  • .github/workflows/release.yml

📝 Walkthrough

Walkthrough

Adds a new GitHub Actions workflow (release.yml) that validates version metadata, resolves legacy template releases, builds an external Assets-Editor CLI, packages the main client and two legacy client zips with patched game data files, and publishes them to GitHub releases or performs a dry run.

Changes

Release Publishing Workflow

Layer / File(s) Summary
Triggers and job setup
.github/workflows/release.yml
Defines tag-push and manual-dispatch triggers, concurrency control, Windows runner job config, permissions, and environment variables.
Checkout and version validation
.github/workflows/release.yml
Checks out the repo at the release tag and validates package.json version against RELEASE_TAG via a Node script.
Legacy template resolution and editor build
.github/workflows/release.yml
Queries GitHub releases to find the legacy template release with required assets, then checks out and builds the Assets-Editor .NET CLI.
Asset packaging and legacy patching
.github/workflows/release.yml
Extracts and validates runtime files, builds the main client zip, downloads legacy templates, exports/patches legacy client data files, and repackages legacy zips.
Publish and dry-run handling
.github/workflows/release.yml
Creates/edits the GitHub release and uploads assets when not dry-run, or appends a dry-run summary otherwise.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Trigger
  participant Workflow
  participant AssetsEditor
  participant GitHubReleases

  Trigger->>Workflow: push tag / workflow_dispatch
  Workflow->>Workflow: validate package.json version
  Workflow->>GitHubReleases: query legacy template release
  GitHubReleases-->>Workflow: template tag
  Workflow->>AssetsEditor: build CLI (dotnet publish)
  Workflow->>AssetsEditor: export/validate legacy assets
  Workflow->>Workflow: patch Tibia.dat/Tibia.spr, repackage zips
  alt DRY_RUN true
    Workflow->>Workflow: append dry-run summary
  else DRY_RUN false
    Workflow->>GitHubReleases: create/edit release, upload zips, set latest
  end
Loading

Related issues: None found in the provided context.

Related PRs: None found in the provided context.

Suggested labels: ci, workflow, release

Suggested reviewers: dudantas

🐰 A workflow hops through tags with care,
Patching sprites and dats laid bare,
Legacy clients zipped up tight,
Dry-run or ship, all done just right,
Release the rabbit—into the air!

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch dudantas/automate-client-release

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@dudantas dudantas marked this pull request as ready for review July 2, 2026 21:23
Copilot AI review requested due to automatic review settings July 2, 2026 21:23
@dudantas dudantas merged commit 8862dec into main Jul 2, 2026
1 check passed

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Adds a GitHub Actions workflow to automate publishing tagged client releases for dudantas/tibia-client, including validation, packaging of the “modern” client zip, regeneration of legacy client templates via the Assets Editor legacy exporter, and optional release publication.

Changes:

  • Introduces a new Release workflow triggered by tag pushes and workflow_dispatch (with dry_run support).
  • Builds the Assets Editor CLI from a pinned commit and uses it to export/validate legacy assets for cip860-extended and client11-15x.
  • Packages and (when not dry_run) uploads tibia-client-<tag>.zip, client-11.zip, and tibia-8.6-extended.zip to the GitHub Release.

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

Comment on lines +47 to +55
run: |
$ErrorActionPreference = "Stop"

$packageVersion = (Get-Content -Raw package.json | ConvertFrom-Json).version
if ($packageVersion -ne $env:RELEASE_TAG) {
throw "package.json version '$packageVersion' does not match release tag '$env:RELEASE_TAG'."
}

node .codex\skills\tibia-client-release\scripts\validate-release.mjs
Comment on lines +305 to +317
if (-not $releaseExists) {
gh release create $env:RELEASE_TAG `
--repo dudantas/tibia-client `
--verify-tag `
--title $env:RELEASE_TAG `
--notes $env:RELEASE_TAG
}
else {
gh release edit $env:RELEASE_TAG `
--repo dudantas/tibia-client `
--title $env:RELEASE_TAG `
--notes $env:RELEASE_TAG
}
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