From 6b50cfbc2764e8d9497419b6097dcea31d47d419 Mon Sep 17 00:00:00 2001 From: Valmo Trindade Date: Wed, 29 Jul 2026 22:33:18 +0000 Subject: [PATCH 1/5] fix(ci): use runner host paths for dev workshop --- .gitea/workflows/dev-workshop.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.gitea/workflows/dev-workshop.yml b/.gitea/workflows/dev-workshop.yml index 548a367..583e58e 100644 --- a/.gitea/workflows/dev-workshop.yml +++ b/.gitea/workflows/dev-workshop.yml @@ -7,8 +7,8 @@ on: env: STEAM_APP_ID: "107410" - HOST_REPO: /home/valmo/braf - HOST_CACHE: /home/valmo/braf-ci-cache/dev-workshop + HOST_REPO: /data/valmo/braf + HOST_CACHE: /data/valmo/braf-ci-cache/dev-workshop BRAF_CI_STAGE_DIR: dist/dev/@braf_dev jobs: @@ -29,7 +29,6 @@ jobs: run: | set -euo pipefail - mkdir -p "$HOST_CACHE" docker run --rm -i \ -e BRAF_CI_STAGE_DIR \ @@ -46,7 +45,7 @@ jobs: -v "$HOST_REPO:/repo" \ -v "$HOST_CACHE:/cache" \ -v /var/run/docker.sock:/var/run/docker.sock \ - docker.gitea.com/runner-images:ubuntu-latest \ + docker.io/gitea/runner-images:ubuntu-24.04-full-v26.07.01 \ bash -s <<'BRAF_CI' set -euo pipefail From 4539d3d230fb4434d4ca573c173005fd91f91aaf Mon Sep 17 00:00:00 2001 From: Valmo Trindade Date: Wed, 29 Jul 2026 22:37:29 +0000 Subject: [PATCH 2/5] fix(ci): run workshop build container as root --- .gitea/workflows/dev-workshop.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitea/workflows/dev-workshop.yml b/.gitea/workflows/dev-workshop.yml index 583e58e..aa01b90 100644 --- a/.gitea/workflows/dev-workshop.yml +++ b/.gitea/workflows/dev-workshop.yml @@ -31,6 +31,7 @@ jobs: docker run --rm -i \ + --user root \ -e BRAF_CI_STAGE_DIR \ -e GIT_BEFORE \ -e GIT_SHA \ From 4526cbb33a23c20f5e0bb12302017071cedae1fb Mon Sep 17 00:00:00 2001 From: Valmo Trindade Date: Wed, 29 Jul 2026 22:42:48 +0000 Subject: [PATCH 3/5] fix(ci): seed missing dev workshop PBOs --- .gitea/workflows/dev-workshop.yml | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/.gitea/workflows/dev-workshop.yml b/.gitea/workflows/dev-workshop.yml index aa01b90..64c3236 100644 --- a/.gitea/workflows/dev-workshop.yml +++ b/.gitea/workflows/dev-workshop.yml @@ -179,7 +179,23 @@ jobs: git_auth lfs fetch origin "$GIT_SHA" --include="$include" --exclude="*" git lfs checkout "${changed_addons[@]}" else - echo "Only workshop metadata changed; using cached PBOs." + echo "Only workshop metadata changed; seeding any missing PBO cache entries." + mapfile -t changed_addons < <( + git ls-tree -d --name-only "$GIT_SHA" | + awk "/^braf_/ {print}" | + while read -r addon; do + if git cat-file -e "$GIT_SHA:$addon/config.cpp" 2>/dev/null; then + printf "%s\n" "$addon" + fi + done + ) + include="" + for addon in "${changed_addons[@]}"; do + include+="${include:+,}${addon}/**" + done + echo "Fetching LFS for cache seed: $include" + git_auth lfs fetch origin "$GIT_SHA" --include="$include" --exclude="*" + git lfs checkout "${changed_addons[@]}" fi build_args=( From 39352a0d765b8766dae8c01eb84c4958ed79021f Mon Sep 17 00:00:00 2001 From: Valmo Trindade Date: Thu, 30 Jul 2026 00:01:39 +0000 Subject: [PATCH 4/5] fix(ci): forbid raw PBO workshop uploads --- make/ci_dev_workshop.py | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/make/ci_dev_workshop.py b/make/ci_dev_workshop.py index 8515796..cc7bf50 100644 --- a/make/ci_dev_workshop.py +++ b/make/ci_dev_workshop.py @@ -352,14 +352,11 @@ def run_pboproject(addon: str, source_root: Path, output_dir: Path) -> None: "+O" if addon in obfuschatedList else "-O", ] else: - source = repo_root() / addon - fallback = output_dir / f"{addon}.pbo" - print( - "Mikero pboProject is not available; writing raw DEV PBO " - f"for {addon} at {fallback}" + raise RuntimeError( + "Mikero pboProject is required to build DEV Workshop PBOs. " + "The installed DePbo makepbo tool only creates a raw archive and " + "must not be published as a BRAF build." ) - write_raw_pbo(addon, source, fallback) - return print(f"::group::Building {addon}") print(" ".join(cmd)) @@ -467,12 +464,14 @@ def main() -> int: source_root = Path(args.source_root).resolve() elif args.dry_run: source_root = (cache_dir / "mikero-source" / "braf").resolve() - elif not (shutil.which("pboproject") or shutil.which("pboProject")): - source_root = root - else: + elif shutil.which("pboproject") or shutil.which("pboProject"): source_root_addons = requested_addons if requested_addons is not None else addons source_root = prepare_mikero_source_root(root, cache_dir, source_root_addons).resolve() - + else: + raise RuntimeError( + "Mikero pboProject is not installed. Refusing to stage or publish " + "raw PBO archives as a DEV Workshop build." + ) current_hashes = {addon: addon_digest(root / addon) for addon in addons} manifest = load_manifest(manifest_path) manifest_addons = manifest.setdefault("addons", {}) From f492aacf78b1e523e933a349c156c22ef31f5fe5 Mon Sep 17 00:00:00 2001 From: Valmo Trindade Date: Thu, 30 Jul 2026 00:43:00 +0000 Subject: [PATCH 5/5] fix(ci): run workshop builds with local Mikero --- .gitea/workflows/dev-workshop.yml | 33 +++++++++++++++++-------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/.gitea/workflows/dev-workshop.yml b/.gitea/workflows/dev-workshop.yml index 64c3236..925de28 100644 --- a/.gitea/workflows/dev-workshop.yml +++ b/.gitea/workflows/dev-workshop.yml @@ -46,7 +46,7 @@ jobs: -v "$HOST_REPO:/repo" \ -v "$HOST_CACHE:/cache" \ -v /var/run/docker.sock:/var/run/docker.sock \ - docker.io/gitea/runner-images:ubuntu-24.04-full-v26.07.01 \ + valmo/braf-mikero:3.23.8.60 \ bash -s <<'BRAF_CI' set -euo pipefail @@ -65,22 +65,25 @@ jobs: } install_mikero() { - if [[ ! -x /cache/mikero-tools/bin/makepbo ]]; then - rm -rf /tmp/mikero-tools-action /cache/mikero-tools - mkdir -p /tmp/mikero-tools-action /cache/mikero-tools - curl -fsSL \ - https://github.com/arma-actions/mikero-tools/archive/refs/heads/master.tar.gz \ - -o /tmp/mikero-tools-action.tar.gz - tar -zxf /tmp/mikero-tools-action.tar.gz \ - --strip-components=1 \ - -C /tmp/mikero-tools-action - tar -xf /tmp/mikero-tools-action/linux/*.tar \ - --strip-components=1 \ - -C /cache/mikero-tools + export WINEPREFIX=/cache/mikero-wine + export WINEARCH=win64 + export WINEDEBUG=-all + + if ! command -v pboProject >/dev/null; then + echo "pboProject is missing from valmo/braf-mikero image." >&2 + return 1 fi - export PATH="/cache/mikero-tools/bin:$PATH" - export LD_LIBRARY_PATH="${LD_LIBRARY_PATH:-}:/cache/mikero-tools/lib" + if ! command -v winetricks >/dev/null; then + apt-get install -y winetricks + fi + + if [[ ! -f "$WINEPREFIX/drive_c/windows/system32/mfc140u.dll" ]]; then + echo "Initializing the persistent Mikero Wine runtime." + xvfb-run -a winetricks -q vcrun2015 + fi + + sed -i "s#exec /usr/lib/wine/wine64#exec xvfb-run -a /usr/bin/wine#" /usr/local/bin/pboProject } is_zero_sha() {