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 ↗

buildkit/frontend_test.go

buildkit/frontend_test.goBrowse 1970 files
View on GitHub
← Back to SKILL.md
package buildkit import (	"testing" 	"github.com/stretchr/testify/require") func TestParseBuildArgs(t *testing.T) {	opts := map[string]string{		"build-arg:FOO": "bar",		"platform":      "linux/amd64",		"build-arg:BAZ": "qux",		"filename":      "Dockerfile",	} 	got := parseBuildArgs(opts) 	want := map[string]string{		"FOO": "bar",		"BAZ": "qux",	} 	if len(got) != len(want) {		t.Errorf("got %d build args, want %d", len(got), len(want))	} 	for k, v := range want {		if got[k] != v {			t.Errorf("build arg %q = %q, want %q", k, got[k], v)		}	}} func TestParseCacheImports(t *testing.T) {	t.Parallel() 	t.Run("empty opts", func(t *testing.T) {		imports, err := parseCacheImports(nil)		require.NoError(t, err)		require.Empty(t, imports)	}) 	t.Run("cache-imports JSON", func(t *testing.T) {		imports, err := parseCacheImports(map[string]string{			keyCacheImports: `[{"Type":"registry","Attrs":{"ref":"host.docker.internal:7890/node-bun:cache"}}]`,		})		require.NoError(t, err)		require.Len(t, imports, 1)		require.Equal(t, "registry", imports[0].Type)		require.Equal(t, "host.docker.internal:7890/node-bun:cache", imports[0].Attrs["ref"])	}) 	t.Run("multiple cache-imports", func(t *testing.T) {		imports, err := parseCacheImports(map[string]string{			keyCacheImports: `[{"Type":"registry","Attrs":{"ref":"a:cache"}},{"Type":"gha","Attrs":{"scope":"my-scope"}}]`,		})		require.NoError(t, err)		require.Len(t, imports, 2)		require.Equal(t, "registry", imports[0].Type)		require.Equal(t, "a:cache", imports[0].Attrs["ref"])		require.Equal(t, "gha", imports[1].Type)		require.Equal(t, "my-scope", imports[1].Attrs["scope"])	}) 	t.Run("invalid cache-imports JSON", func(t *testing.T) {		_, err := parseCacheImports(map[string]string{			keyCacheImports: `not-json`,		})		require.Error(t, err)		require.Contains(t, err.Error(), keyCacheImports)	})}