Skip to content

feat(infra): automated build system for missing binaries #159

@CalvinAllen

Description

@CalvinAllen

Automated Build System

Build infrastructure for providing pre-built binaries for versions that aren't available from upstream sources.

When users request a build via dtvem request (which creates a GitHub issue), maintainers can approve the request by adding the build-approved label. This triggers automated workflows to build the requested version.


Build Workflows

When a maintainer adds the build-approved label to a build request issue, automatically build the requested version.

Build Request Workflow

# .github/workflows/build-request.yml
name: Build Requested Version
on:
  issues:
    types: [labeled]

jobs:
  build:
    if: github.event.label.name == 'build-approved'
    # Parse issue title: build(python): 3.6.15 darwin-amd64
    # Trigger platform-specific build workflow

Platform-Specific Build Workflows

Create workflows for each runtime:

  • .github/workflows/build-python.yml
  • .github/workflows/build-ruby.yml
  • .github/workflows/build-node.yml

Each workflow should:

  1. Build the requested version on the appropriate runner
  2. Calculate SHA256 checksum
  3. Upload artifact to builds.dtvem.io with immutable cache headers
  4. Trigger manifest regeneration (generate-manifests-from-r2 workflow)
  5. Close the issue with success comment

Runner Matrix

Platform GitHub Runner
linux-amd64 ubuntu-latest
linux-arm64 ubuntu-24.04-arm
darwin-amd64 macos-13
darwin-arm64 macos-14
windows-amd64 windows-latest

Cache Headers

Build artifacts are immutable. Workflows should set:

cache-control: public, max-age=31536000, immutable

Security Considerations

  • Only maintainers can add build-approved label (GitHub permission model)
  • Validate version format to prevent injection attacks
  • Verify runtime is supported before building

Related

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions