railpack

Configure and troubleshoot Railpack builds, with emphasis on RAILPACK_* environment variables, railpack.json overlays, build-plan inspection, local CLI installation and usage, and local BuildKit containers. Use for Railpack provider configuration, custom install/build/start commands, Mise or Apt packages, build or runtime variables and secrets, generated-plan debugging, BUILDKIT_HOST errors, or running Railpack from a release or source checkout.

Install
npx skills add 'https://github.com/railwayapp/railpack/tree/main/.'
Incomplete bundle · no download
main · 21a254fScanned 2026-09-17

Contributors

GitHub-linked commit authors for this SKILL.md at the saved revision. Co-authors and history before file renames are not included.

File history ↗

core/generate/image_step_builder.go

core/generate/image_step_builder.goBrowse 1970 files
View on GitHub
← Back to SKILL.md
package generate import (	"github.com/railwayapp/railpack/core/plan"	"github.com/railwayapp/railpack/core/resolver") type ImageStepBuilder struct {	DisplayName      string	Resolver         *resolver.Resolver	Packages         []*resolver.PackageRef	ResolveStepImage func(options *BuildStepOptions) string	AptPackages      []string} func (c *GenerateContext) NewImageStep(name string, resolveStepImage func(options *BuildStepOptions) string) *ImageStepBuilder {	step := &ImageStepBuilder{		DisplayName:      c.GetStepName(name),		Resolver:         c.Resolver,		ResolveStepImage: resolveStepImage,	} 	c.Steps = append(c.Steps, step) 	return step} func (b *ImageStepBuilder) Default(name string, defaultVersion string) resolver.PackageRef {	for _, pkg := range b.Packages {		if pkg.Name == name {			return *pkg		}	} 	pkg := b.Resolver.Default(name, defaultVersion)	b.Packages = append(b.Packages, &pkg)	return pkg} func (b *ImageStepBuilder) Version(name resolver.PackageRef, version string, source string) {	b.Resolver.Version(name, version, source)} func (b *ImageStepBuilder) SetVersionAvailable(ref resolver.PackageRef, isVersionAvailable func(version string) bool) {	b.Resolver.SetVersionAvailable(ref, isVersionAvailable)} func (b *ImageStepBuilder) Name() string {	return b.DisplayName} func (b *ImageStepBuilder) Build(p *plan.BuildPlan, options *BuildStepOptions) error {	image := b.ResolveStepImage(options) 	step := plan.NewStep(b.DisplayName)	step.Secrets = []string{}	step.Inputs = []plan.Layer{		plan.NewImageLayer(image),	} 	if len(b.AptPackages) > 0 {		step.Commands = []plan.Command{			options.NewAptInstallCommand(b.AptPackages),		}	} 	p.Steps = append(p.Steps, *step) 	return nil}