Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
154 commits
Select commit Hold shift + click to select a range
b99c95a
build(classic): add pinned LLVM toolchain and native coverage opt-in
zoeyrose Oct 11, 2026
aae84f0
fix(build): preserve atomic LLVM coverage counters
zoeyrose Oct 11, 2026
e1a9221
build(windows): consume LLVM toolchains and stage verified DLL closure
zoeyrose Oct 11, 2026
6d84267
build(release): retain LLVM tools in standalone source archives
zoeyrose Oct 11, 2026
0862ca5
build(ci): migrate classic validation consumers to LLVM
zoeyrose Oct 11, 2026
f1f9bda
fix(ci): bind GPU qualification to supported Linux runtime
zoeyrose Oct 11, 2026
185fbbc
build(classic): require LLVM tools and native coverage by default
zoeyrose Oct 11, 2026
c196b0d
build(client): require LLVM producer for dependency helper
zoeyrose Oct 11, 2026
b2b7ab9
fix(windows): bind package DLLs and Python snapshots to producer rece…
zoeyrose Oct 11, 2026
4681124
test(client): add exact Windows font dependency comparison
zoeyrose Oct 11, 2026
3a225cb
test(ci): compare native Windows font rendering across toolchains
zoeyrose Oct 11, 2026
653712c
test(build): isolate version probes from LLVM compiler setup
zoeyrose Oct 11, 2026
18d562a
fix(ci): forward LLVM coverage selection and reports
zoeyrose Oct 11, 2026
5be6e36
fix(build): isolate LLVM coverage caches from GCC presets
zoeyrose Oct 11, 2026
1e00906
fix(build): isolate LLVM coverage caches from GCC presets
zoeyrose Oct 11, 2026
30a242d
build(client): migrate Linux package producers to LLVM 23.1.3
zoeyrose Oct 11, 2026
312b96d
build(classic): bind and validate remaining LLVM binutils
zoeyrose Oct 11, 2026
4692115
test(ci): assert final LLVM coverage preset contracts
zoeyrose Oct 11, 2026
83dd8ad
fix(windows): resolve sealed Python providers against reachable targe…
zoeyrose Oct 11, 2026
fd9b4fd
fix(windows): bind missing providers and parse LLVM delayed imports
zoeyrose Oct 11, 2026
f1d38b8
fix(release): reject LLVM coverage in Linux AppImages
zoeyrose Oct 11, 2026
9edbc49
fix(build): select LLVM coverage toolchains from archive layouts
zoeyrose Oct 11, 2026
c3522fc
fix(build): use pinned native LLVM for macOS Classic builds
zoeyrose Oct 11, 2026
3e34e79
build(ci): preserve release compiler identity in packaging recovery
zoeyrose Oct 11, 2026
d84e134
fix(build): resolve opt-in LLVM toolchains in scoped archives
zoeyrose Oct 11, 2026
a077263
fix(release): bind recovered AppImage SDK to exact source lock
zoeyrose Oct 11, 2026
1fe8546
fix(ci): select native validation for macOS LLVM contracts
zoeyrose Oct 11, 2026
12b5f13
fix(ci): separate LLVM and GCC validation caches
zoeyrose Oct 11, 2026
5444ca4
fix(ci): isolate LLVM validation build caches
zoeyrose Oct 11, 2026
be1148b
chore: synchronize LLVM prerequisite with current main
zoeyrose Oct 11, 2026
495471b
chore(build): align final LLVM source with reviewed prerequisites
zoeyrose Oct 11, 2026
683a7dc
fix(ci): retain historical AppImage packaging lock bytes
zoeyrose Oct 11, 2026
748b167
fix(release): preserve pre-LLVM AppImage recovery contracts
zoeyrose Oct 11, 2026
7f1bfd7
fix(ci): recognize scoped source archives in LLVM coverage
zoeyrose Oct 11, 2026
ac67956
fix(ci): select final LLVM test trees across CTest versions
zoeyrose Oct 11, 2026
fa68a48
ci(build): add manual native macOS LLVM CPU qualification
zoeyrose Oct 11, 2026
4f1fc8f
ci(build): expose native macOS qualification through Check
zoeyrose Oct 11, 2026
e5b7ef7
build: align LLVM migration with merged prerequisite
zoeyrose Oct 11, 2026
5563927
fix(build): preserve native test interception on Darwin
zoeyrose Oct 11, 2026
3edfbbc
fix(libatrinik): declare optional toolkit diagnostic state
zoeyrose Oct 11, 2026
4e32109
docs(libatrinik): describe macOS entropy test wrappers
zoeyrose Oct 11, 2026
736a330
fix(build): bind Windows notices and isolate native worldmaker tools
zoeyrose Oct 11, 2026
1f39dec
test(release): name public packaging fixtures precisely
zoeyrose Oct 11, 2026
241f761
test(build): verify worldmaker bytecode environment stays scoped
zoeyrose Oct 11, 2026
0771fc9
test(build): retain bytecode guard through native LLVM launcher
zoeyrose Oct 11, 2026
12c5ef0
fix(build): select libc++ headers from the macOS SDK
zoeyrose Oct 11, 2026
d683280
fix(build): retain LLVM tools in macOS compiler checks
zoeyrose Oct 11, 2026
a4164c8
fix(build): resolve strict LLVM 23 native diagnostics
zoeyrose Oct 11, 2026
e4e84fb
fix(tests): preserve escape-byte shutdown fixture under LLVM 23
zoeyrose Oct 11, 2026
ad7f427
fix(ci): qualify supported Classic macOS targets
zoeyrose Oct 11, 2026
a6a8a8d
fix(ci): collect reachable native macOS build errors
zoeyrose Oct 11, 2026
138a4c1
fix(libatrinik): include POSIX case comparison declarations
zoeyrose Oct 11, 2026
1b7d22e
fix(client): guard test-only map allocation counters
zoeyrose Oct 11, 2026
f3cdb57
fix(build): reject unsupported Windows Clang ABIs
zoeyrose Oct 11, 2026
3a1211f
fix(build): validate Windows targets for every enabled configuration
zoeyrose Oct 11, 2026
4af4f6b
fix(libatrinik): expose Darwin APIs and protect fixture writes
zoeyrose Oct 11, 2026
072f043
fix(client): saturate telemetry at an exact floating boundary
zoeyrose Oct 11, 2026
ed4dd63
fix(build): expand snprintf buffer arguments for fortified stdio
zoeyrose Oct 11, 2026
a87b266
fix(build): select matching macOS dependency headers
zoeyrose Oct 11, 2026
af52b5f
test(client): make movement report failure fixture portable
zoeyrose Oct 11, 2026
6167570
fix(build): require coherent Readline headers and library
zoeyrose Oct 11, 2026
878a145
feat(ci): collect native macOS curl provider and trust evidence
zoeyrose Oct 11, 2026
b5a80c5
fix(client): qualify the macOS mixer decoder contract
zoeyrose Oct 11, 2026
0d83895
fix(ci): preserve macOS mixer dependency lookup errors
zoeyrose Oct 11, 2026
8048191
test(ci): reject unavailable macOS mixer dependencies
zoeyrose Oct 11, 2026
91713b4
test(ci): cover LLVM profile identities and zero baselines
zoeyrose Oct 11, 2026
a5c2ee1
test(ci): adapt coverage exports to complete LLVM identities
zoeyrose Oct 11, 2026
e71886b
fix(ci): preserve native LLVM coverage identities and zero maps
zoeyrose Oct 11, 2026
4309750
fix(ci): validate LLVM report and raw profile completeness
zoeyrose Oct 11, 2026
91be120
fix(coverage): bound mapping exports to production sources
zoeyrose Oct 11, 2026
d9f37f4
fix(coverage): compare complete expansion descriptor multisets
zoeyrose Oct 11, 2026
b26271a
docs(coverage): list LLVM object inspector prerequisite
zoeyrose Oct 11, 2026
3d5beca
ci(coverage): exercise LLVM identity fixtures in pinned SDK
zoeyrose Oct 11, 2026
ebef0b6
fix(libatrinik): preserve Windows socket conversion in fd sets
zoeyrose Oct 11, 2026
bc02dd9
test(ci): reject macOS curl cohort policy drift
zoeyrose Oct 11, 2026
2419c01
test(ci): bind native curl consumers and SDK providers
zoeyrose Oct 11, 2026
16bf74d
test(ci): remove ambient native curl build overrides
zoeyrose Oct 11, 2026
0ba7e95
test(ci): retain failed curl diagnostics and reject extra providers
zoeyrose Oct 11, 2026
6dea3d0
test(ci): reject Autoconf dependency helper overrides
zoeyrose Oct 11, 2026
9af550a
build(ci): prepare native c-ares curl without losing macOS features
zoeyrose Oct 11, 2026
70f6d67
ci(macos): qualify the feature-preserving c-ares curl cohort
zoeyrose Oct 11, 2026
65dce4a
fix(ci): require TLS 1.2 for native curl fixture
zoeyrose Oct 11, 2026
f485833
test(ci): bind native curl symbol providers and platform dependency c…
zoeyrose Oct 11, 2026
2aa54ed
fix(ci): bind macOS system curl coexistence to native dependency proof
zoeyrose Oct 11, 2026
bbaf778
fix(server): preserve Windows socket conversion in fd sets
zoeyrose Oct 11, 2026
2e76f60
fix(ci): isolate historical Windows font compiler cache
zoeyrose Oct 11, 2026
3aef394
fix(ci): verify historical Windows font runtime closure
zoeyrose Oct 11, 2026
6065bf7
fix(server): align LLVM coverage preset without precompiled headers
zoeyrose Oct 11, 2026
d90876b
build(ci): pin published LLVM Windows candidate SDKs
zoeyrose Oct 11, 2026
0ca0e72
fix(ci): use complete Windows SDK for server graphs
zoeyrose Oct 11, 2026
8dadfdc
test(ci): isolate Windows SDK host generator fixtures
zoeyrose Oct 11, 2026
0c3a34d
fix(libatrinik): accept CRLF console commands with binary stdin
zoeyrose Oct 11, 2026
108844a
test(ci): require native Windows console regression coverage
zoeyrose Oct 11, 2026
2a3a759
fix(client): create font probe outputs across Windows CRTs
zoeyrose Oct 11, 2026
ffe1af8
chore(client): trace Windows close and shutdown stages
zoeyrose Oct 11, 2026
9d6be21
ci: retain Windows font probe diagnostics per producer
zoeyrose Oct 11, 2026
e7b80b6
ci: retain bounded Windows client lifecycle evidence
zoeyrose Oct 11, 2026
2e1432d
build(ci): pin the released LLVM Classic Linux SDK
zoeyrose Oct 11, 2026
41ccb86
build(server): bind runtime providers to the released LLVM SDK
zoeyrose Oct 11, 2026
a037263
fix(ci): quote the empty tooling test CI assignment
zoeyrose Oct 11, 2026
c2a2771
build(ci): pin broad Linux GPU SDK to released 1.17
zoeyrose Oct 11, 2026
58e7b21
ci(server): qualify final LLVM server image without publishing
zoeyrose Oct 11, 2026
0cea351
fix(ci): read packaged server identity through version command
zoeyrose Oct 11, 2026
495b6e5
Merge commit '745e36fb460c6f1cd200e6bb26b015a951624758' into build/ll…
zoeyrose Oct 11, 2026
67896bd
fix(libatrinik): preserve admission HTTPS tests on macOS
zoeyrose Oct 11, 2026
6c8ef17
fix(release): inspect AppImages with trusted LLVM readelf
zoeyrose Oct 11, 2026
b19eb40
test(release): always validate recorded LLVM inspection guards
zoeyrose Oct 11, 2026
49198c7
fix(build): use LLVM objdump for Debian dependency inspection
zoeyrose Oct 11, 2026
6c4508c
test(build): verify Windows runtime CMake argument boundaries
zoeyrose Oct 11, 2026
210241e
fix(ci): validate Docker manifest and config identities separately
zoeyrose Oct 11, 2026
f0e055c
fix(ci): retain the pinned historical Debian GCC producer
zoeyrose Oct 11, 2026
344f54a
test(ci): observe owned Windows client wait chains after close timeout
zoeyrose Oct 11, 2026
be8ee00
style(ci): normalize wait-chain fixture copyright
zoeyrose Oct 11, 2026
616781f
fix(build): normalize Debian LLVM notice permissions
zoeyrose Oct 11, 2026
7252785
fix(ci): select native jobs for shared Windows runtime tests
zoeyrose Oct 11, 2026
963ba52
fix(ci): enable bounded Windows wait-chain traversal
zoeyrose Oct 11, 2026
eabb5ce
fix(libatrinik): complete admission HTTPS certificate profiles
zoeyrose Oct 11, 2026
36a3976
fix(ci): select native checks for admission HTTPS fixtures
zoeyrose Oct 11, 2026
dad9c85
test(libatrinik): retain numeric admission HTTPS transport evidence
zoeyrose Oct 11, 2026
ae72b40
test(ci): select native validation for admission platform fixture
zoeyrose Oct 11, 2026
7b77a65
test(libatrinik): compare admission CA trust paths on failure
zoeyrose Oct 11, 2026
538a4d8
build: refresh published LLVM SDK consumer pins to 1.18
zoeyrose Oct 11, 2026
a425bf0
fix(build): preserve existing workflow test header convention
zoeyrose Oct 11, 2026
3bf6b03
build(server): bind provider lock to measured SDK 1.18 payload
zoeyrose Oct 11, 2026
5dc2769
fix(libatrinik): isolate admission HTTPS certificate profiles
zoeyrose Oct 11, 2026
180ef3b
fix(release): bound historical Windows producer selection
zoeyrose Oct 11, 2026
0fefed5
fix(release): require current LLVM source descriptor
zoeyrose Oct 11, 2026
1b121f7
fix(release): retain reviewed schema 2 Windows lineage
zoeyrose Oct 11, 2026
202218b
fix(release): admit authenticated schema 1 Windows source
zoeyrose Oct 11, 2026
967eb42
fix(release): preserve authenticated historical compiler producers
zoeyrose Oct 11, 2026
5b8db27
fix(ci): select native builds for coverage preset tests
zoeyrose Oct 11, 2026
f6a2e77
test(ci): capture bounded Windows close timeout stacks
zoeyrose Oct 11, 2026
7df5236
ci(windows): qualify owned stack diagnostics
zoeyrose Oct 11, 2026
d9a910b
fix(build): bind managed Windows host Python helpers
zoeyrose Oct 11, 2026
3a7c72a
chore: integrate current main content lock
zoeyrose Oct 11, 2026
8d30e1b
test(client): recognize bound Windows host Python contract
zoeyrose Oct 11, 2026
601b9f1
fix(release): authenticate current Windows host Python recipes
zoeyrose Oct 11, 2026
49a22bf
fix(ci): route Windows contract fixtures to native jobs
zoeyrose Oct 11, 2026
992396d
test(release): exercise current Windows recipe in workflow fixture
zoeyrose Oct 11, 2026
5f8b514
Merge commit '2654b1bef9573f3e167d470a3cb9c72acd04819c' into build/ll…
zoeyrose Oct 11, 2026
157555a
fix(release): bind Windows producer host Python environment
zoeyrose Oct 11, 2026
5979a29
fix(ci): preserve historical benchmark compiler cohorts
zoeyrose Oct 11, 2026
a7ccbf7
fix(client): avoid draining primary work for first minimap allocation
zoeyrose Oct 11, 2026
b327a1c
fix(release): authenticate integrated protocol 1084 recipe
zoeyrose Oct 11, 2026
45b79b1
fix(release): authenticate shared Classic CMake recipe inputs
zoeyrose Oct 11, 2026
15fdae1
fix(ci): select server benchmark contract changes
zoeyrose Oct 11, 2026
a269016
fix(server): budget the long freeze coverage regression
zoeyrose Oct 12, 2026
3ab0fe0
fix(release): guard selected Windows producer policy and routing
zoeyrose Oct 12, 2026
d3b25af
fix(ci): validate toolkit dependency interface changes
zoeyrose Oct 12, 2026
24f6ecb
fix(client): trace bounded GPU presentation progress in review smoke
zoeyrose Oct 12, 2026
665b4c0
fix(libatrinik): avoid DNS during HTTPS fixture binding
zoeyrose Oct 12, 2026
280aa3d
test(ci): isolate benchmark fixture Git maintenance
zoeyrose Oct 12, 2026
31585a0
test(ci): isolate benchmark comparison worktree Git
zoeyrose Oct 12, 2026
9f2e432
feat(ci): diagnose CPU-busy owned Windows threads after close timeout
zoeyrose Oct 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
127 changes: 109 additions & 18 deletions .github/workflows/build-release-candidate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,8 @@ permissions:
packages: read

env:
CLASSIC_LINUX_IMAGE: ghcr.io/atrinik/classic-build:1.16.0@sha256:e1c366dbf83ef987765ff913bbb193868314a139ae1e00cc134b22a3159464f2
WINDOWS_BUILD_CACHE_EPOCH: 1.16.0-4266256d4b4196241df6463e687dd286022e24e3bc46dfafb4f877744a731d69
CLASSIC_LINUX_IMAGE: ghcr.io/atrinik/classic-build:1.18.0@sha256:86d3c4182dc786db8ace56d9d8dc57ff4f14c1c4f517b728547626f576280449
WINDOWS_BUILD_CACHE_EPOCH: llvm-23.1.3-4af130578df18a1944880cd279c7f23afe9cc668-01065f081cdf843a6591abf25f2b27734103ab385c5aa003b2eeb9a3a1ca0e5a

concurrency:
group: >-
Expand All @@ -71,6 +71,10 @@ jobs:
tag: ${{ steps.metadata.outputs.tag }}
version: ${{ steps.metadata.outputs.version }}
artifact_schema: ${{ steps.metadata.outputs.artifact_schema }}
compiler_image: ${{ steps.metadata.outputs.compiler_image }}
windows_image: ${{ steps.metadata.outputs.windows_image }}
windows_mode: ${{ steps.metadata.outputs.windows_mode }}
windows_cache_epoch: ${{ steps.metadata.outputs.windows_cache_epoch }}
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
Expand Down Expand Up @@ -108,8 +112,15 @@ jobs:
artifact_schema=$(python3 build/release-automation/tools/release/release_artifacts.py \
--print-source-schema --revision "${commit}" --source-root "${GITHUB_WORKSPACE}")
[[ ${artifact_schema} == 1 || ${artifact_schema} == 2 || ${artifact_schema} == 3 ]]
compiler_image=$(python3 build/release-automation/tools/release/resolve_compiler_image.py \
--source-root "${GITHUB_WORKSPACE}" --revision "${commit}" \
--current-image "${CLASSIC_LINUX_IMAGE}")
python3 build/release-automation/tools/release/windows_producer.py \
--source-root "${GITHUB_WORKSPACE}" --revision "${commit}" \
--github-output "${GITHUB_OUTPUT}"
{
echo "artifact_schema=${artifact_schema}"
echo "compiler_image=${compiler_image}"
echo "tag=${RELEASE_TAG}"
echo "version=${RELEASE_VERSION}"
echo "commit=${commit}"
Expand Down Expand Up @@ -176,6 +187,8 @@ jobs:

sources:
name: Build source packages and protocol wheel
env:
CLASSIC_LINUX_IMAGE: ${{ needs.metadata.outputs.compiler_image }}
permissions:
contents: read
needs: metadata
Expand Down Expand Up @@ -266,11 +279,15 @@ jobs:
name: discord-application-id-${{ inputs.tag }}
path: build/discord-config
- name: Prepare pinned Debian testing build and clean runtime
env:
RELEASE_REVISION: ${{ needs.metadata.outputs.commit }}
run: |
debian_producer=$(python3 tools/ci/debian-client/historical_producer.py \
--source-root "${GITHUB_WORKSPACE}/candidate-source" --revision "${RELEASE_REVISION}")
docker build --platform linux/amd64 --target build --tag classic-deb-build \
--file tools/ci/debian-client/Dockerfile tools/ci/debian-client
--file "${debian_producer}" tools/ci/debian-client
docker build --platform linux/amd64 --target runtime --tag classic-deb-runtime \
--file tools/ci/debian-client/Dockerfile tools/ci/debian-client
--file "${debian_producer}" tools/ci/debian-client
mkdir -p build/linux-package-evidence build/linux-packages build/discord-config
docker image inspect classic-deb-build classic-deb-runtime \
--format '{{.Id}}' > build/linux-package-evidence/images.txt
Expand Down Expand Up @@ -339,6 +356,8 @@ jobs:

client-appimage:
name: Build and smoke Ubuntu-baseline AppImage
env:
CLASSIC_LINUX_IMAGE: ${{ needs.metadata.outputs.compiler_image }}
# The runner retains Actions service/cache authority; candidate code must
# never inherit it. Trusted caller scripts build/inspect on the host, while
# candidate scripts and payloads execute only in offline, unprivileged
Expand All @@ -365,6 +384,7 @@ jobs:
ref: ${{ needs.metadata.outputs.commit }}
path: candidate-source
persist-credentials: false
fetch-depth: 0
- uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8
with:
name: candidate-dependencies-${{ needs.metadata.outputs.tag }}
Expand All @@ -380,12 +400,26 @@ jobs:
name: discord-application-id-${{ inputs.tag }}
path: build/discord-config
- name: Prepare pinned Ubuntu builder and clean runtime images
env:
RELEASE_REVISION: ${{ needs.metadata.outputs.commit }}
run: |
mkdir -p build/appimage-evidence build/appimage-packages build/discord-config
source_lock_path=$(mktemp "${RUNNER_TEMP}/classic-source-packaging-lock.XXXXXX")
trap 'rm -f "${source_lock_path}"' EXIT
python3 tools/release/resolve_compiler_image.py \
--source-root "${GITHUB_WORKSPACE}/candidate-source" --revision "${RELEASE_REVISION}" \
--current-image "${CLASSIC_LINUX_IMAGE}" --source-packaging-lock-output "${source_lock_path}" \
> build/appimage-evidence/compiler-image.txt
compiler_arguments=()
if test -s "${source_lock_path}"; then
compiler_arguments=(--source-packaging-lock "${source_lock_path}")
fi
python3 tools/ci/appimage/prepare.py --output build/appimage-context \
--compiler-image "${CLASSIC_LINUX_IMAGE}" "${compiler_arguments[@]}" \
> build/appimage-evidence/prepare.log 2>&1
cp build/appimage-context/packaging.lock.json build/appimage-evidence/
docker build --platform linux/amd64 --target build --tag classic-appimage-build \
--build-arg "ATRINIK_COMPILER_IMAGE=${CLASSIC_LINUX_IMAGE}" \
--file build/appimage-context/Dockerfile build/appimage-context \
> build/appimage-evidence/image-build.log 2>&1
for runtime in ubuntu24 ubuntu26 debian13; do
Expand Down Expand Up @@ -456,12 +490,14 @@ jobs:
RELEASE_REVISION: ${{ needs.metadata.outputs.commit }}
run: |
sudo apt-get update
sudo apt-get install --yes --no-install-recommends squashfs-tools binutils
sudo apt-get install --yes --no-install-recommends squashfs-tools llvm
test -x /usr/bin/llvm-readelf
python3 tools/release/appimage.py \
"build/appimage-packages/atrinik-classic-client-${RELEASE_VERSION}-linux-x86_64.AppImage" \
"${RELEASE_VERSION}" \
--revision "${RELEASE_REVISION}" \
--source-root "${GITHUB_WORKSPACE}/candidate-source" \
--compiler-image "${CLASSIC_LINUX_IMAGE}" \
> build/appimage-evidence/payload-validation.log 2>&1
- name: Smoke in clean Ubuntu 24, Ubuntu 26, and Debian 13 runtimes
env:
Expand Down Expand Up @@ -548,13 +584,23 @@ jobs:

client-windows:
name: Build Windows client package
env:
WINDOWS_BUILD_IMAGE: ${{ needs.metadata.outputs.windows_image }}
WINDOWS_BUILD_CACHE_EPOCH: ${{ needs.metadata.outputs.windows_cache_epoch }}
needs: [metadata, dependencies, gpu-shaders]
runs-on: ubuntu-24.04
timeout-minutes: 90
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: ${{ needs.metadata.outputs.commit }}
- name: Check out trusted Windows producer selection
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: ${{ github.sha }}
path: build/windows-automation
persist-credentials: false
sparse-checkout: tools/release/windows_producer.py
- uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8
with:
name: candidate-dependencies-${{ needs.metadata.outputs.tag }}
Expand Down Expand Up @@ -588,12 +634,19 @@ jobs:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ github.token }}
- run: docker pull ghcr.io/atrinik/windows-build:1.16.0@sha256:4266256d4b4196241df6463e687dd286022e24e3bc46dfafb4f877744a731d69
- run: docker pull "${WINDOWS_BUILD_IMAGE}"
- name: Build portable package from monorepo siblings
env:
RELEASE_VERSION: ${{ needs.metadata.outputs.version }}
RELEASE_REVISION: ${{ needs.metadata.outputs.commit }}
DISCORD_CONFIG_FILE: ${{ inputs.rehearsal != true && '/workspace/build/discord-config/discord-application-id' || '' }}
run: |
arguments_path=$(mktemp "${RUNNER_TEMP}/classic-windows-environment.XXXXXX")
trap 'rm -f "${arguments_path}"' EXIT
python3 build/windows-automation/tools/release/windows_producer.py \
--source-root "${GITHUB_WORKSPACE}" --revision "${RELEASE_REVISION}" \
--format docker-env > "${arguments_path}"
mapfile -t producer_environment < "${arguments_path}"
docker run --rm \
--network none \
--user "$(id -u):$(id -g)" \
Expand All @@ -604,10 +657,10 @@ jobs:
--env CCACHE_DIR=/workspace/client/build/ccache \
--env CCACHE_MAXSIZE=500M \
--env CCACHE_TEMPDIR=/tmp/atrinik-client-ccache \
--env PATH=/opt/mxe/.ccache/bin:/opt/mxe/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \
"${producer_environment[@]}" \
--volume "${GITHUB_WORKSPACE}:/workspace" \
--workdir /workspace/client \
ghcr.io/atrinik/windows-build:1.16.0@sha256:4266256d4b4196241df6463e687dd286022e24e3bc46dfafb4f877744a731d69 \
"${WINDOWS_BUILD_IMAGE}" \
bash -c \
'set -euo pipefail
ccache --zero-stats
Expand All @@ -623,13 +676,23 @@ jobs:

server-windows:
name: Build Windows server package
env:
WINDOWS_BUILD_IMAGE: ${{ needs.metadata.outputs.windows_image }}
WINDOWS_BUILD_CACHE_EPOCH: ${{ needs.metadata.outputs.windows_cache_epoch }}
needs: [metadata, dependencies]
runs-on: ubuntu-24.04
timeout-minutes: 180
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: ${{ needs.metadata.outputs.commit }}
- name: Check out trusted Windows producer selection
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: ${{ github.sha }}
path: build/windows-automation
persist-credentials: false
sparse-checkout: tools/release/windows_producer.py
- uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8
with:
name: candidate-dependencies-${{ needs.metadata.outputs.tag }}
Expand All @@ -653,11 +716,18 @@ jobs:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ github.token }}
- run: docker pull ghcr.io/atrinik/windows-build:1.16.0@sha256:4266256d4b4196241df6463e687dd286022e24e3bc46dfafb4f877744a731d69
- run: docker pull "${WINDOWS_BUILD_IMAGE}"
- name: Build portable package from monorepo siblings
env:
RELEASE_VERSION: ${{ needs.metadata.outputs.version }}
RELEASE_REVISION: ${{ needs.metadata.outputs.commit }}
run: |
arguments_path=$(mktemp "${RUNNER_TEMP}/classic-windows-environment.XXXXXX")
trap 'rm -f "${arguments_path}"' EXIT
python3 build/windows-automation/tools/release/windows_producer.py \
--source-root "${GITHUB_WORKSPACE}" --revision "${RELEASE_REVISION}" \
--format docker-env > "${arguments_path}"
mapfile -t producer_environment < "${arguments_path}"
docker run --rm \
--network none \
--user "$(id -u):$(id -g)" \
Expand All @@ -667,10 +737,10 @@ jobs:
--env CCACHE_DIR=/workspace/server/build/ccache \
--env CCACHE_MAXSIZE=500M \
--env CCACHE_TEMPDIR=/tmp/atrinik-server-ccache \
--env PATH=/opt/mxe/.ccache/bin:/opt/mxe/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \
"${producer_environment[@]}" \
--volume "${GITHUB_WORKSPACE}:/workspace" \
--workdir /workspace/server \
ghcr.io/atrinik/windows-build:1.16.0@sha256:4266256d4b4196241df6463e687dd286022e24e3bc46dfafb4f877744a731d69 \
"${WINDOWS_BUILD_IMAGE}" \
bash -c \
'set -euo pipefail
ccache --zero-stats
Expand Down Expand Up @@ -727,6 +797,8 @@ jobs:

candidate:
name: Validate complete release candidate
env:
CLASSIC_LINUX_IMAGE: ${{ needs.metadata.outputs.compiler_image }}
if: >-
always() &&
needs.metadata.result == 'success' &&
Expand All @@ -753,6 +825,7 @@ jobs:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: ${{ needs.metadata.outputs.commit }}
fetch-depth: 0
- uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8
with:
pattern: release-*-${{ needs.metadata.outputs.tag }}
Expand All @@ -762,14 +835,32 @@ jobs:
if: needs.metadata.outputs.artifact_schema == '3'
run: |
sudo apt-get update
sudo apt-get install --yes --no-install-recommends squashfs-tools binutils
sudo apt-get install --yes --no-install-recommends squashfs-tools llvm
test -x /usr/bin/llvm-readelf
- name: Check out the trusted compiler-image resolver
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: ${{ github.sha }}
path: build/ci-automation
persist-credentials: false
sparse-checkout: tools/release/resolve_compiler_image.py
- name: Validate and index the complete candidate
run: >-
python3 tools/release/finalize_artifacts.py
--version '${{ needs.metadata.outputs.version }}'
--revision '${{ needs.metadata.outputs.commit }}'
--source-epoch '${{ needs.metadata.outputs.source_epoch }}'
--directory build/release
env:
RELEASE_VERSION: ${{ needs.metadata.outputs.version }}
RELEASE_REVISION: ${{ needs.metadata.outputs.commit }}
RELEASE_SOURCE_EPOCH: ${{ needs.metadata.outputs.source_epoch }}
run: |
arguments_path=$(mktemp "${RUNNER_TEMP}/classic-compiler-arguments.XXXXXX")
trap 'rm -f "${arguments_path}"' EXIT
python3 build/ci-automation/tools/release/resolve_compiler_image.py \
--source-root "${GITHUB_WORKSPACE}" --revision "${RELEASE_REVISION}" \
--current-image "${CLASSIC_LINUX_IMAGE}" --source-finalizer-arguments \
> "${arguments_path}"
mapfile -t compiler_arguments < "${arguments_path}"
python3 tools/release/finalize_artifacts.py \
--version "${RELEASE_VERSION}" --revision "${RELEASE_REVISION}" \
--source-epoch "${RELEASE_SOURCE_EPOCH}" --directory build/release \
"${compiler_arguments[@]}"
- uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7
with:
name: complete-release-candidate-${{ needs.metadata.outputs.tag }}
Expand Down
Loading
Loading