Compare commits
10 commits
6aa3d3e221
...
d0c64d75eb
| Author | SHA1 | Date | |
|---|---|---|---|
| d0c64d75eb | |||
| 3f71d66b0e | |||
| 0f5e0c7e01 | |||
| 76d441e409 | |||
| 7c5fb74e20 | |||
| 1287d50d45 | |||
| 737361a29e | |||
| 84f045c724 | |||
| adccfdec30 | |||
| c64e0baf75 |
4 changed files with 77 additions and 9 deletions
|
|
@ -18,8 +18,58 @@ jobs:
|
|||
- name: Build per-addon zip(s)
|
||||
run: bash tools/build_zip.sh
|
||||
|
||||
- name: Publish release
|
||||
uses: actions/gitea-release-action@v1
|
||||
with:
|
||||
files: dist/*.zip
|
||||
token: ${{ secrets.GITEA_TOKEN }}
|
||||
- name: Publish release (Gitea API direct; no action dependency)
|
||||
env:
|
||||
GITEA_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
REPO: ${{ github.repository }}
|
||||
TAG: ${{ github.ref_name }}
|
||||
API: ${{ github.server_url }}/api/v1
|
||||
# Gitea attachment ceiling is 200 MiB (see roles/gitea config).
|
||||
# Skip anything larger so one oversized asset doesn't fail the job.
|
||||
MAX_BYTES: 209715200
|
||||
run: |
|
||||
set -euo pipefail
|
||||
# Create the release (or reuse if it already exists for this tag).
|
||||
RID=$(curl -s -H "Authorization: token $GITEA_TOKEN" \
|
||||
"$API/repos/$REPO/releases/tags/$TAG" 2>/dev/null \
|
||||
| jq -r '.id // empty')
|
||||
if [ -z "$RID" ]; then
|
||||
RID=$(curl -sf -X POST -H "Authorization: token $GITEA_TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
"$API/repos/$REPO/releases" \
|
||||
-d "$(jq -nc --arg t "$TAG" '{tag_name:$t,name:$t,draft:false,prerelease:false,hide_archive_links:true}')" \
|
||||
| jq -r '.id')
|
||||
fi
|
||||
echo "release id: $RID"
|
||||
# Gitea honors hide_archive_links only on edit, not create — PATCH it
|
||||
# so the auto-generated Source Code (zip/tar.gz) links stay hidden.
|
||||
curl -sf -X PATCH -H "Authorization: token $GITEA_TOKEN" -H "Content-Type: application/json" \
|
||||
"$API/repos/$REPO/releases/$RID" -d '{"hide_archive_links":true}' >/dev/null || true
|
||||
# Upload every dist/*.zip. Per-asset failures don't fail the job —
|
||||
# we want partial releases to still publish rather than block the
|
||||
# whole pipeline on one big file.
|
||||
failed=0
|
||||
uploaded=0
|
||||
for f in dist/*.zip; do
|
||||
name=$(basename "$f")
|
||||
size=$(stat -c '%s' "$f")
|
||||
if [ "$size" -gt "$MAX_BYTES" ]; then
|
||||
echo "::warning::skip $name (${size} B > ${MAX_BYTES} B Gitea limit; host on CDN instead)"
|
||||
failed=$((failed+1))
|
||||
continue
|
||||
fi
|
||||
echo "uploading $name ($(numfmt --to=iec "$size"))"
|
||||
if curl -sf -X POST -H "Authorization: token $GITEA_TOKEN" \
|
||||
-F "attachment=@$f" \
|
||||
"$API/repos/$REPO/releases/$RID/assets?name=$name" \
|
||||
| jq -r '" -> " + .browser_download_url'; then
|
||||
uploaded=$((uploaded+1))
|
||||
else
|
||||
echo "::warning::upload failed for $name"
|
||||
failed=$((failed+1))
|
||||
fi
|
||||
done
|
||||
echo "release published: $uploaded uploaded, $failed skipped/failed"
|
||||
# Only fail the job if NO assets uploaded — a release with zero
|
||||
# attachments isn't useful to anyone.
|
||||
[ "$uploaded" -gt 0 ]
|
||||
|
|
|
|||
|
|
@ -199,7 +199,7 @@ local function Constructor()
|
|||
button:SetScript("OnKeyDown", Keybinding_OnKeyDown)
|
||||
button:SetScript("OnMouseDown", Keybinding_OnMouseDown)
|
||||
button:SetScript("OnMouseWheel", Keybinding_OnMouseWheel)
|
||||
button:SetScript("OnGamePadButtonDown", Keybinding_OnKeyDown)
|
||||
pcall(button.SetScript, button, "OnGamePadButtonDown", Keybinding_OnKeyDown)
|
||||
button:SetPoint("BOTTOMLEFT")
|
||||
button:SetPoint("BOTTOMRIGHT")
|
||||
button:SetHeight(24)
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ local Omen = LibStub("AceAddon-3.0"):GetAddon("Omen")
|
|||
if not Omen then return end
|
||||
|
||||
local PREFIX = "OMSYNC"
|
||||
local THROTTLE = 0.4 -- min seconds between sends per (subject, mob)
|
||||
local THROTTLE = 0.4 -- hard floor: min seconds between sends per (subject, mob)
|
||||
local STALE = 8 -- seconds; entries older than this are ignored
|
||||
local MIN_DELTA = 0.05 -- 5%; smaller changes don't trigger a send
|
||||
|
||||
|
|
@ -98,7 +98,8 @@ function Omen:SyncBroadcastThreat(subjectGUID, mobGUID, value, isTanking)
|
|||
local age = now - prev.time
|
||||
local maxV = math.max(value, prev.value, 1)
|
||||
local pct = math.abs(value - prev.value) / maxV
|
||||
if age < THROTTLE and pct < MIN_DELTA then return end
|
||||
if age < THROTTLE then return end -- hard rate floor
|
||||
if pct < MIN_DELTA then return end
|
||||
end
|
||||
lastSend[subjectGUID][mobGUID] = { value = value, time = now }
|
||||
|
||||
|
|
@ -110,6 +111,12 @@ end
|
|||
-- Receiver
|
||||
-- ---------------------------------------------------------------------------
|
||||
|
||||
-- Register the prefix so CHAT_MSG_ADDON fires for our messages on 3.3.5.
|
||||
-- Without this, incoming OMSYNC packets are silently discarded by the client.
|
||||
if RegisterAddonMessagePrefix then
|
||||
RegisterAddonMessagePrefix(PREFIX)
|
||||
end
|
||||
|
||||
local f = CreateFrame("Frame")
|
||||
f:RegisterEvent("CHAT_MSG_ADDON")
|
||||
f:RegisterEvent("PLAYER_LEAVING_WORLD")
|
||||
|
|
|
|||
|
|
@ -6,12 +6,23 @@
|
|||
# - Always archives HEAD, so the working tree state is irrelevant.
|
||||
# - If more than one addon folder is present, also emits <repo>-all.zip
|
||||
# with every addon folder side-by-side at the zip root.
|
||||
# - When run inside Gitea Actions the working tree lives under a
|
||||
# per-job dir like /var/lib/act_runner/work/.../hostexecutor, so the
|
||||
# repo name comes from $GITHUB_REPOSITORY (set by the runner) and
|
||||
# only falls back to the toplevel basename for local invocations.
|
||||
set -euo pipefail
|
||||
|
||||
root=$(git rev-parse --show-toplevel)
|
||||
cd "$root"
|
||||
|
||||
repo_name=$(basename "$root")
|
||||
# Gitea Actions sets GITHUB_REPOSITORY=owner/repo. The basename of
|
||||
# `git rev-parse --show-toplevel` inside the runner is the worker dir
|
||||
# (e.g. `hostexecutor`), which would name the bundle wrong.
|
||||
if [ -n "${GITHUB_REPOSITORY:-}" ]; then
|
||||
repo_name="${GITHUB_REPOSITORY##*/}"
|
||||
else
|
||||
repo_name=$(basename "$root")
|
||||
fi
|
||||
dist="$root/dist"
|
||||
|
||||
# Find Foo/Foo.toc pairs at depth 1; ignore libs nested deeper.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue