From 9636cccf579177c43a208418dd18a6eb340f7753 Mon Sep 17 00:00:00 2001 From: Jake Runzer Date: Fri, 31 Jan 2025 15:18:35 -0800 Subject: [PATCH 1/3] remove mise binary from final image --- core/generate/mise_step_builder.go | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/core/generate/mise_step_builder.go b/core/generate/mise_step_builder.go index 231dffe..1f1fd9b 100644 --- a/core/generate/mise_step_builder.go +++ b/core/generate/mise_step_builder.go @@ -37,7 +37,7 @@ func (c *GenerateContext) newMiseStepBuilder() *MiseStepBuilder { SupportingAptPackages: []string{}, Assets: map[string]string{}, DependsOn: []string{}, - Outputs: &[]string{"/mise/shims", "/mise/installs", "/usr/local/bin/mise", "/etc/mise/config.toml", "/root/.local/state/mise"}, + Outputs: &[]string{"/mise/shims", "/mise/installs"}, app: c.App, env: c.Env, } @@ -88,8 +88,7 @@ func (b *MiseStepBuilder) Build(options *BuildStepOptions) (*plan.Step, error) { plan.NewVariableCommand("MISE_CONFIG_DIR", "/mise"), plan.NewVariableCommand("MISE_INSTALL_PATH", "/usr/local/bin/mise"), plan.NewVariableCommand("MISE_CACHE_DIR", "/mise/cache"), - plan.NewPathCommand("/mise/shims"), - options.NewAptInstallCommand([]string{"curl", "ca-certificates"}), + options.NewAptInstallCommand([]string{"curl", "ca-certificates", "git"}), plan.NewExecCommand("sh -c 'curl -fsSL https://mise.run | sh'", plan.ExecOptions{ CustomName: "install mise", @@ -146,6 +145,21 @@ func (b *MiseStepBuilder) Build(options *BuildStepOptions) (*plan.Step, error) { }) } + // Packages installed have binaries available at /mise/installs/{package}/{version}/bin + // We need to add these to the PATH + for _, pkg := range b.MisePackages { + resolved, ok := options.ResolvedPackages[pkg.Name] + if !ok || resolved.ResolvedVersion == nil { + continue + } + + version := *resolved.ResolvedVersion + + step.AddCommands([]plan.Command{ + plan.NewPathCommand("/mise/installs/" + pkg.Name + "/" + version + "/bin"), + }) + } + step.Assets = b.Assets step.Outputs = b.Outputs step.UseSecrets = &[]bool{false}[0] From e42b92f04f1091f6daaef68b812448f72ca9509e Mon Sep 17 00:00:00 2001 From: Jake Runzer Date: Fri, 31 Jan 2025 15:39:51 -0800 Subject: [PATCH 2/3] update snapshot tests --- core/generate/__snapshots__/context_test.snap | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/core/generate/__snapshots__/context_test.snap b/core/generate/__snapshots__/context_test.snap index d2dde19..f302bdc 100755 --- a/core/generate/__snapshots__/context_test.snap +++ b/core/generate/__snapshots__/context_test.snap @@ -48,16 +48,13 @@ "name": "MISE_CACHE_DIR", "value": "/mise/cache" }, - { - "path": "/mise/shims" - }, { "caches": [ "apt", "apt-lists" ], - "cmd": "sh -c 'apt-get update \u0026\u0026 apt-get install -y ca-certificates curl'", - "customName": "install apt packages: ca-certificates curl" + "cmd": "sh -c 'apt-get update \u0026\u0026 apt-get install -y ca-certificates curl git'", + "customName": "install apt packages: ca-certificates curl git" }, { "caches": [ @@ -77,6 +74,15 @@ ], "cmd": "sh -c 'mise trust -a \u0026\u0026 mise install'", "customName": "install mise packages: go, node, python" + }, + { + "path": "/mise/installs/node/20.18.2/bin" + }, + { + "path": "/mise/installs/python/3.13.1/bin" + }, + { + "path": "/mise/installs/go/1.23.5/bin" } ], "dependsOn": [ @@ -85,10 +91,7 @@ "name": "packages:mise", "outputs": [ "/mise/shims", - "/mise/installs", - "/usr/local/bin/mise", - "/etc/mise/config.toml", - "/root/.local/state/mise" + "/mise/installs" ], "useSecrets": false }, From 0cbc46d992f675dd13cc93ff738c664b5d6e76dc Mon Sep 17 00:00:00 2001 From: Jake Runzer Date: Mon, 3 Feb 2025 22:33:39 -0800 Subject: [PATCH 3/3] sort mise package names when generating paths --- core/generate/__snapshots__/context_test.snap | 6 +++--- core/generate/mise_step_builder.go | 15 ++++++++++++--- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/core/generate/__snapshots__/context_test.snap b/core/generate/__snapshots__/context_test.snap index f302bdc..d74bde7 100755 --- a/core/generate/__snapshots__/context_test.snap +++ b/core/generate/__snapshots__/context_test.snap @@ -76,13 +76,13 @@ "customName": "install mise packages: go, node, python" }, { - "path": "/mise/installs/node/20.18.2/bin" + "path": "/mise/installs/go/1.23.5/bin" }, { - "path": "/mise/installs/python/3.13.1/bin" + "path": "/mise/installs/node/20.18.2/bin" }, { - "path": "/mise/installs/go/1.23.5/bin" + "path": "/mise/installs/python/3.13.1/bin" } ], "dependsOn": [ diff --git a/core/generate/mise_step_builder.go b/core/generate/mise_step_builder.go index 1f1fd9b..b12f789 100644 --- a/core/generate/mise_step_builder.go +++ b/core/generate/mise_step_builder.go @@ -147,8 +147,8 @@ func (b *MiseStepBuilder) Build(options *BuildStepOptions) (*plan.Step, error) { // Packages installed have binaries available at /mise/installs/{package}/{version}/bin // We need to add these to the PATH - for _, pkg := range b.MisePackages { - resolved, ok := options.ResolvedPackages[pkg.Name] + for _, pkg := range b.sortedPackageNames() { + resolved, ok := options.ResolvedPackages[pkg] if !ok || resolved.ResolvedVersion == nil { continue } @@ -156,7 +156,7 @@ func (b *MiseStepBuilder) Build(options *BuildStepOptions) (*plan.Step, error) { version := *resolved.ResolvedVersion step.AddCommands([]plan.Command{ - plan.NewPathCommand("/mise/installs/" + pkg.Name + "/" + version + "/bin"), + plan.NewPathCommand("/mise/installs/" + pkg + "/" + version + "/bin"), }) } @@ -184,3 +184,12 @@ func (b *MiseStepBuilder) GetSupportingMiseConfigFiles(path string) []string { return files } + +func (b *MiseStepBuilder) sortedPackageNames() []string { + packages := make([]string, 0, len(b.MisePackages)) + for _, pkg := range b.MisePackages { + packages = append(packages, pkg.Name) + } + sort.Strings(packages) + return packages +}