ci: add figma-release workflow (paired-tag binary publishing)#5
Merged
Conversation
On push of statsig-go/v*-figma* tags, cross-builds the linux-gnu/ x86_64 cdylib and publishes a paired binaries-linux-gnu/v*-figma* tag carrying the rebuilt .so. The paired tag is the only ref to the release commit (no branch pointer) so source-fork main stays clean. See ~/nsaini/state/designs/design-statsig-fork-vendor-strategy-b.md for full architecture.
jmcfarland-figma
approved these changes
May 14, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds
.github/workflows/figma-release.yml. On push of anystatsig-go/v*-figma*tag, the workflow cross-buildslibstatsig_ffi.sofor linux-gnu/x86_64 and publishes the pairedbinaries-linux-gnu/v*-figma*tag pointing at a release-only commit that drops the freshly-built.sointo thebinaries-linux-gnu/skeleton.Why
This fork carries bug fixes that haven't landed upstream yet (including the exposure-dedupe memory leak in PR statsig-io#47). Consumers pull the rebuilt binary via
go.mod replaceagainst the fork'sbinaries-linux-gnumodule. This workflow is the automation that produces those release artifacts: a source tag triggers a cross-build, and the resulting.sois committed and tagged atomically as a paired Go-module version.What changed
.github/workflows/figma-release.yml, one job.-p statsig_ffi(matches upstream'stools/docker/build_x86_64-unknown-linux-gnu.sh); the cdylib is instatsig-ffi/, notstatsig-rust/.Invariants worth calling out
statsig-go/Xsource tag triggers an exactbinaries-linux-gnu/Xpaired tag, atomically in the same CI run. The source tag is the human-driven action; the paired tag is the workflow's deterministic output.Prerequisites BEFORE merging this PR
Steps to take AFTER merging this PR (manual)
```sh
git checkout main && git pull
git tag statsig-go/v0.19.4-figma1
git push origin statsig-go/v0.19.4-figma1
```
```sh
git ls-remote https://github.com/figma/statsig-server-core
refs/tags/statsig-go/v0.19.4-figma1
refs/tags/binaries-linux-gnu/v0.19.4-figma1
```
```sh
GOMODCACHE=$(mktemp -d) GOPROXY=direct go mod download -x
github.com/figma/statsig-server-core/statsig-go@v0.19.4-figma1
github.com/figma/statsig-server-core/binaries-linux-gnu@v0.19.4-figma1
```
Test plan
Follow-up
Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com