Skip to content

Commit db1f78d

Browse files
committed
update Go, buildkit-golang, fix lint findings
1 parent abc8f54 commit db1f78d

File tree

19 files changed

+77
-88
lines changed

19 files changed

+77
-88
lines changed

.config/turbobob.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"builders": [
77
{
88
"name": "default",
9-
"uses": "docker://fn61/buildkit-golang:20250109_1140_037f68db",
9+
"uses": "docker://fn61/buildkit-golang:20250718_1205_2c9cd41a",
1010
"commands": {
1111
"build": ["build-go-project.sh", "--directory=cmd/bob/", "--binary-basename=bob"],
1212
"dev": ["bash"]

cmd/bob/baseimageconf.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import (
1111
)
1212

1313
const (
14-
baseImageJsonLocation = "/turbobob-baseimage.json"
14+
baseImageJSONLocation = "/turbobob-baseimage.json"
1515
)
1616

1717
// base image conf JSON - able to provide hints for useful commands, setting up cache paths etc.
@@ -33,7 +33,7 @@ type LangserverSpec struct {
3333
// base image conf is optional. if it doesn't exist, an empty (but valid) conf will be
3434
// returned without error
3535
func loadBaseImageConfWhenInsideContainer() (*BaseImageConfig, error) {
36-
exists, err := osutil.Exists(baseImageJsonLocation)
36+
exists, err := osutil.Exists(baseImageJSONLocation)
3737
if err != nil {
3838
return nil, fmt.Errorf("loadBaseImageConfWhenInsideContainer: %w", err)
3939
}
@@ -43,7 +43,7 @@ func loadBaseImageConfWhenInsideContainer() (*BaseImageConfig, error) {
4343
}
4444

4545
conf := &BaseImageConfig{}
46-
if err := jsonfile.ReadDisallowUnknownFields(baseImageJsonLocation, conf); err != nil {
46+
if err := jsonfile.ReadDisallowUnknownFields(baseImageJSONLocation, conf); err != nil {
4747
return nil, fmt.Errorf("loadBaseImageConfWhenInsideContainer: %w", err)
4848
}
4949

@@ -59,7 +59,7 @@ func loadNonOptionalBaseImageConf(projectName string, builder bobfile.BuilderSpe
5959

6060
// unfortunately there isn't a good high-level way to grab a file from a Docker image, so that's
6161
// why we have to create a container to get it
62-
content, err := exec.Command("docker", "run", "--rm", dockerImage, "cat", baseImageJsonLocation).Output()
62+
content, err := exec.Command("docker", "run", "--rm", dockerImage, "cat", baseImageJSONLocation).Output()
6363
if err != nil {
6464
return nil, err
6565
}

cmd/bob/build.go

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ type BuildContext struct {
2727
BuilderNameFilter string
2828
ENVsAreRequired bool
2929
VersionControl versioncontrol.Interface
30-
RevisionId *versioncontrol.RevisionId
30+
RevisionID *versioncontrol.RevisionID
3131
Debug bool // enables additional debugging or verbose logging
3232
FastBuild bool // skip all non-essential steps (linting, testing etc.) to build faster
3333
RepositoryURL string // human-visitable URL, like "https://github.com/function61/turbobob"
@@ -97,7 +97,7 @@ func runBuilder(builder bobfile.BuilderSpec, buildCtx *BuildContext, opDesc stri
9797
// inserts ["--env", "FOO"] pairs for each PassEnvs
9898
buildArgs, errEnv := dockerRelayEnvVars(
9999
buildArgs,
100-
buildCtx.RevisionId,
100+
buildCtx.RevisionID,
101101
builder,
102102
buildCtx.ENVsAreRequired,
103103
archesToBuildFor,
@@ -149,7 +149,7 @@ func buildAndPushOneDockerImage(dockerImage bobfile.DockerImageSpec, buildCtx *B
149149
}
150150

151151
tagWithoutVersion := dockerImage.Image
152-
tag := tagWithoutVersion + ":" + buildCtx.RevisionId.FriendlyRevisionId
152+
tag := tagWithoutVersion + ":" + buildCtx.RevisionID.FriendlyRevisionID
153153
tagLatest := tagWithoutVersion + ":latest"
154154
dockerfilePath := dockerImage.DockerfilePath
155155

@@ -179,8 +179,8 @@ func buildAndPushOneDockerImage(dockerImage bobfile.DockerImageSpec, buildCtx *B
179179

180180
annotate(ociv1.AnnotationTitle, buildCtx.Bobfile.ProjectName)
181181
annotate(ociv1.AnnotationCreated, time.Now().UTC().Format(time.RFC3339))
182-
annotate(ociv1.AnnotationRevision, buildCtx.RevisionId.RevisionId)
183-
annotate(ociv1.AnnotationVersion, buildCtx.RevisionId.FriendlyRevisionId)
182+
annotate(ociv1.AnnotationRevision, buildCtx.RevisionID.RevisionID)
183+
annotate(ociv1.AnnotationVersion, buildCtx.RevisionID.FriendlyRevisionID)
184184
annotate(ociv1.AnnotationDescription, buildCtx.Bobfile.Meta.Description)
185185

186186
// "URL to get source code for building the image"
@@ -241,6 +241,7 @@ func buildAndPushOneDockerImage(dockerImage bobfile.DockerImageSpec, buildCtx *B
241241
args = append(args, "--push")
242242
}
243243

244+
//nolint:gosec // ok
244245
if err := passthroughStdoutAndStderr(exec.Command(args[0], args[1:]...)).Run(); err != nil {
245246
return withErr(err)
246247
}
@@ -296,9 +297,9 @@ func cloneToWorkdir(buildCtx *BuildContext) error {
296297
return err
297298
}
298299

299-
printHeading(fmt.Sprintf("Updating to %s", buildCtx.RevisionId.RevisionId))
300+
printHeading(fmt.Sprintf("Updating to %s", buildCtx.RevisionID.RevisionID))
300301

301-
if err := workspaceRepo.Update(buildCtx.RevisionId.RevisionId); err != nil {
302+
if err := workspaceRepo.Update(buildCtx.RevisionID.RevisionID); err != nil {
302303
return err
303304
}
304305

@@ -330,8 +331,6 @@ func build(buildCtx *BuildContext) (*buildOutput, error) {
330331
// to include modification check for the Dockerfile and all of its build context, so we're just
331332
// best off calling Docker build because it is the best at detecting cache invalidation.
332333
for _, builder := range buildCtx.Bobfile.Builders {
333-
builder := builder // pin
334-
335334
if buildCtx.BuilderNameFilter != "" && builder.Name != buildCtx.BuilderNameFilter {
336335
continue
337336
}
@@ -440,7 +439,7 @@ func constructBuildContext(
440439
return nil, errVcDetermine
441440
}
442441

443-
metadata, err := versioncontrol.CurrentRevisionId(versionControl, onlyCommitted)
442+
metadata, err := versioncontrol.CurrentRevisionID(versionControl, onlyCommitted)
444443
if err != nil {
445444
return nil, err
446445
}
@@ -456,7 +455,7 @@ func constructBuildContext(
456455
buildCtx := &BuildContext{
457456
Bobfile: bobfile,
458457
PublishArtefacts: publishArtefacts,
459-
RevisionId: metadata,
458+
RevisionID: metadata,
460459
OriginDir: repoOriginDir,
461460
WorkspaceDir: workspaceDir,
462461
CloningStepNeeded: cloningStepNeeded,

cmd/bob/dev.go

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package main
22

33
import (
44
"fmt"
5-
"io/ioutil"
65
"os"
76
"os/exec"
87
"path/filepath"
@@ -143,12 +142,12 @@ func devCommand(builderName string, envsAreRequired bool, ignoreNag bool) ([]str
143142
dockerCmd = append(dockerCmd, "--publish", port)
144143
}
145144

146-
devHttpIngress, ingressHostname := setupDevIngress(
145+
devHTTPIngress, ingressHostname := setupDevIngress(
147146
builder,
148147
userConfig.DevIngressSettings,
149148
bobfile)
150-
if len(devHttpIngress) > 0 {
151-
dockerCmd = append(dockerCmd, devHttpIngress...)
149+
if len(devHTTPIngress) > 0 {
150+
dockerCmd = append(dockerCmd, devHTTPIngress...)
152151

153152
shimCfg.DynamicProTipsFromHost = append(shimCfg.DynamicProTipsFromHost, fmt.Sprintf("dev ingress: https://%s/", ingressHostname))
154153
}
@@ -159,7 +158,7 @@ func devCommand(builderName string, envsAreRequired bool, ignoreNag bool) ([]str
159158
var errEnv error
160159
dockerCmd, errEnv = dockerRelayEnvVars(
161160
dockerCmd,
162-
revisionIdForDev(),
161+
revisionIDForDev(),
163162
*builder,
164163
envsAreRequired,
165164
archesToBuildFor,
@@ -177,7 +176,7 @@ func devCommand(builderName string, envsAreRequired bool, ignoreNag bool) ([]str
177176

178177
// this needs to be dynamic, because on the host side there must be a unique dir
179178
// per dev container
180-
shimDataDirHost, err := ioutil.TempDir("", "bob-shim-")
179+
shimDataDirHost, err := os.MkdirTemp("", "bob-shim-")
181180
if err != nil {
182181
return nil, err
183182
}
@@ -265,12 +264,12 @@ func currentRunningGoOsArchToOsArchCode() OsArchCode {
265264
}
266265

267266
// TODO: maybe merge with resolveMetadataFromVersionControl(.., false)
268-
func revisionIdForDev() *versioncontrol.RevisionId {
269-
return &versioncontrol.RevisionId{
267+
func revisionIDForDev() *versioncontrol.RevisionID {
268+
return &versioncontrol.RevisionID{
270269
VcKind: "managedByCi", // FIXME
271-
RevisionId: "dev",
272-
RevisionIdShort: "dev",
273-
FriendlyRevisionId: "dev",
270+
RevisionID: "dev",
271+
RevisionIDShort: "dev",
272+
FriendlyRevisionID: "dev",
274273
}
275274
}
276275

cmd/bob/devingress.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@ func setupDevIngress(
1414
ingressSettings devIngressSettings,
1515
bobfile *bobfile.Bobfile,
1616
) ([]string, string) {
17-
if builder.DevHttpIngress == "" {
17+
if builder.DevHTTPIngress == "" {
1818
return nil, ""
1919
}
2020

21-
containerPort := builder.DevHttpIngress
21+
containerPort := builder.DevHTTPIngress
2222

2323
if err := ingressSettings.Validate(); err != nil {
2424
fmt.Fprintf(os.Stderr, "WARN: cannot setup DevHttpIngress because user's config: %v\n", err)
@@ -28,12 +28,12 @@ func setupDevIngress(
2828
// "joonas.fi-blog" => "joonas-fi-blog"
2929
// don't accept multi-level subdomains because wildcard TLS certs only apply
3030
// one level.
31-
ingressAppId := strings.ReplaceAll(bobfile.ProjectName, ".", "-")
31+
ingressAppID := strings.ReplaceAll(bobfile.ProjectName, ".", "-")
3232
if builder.Name != "default" {
33-
ingressAppId += "-" + builder.Name
33+
ingressAppID += "-" + builder.Name
3434
}
3535

36-
ingressHostname := ingressAppId + "." + ingressSettings.Domain
36+
ingressHostname := ingressAppID + "." + ingressSettings.Domain
3737

3838
labels := []string{
3939
// Edgerouter needs explicit opt-in for "no auth" to not accidentally expose private services

cmd/bob/devshim.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package main
33
import (
44
"fmt"
55
"io"
6-
"io/ioutil"
76
"os"
87
"os/exec"
98
"path/filepath"
@@ -191,7 +190,7 @@ func customizePrompt() error {
191190
// Bob makes a pretty Powerline-inspired prompt (https://github.com/powerline/powerline)
192191

193192
//nolint:gosec // ok
194-
return ioutil.WriteFile("/root/.bashrc", []byte(`
193+
return os.WriteFile("/root/.bashrc", []byte(`
195194
# customization written by Turbo Bob
196195
export PS1="\$(bob powerline \$?)"
197196
`), 0755)

cmd/bob/docker.go

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"bytes"
55
"errors"
66
"fmt"
7-
"io/ioutil"
87
"os"
98
"os/exec"
109
"strings"
@@ -26,17 +25,7 @@ func isDevContainerRunning(containerName string) bool {
2625
}
2726

2827
func devContainerName(bobfile *bobfile.Bobfile, builder bobfile.BuilderSpec) string {
29-
return containerNameInternal("dev", bobfile, builder)
30-
}
31-
32-
func langServerContainerName(bobfile *bobfile.Bobfile, builder bobfile.BuilderSpec) string {
33-
return containerNameInternal("langserver", bobfile, builder)
34-
}
35-
36-
// do not use directly
37-
func containerNameInternal(kind string, bobfile *bobfile.Bobfile, builder bobfile.BuilderSpec) string {
38-
return fmt.Sprintf("tb%s-%s-%s", kind, bobfile.ProjectName, builder.Name)
39-
28+
return fmt.Sprintf("tbdev-%s-%s", bobfile.ProjectName, builder.Name)
4029
}
4130

4231
func builderImageName(projectName string, builder bobfile.BuilderSpec) string {
@@ -72,7 +61,7 @@ func buildBuilder(bobfile *bobfile.Bobfile, builder *bobfile.BuilderSpec) error
7261
imageBuildCmd, err := func() (*exec.Cmd, error) {
7362
// provide Dockerfile from stdin for contextless build
7463
if builder.ContextlessBuild {
75-
dockerfileContent, err := ioutil.ReadFile(dockerfilePath)
64+
dockerfileContent, err := os.ReadFile(dockerfilePath)
7665
if err != nil {
7766
return nil, err
7867
}
@@ -114,7 +103,7 @@ func buildBuilder(bobfile *bobfile.Bobfile, builder *bobfile.BuilderSpec) error
114103

115104
func dockerRelayEnvVars(
116105
dockerArgs []string,
117-
revisionId *versioncontrol.RevisionId,
106+
revisionID *versioncontrol.RevisionID,
118107
builder bobfile.BuilderSpec,
119108
envsAreRequired bool,
120109
osArches bobfile.OsArchesSpec,
@@ -125,9 +114,9 @@ func dockerRelayEnvVars(
125114
dockerArgs = append(dockerArgs, "--env", key+"="+value)
126115
}
127116

128-
env("FRIENDLY_REV_ID", revisionId.FriendlyRevisionId)
129-
env("REV_ID", revisionId.RevisionId)
130-
env("REV_ID_SHORT", revisionId.RevisionIdShort)
117+
env("FRIENDLY_REV_ID", revisionID.FriendlyRevisionID)
118+
env("REV_ID", revisionID.RevisionID)
119+
env("REV_ID_SHORT", revisionID.RevisionIDShort)
131120

132121
for _, envKey := range builder.PassEnvs {
133122
envValue := os.Getenv(envKey)

cmd/bob/info.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@ func info() error {
1616
return err
1717
}
1818

19-
revisionId := buildCtx.RevisionId // shorthand
19+
revisionID := buildCtx.RevisionID // shorthand
2020

2121
basicDetails := termtables.CreateTable()
2222
basicDetails.AddRow("Project name", buildCtx.Bobfile.ProjectName)
23-
basicDetails.AddRow("VcKind", revisionId.VcKind)
24-
basicDetails.AddRow("Revision ID (full)", fmt.Sprintf("%s (%s)", revisionId.RevisionIdShort, revisionId.RevisionId))
25-
basicDetails.AddRow("Friendly revision", revisionId.FriendlyRevisionId)
23+
basicDetails.AddRow("VcKind", revisionID.VcKind)
24+
basicDetails.AddRow("Revision ID (full)", fmt.Sprintf("%s (%s)", revisionID.RevisionIDShort, revisionID.RevisionID))
25+
basicDetails.AddRow("Friendly revision", revisionID.FriendlyRevisionID)
2626

2727
fmt.Printf("BASIC DETAILS\n%s\n", basicDetails.Render())
2828

cmd/bob/init.go

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package main
33
import (
44
"encoding/json"
55
"fmt"
6-
"io/ioutil"
76
"os"
87
"path/filepath"
98

@@ -69,7 +68,7 @@ func writeBoilerplate(filePath string, content string) error {
6968
return fmt.Errorf("CI boilerplate '%s' already exists", filePath)
7069
}
7170

72-
return ioutil.WriteFile(
71+
return os.WriteFile(
7372
filePath,
7473
[]byte(content),
7574
osutil.FileMode(osutil.OwnerRW, osutil.GroupRW, osutil.OtherNone))
@@ -127,18 +126,18 @@ func writeBobfileIfNotExists(content bobfile.Bobfile) error {
127126
return bobfile.ErrInitBobfileExists
128127
}
129128

130-
asJson, errJson := json.MarshalIndent(&content, "", "\t")
131-
if errJson != nil {
132-
return errJson
129+
asJSON, errJSON := json.MarshalIndent(&content, "", "\t")
130+
if errJSON != nil {
131+
return errJSON
133132
}
134133

135134
if err := os.MkdirAll(filepath.Dir(bobfile.Name), 0755); err != nil {
136135
return err
137136
}
138137

139-
return ioutil.WriteFile(
138+
return os.WriteFile(
140139
bobfile.Name,
141-
[]byte(fmt.Sprintf("%s\n", asJson)),
140+
[]byte(fmt.Sprintf("%s\n", asJSON)),
142141
osutil.FileMode(osutil.OwnerRW, osutil.GroupRW, osutil.OtherNone))
143142
}
144143

cmd/bob/initguess.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ func initGuessFromDockerfile() error {
5757

5858
return []string{"bash", "-c", script}, nil
5959
} else { // exec form
60-
return []string(runCommand.CmdLine), nil
60+
return runCommand.CmdLine, nil
6161
}
6262
}()
6363
if err != nil {

0 commit comments

Comments
 (0)