Skip to content

Commit 00c6d77

Browse files
committed
ci: add linters, run linters, make linters happy (#261)
(cherry picked from commit 017ff92)
1 parent dda5253 commit 00c6d77

File tree

11 files changed

+53
-33
lines changed

11 files changed

+53
-33
lines changed

.github/workflows/ci.yaml

+3
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,9 @@ jobs:
3939
with:
4040
go-version: "~1.22"
4141

42+
- name: Lint
43+
run: make -j lint
44+
4245
- name: Test
4346
run: make test
4447
docs:

Makefile

+15
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,25 @@ PWD=$(shell pwd)
44
GO_SRC_FILES := $(shell find . -type f -name '*.go' -not -name '*_test.go')
55
GO_TEST_FILES := $(shell find . -type f -not -name '*.go' -name '*_test.go')
66
GOLDEN_FILES := $(shell find . -type f -name '*.golden')
7+
SHELL_SRC_FILES := $(shell find . -type f -name '*.sh')
8+
GOLANGCI_LINT_VERSION := v1.59.1
79

810
fmt: $(shell find . -type f -name '*.go')
911
go run mvdan.cc/[email protected] -l -w .
1012

13+
.PHONY: lint
14+
lint: lint/go lint/shellcheck
15+
16+
.PHONY: lint/go
17+
lint/go: $(GO_SRC_FILES)
18+
go install github.com/golangci/golangci-lint/cmd/golangci-lint@$(GOLANGCI_LINT_VERSION)
19+
golangci-lint run
20+
21+
.PHONY: lint/shellcheck
22+
lint/shellcheck: $(SHELL_SRC_FILES)
23+
echo "--- shellcheck"
24+
shellcheck --external-sources $(SHELL_SRC_FILES)
25+
1126
develop:
1227
./scripts/develop.sh
1328

cmd/envbuilder/main.go

+10-5
Original file line numberDiff line numberDiff line change
@@ -57,28 +57,33 @@ func envbuilderCmd() serpent.Command {
5757
},
5858
}
5959
var flushAndClose func(ctx context.Context) error
60+
// nolint: staticcheck // FIXME: https://github.com/coder/envbuilder/issues/260
6061
sendLogs, flushAndClose = notcodersdk.LogsSender(notcodersdk.ExternalLogSourceID, client.PatchLogs, slog.Logger{})
61-
defer flushAndClose(inv.Context())
62+
defer func() {
63+
_ = flushAndClose(inv.Context())
64+
}()
6265

6366
// This adds the envbuilder subsystem.
6467
// If telemetry is enabled in a Coder deployment,
6568
// this will be reported and help us understand
6669
// envbuilder usage.
6770
if !slices.Contains(options.CoderAgentSubsystem, string(notcodersdk.AgentSubsystemEnvbuilder)) {
6871
options.CoderAgentSubsystem = append(options.CoderAgentSubsystem, string(notcodersdk.AgentSubsystemEnvbuilder))
69-
os.Setenv("CODER_AGENT_SUBSYSTEM", strings.Join(options.CoderAgentSubsystem, ","))
72+
_ = os.Setenv("CODER_AGENT_SUBSYSTEM", strings.Join(options.CoderAgentSubsystem, ","))
7073
}
7174
}
7275

7376
options.Logger = func(level notcodersdk.LogLevel, format string, args ...interface{}) {
7477
output := fmt.Sprintf(format, args...)
75-
fmt.Fprintln(inv.Stderr, output)
78+
_, _ = fmt.Fprintln(inv.Stderr, output)
7679
if sendLogs != nil {
77-
sendLogs(inv.Context(), notcodersdk.Log{
80+
if err := sendLogs(inv.Context(), notcodersdk.Log{
7881
CreatedAt: time.Now(),
7982
Output: output,
8083
Level: level,
81-
})
84+
}); err != nil {
85+
_, _ = fmt.Fprintf(inv.Stderr, "failed to send logs: %s\n", err.Error())
86+
}
8287
}
8388
}
8489

envbuilder_internal_test.go

+10-5
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,8 @@ func TestFindDevcontainerJSON(t *testing.T) {
5252
fs := memfs.New()
5353
err := fs.MkdirAll("/workspace/.devcontainer", 0o600)
5454
require.NoError(t, err)
55-
fs.Create("/workspace/.devcontainer/devcontainer.json")
55+
_, err = fs.Create("/workspace/.devcontainer/devcontainer.json")
56+
require.NoError(t, err)
5657

5758
// when
5859
devcontainerPath, devcontainerDir, err := findDevcontainerJSON(Options{
@@ -73,7 +74,8 @@ func TestFindDevcontainerJSON(t *testing.T) {
7374
fs := memfs.New()
7475
err := fs.MkdirAll("/workspace/experimental-devcontainer", 0o600)
7576
require.NoError(t, err)
76-
fs.Create("/workspace/experimental-devcontainer/devcontainer.json")
77+
_, err = fs.Create("/workspace/experimental-devcontainer/devcontainer.json")
78+
require.NoError(t, err)
7779

7880
// when
7981
devcontainerPath, devcontainerDir, err := findDevcontainerJSON(Options{
@@ -95,7 +97,8 @@ func TestFindDevcontainerJSON(t *testing.T) {
9597
fs := memfs.New()
9698
err := fs.MkdirAll("/workspace/.devcontainer", 0o600)
9799
require.NoError(t, err)
98-
fs.Create("/workspace/.devcontainer/experimental.json")
100+
_, err = fs.Create("/workspace/.devcontainer/experimental.json")
101+
require.NoError(t, err)
99102

100103
// when
101104
devcontainerPath, devcontainerDir, err := findDevcontainerJSON(Options{
@@ -117,7 +120,8 @@ func TestFindDevcontainerJSON(t *testing.T) {
117120
fs := memfs.New()
118121
err := fs.MkdirAll("/workspace", 0o600)
119122
require.NoError(t, err)
120-
fs.Create("/workspace/devcontainer.json")
123+
_, err = fs.Create("/workspace/devcontainer.json")
124+
require.NoError(t, err)
121125

122126
// when
123127
devcontainerPath, devcontainerDir, err := findDevcontainerJSON(Options{
@@ -138,7 +142,8 @@ func TestFindDevcontainerJSON(t *testing.T) {
138142
fs := memfs.New()
139143
err := fs.MkdirAll("/workspace/.devcontainer/sample", 0o600)
140144
require.NoError(t, err)
141-
fs.Create("/workspace/.devcontainer/sample/devcontainer.json")
145+
_, err = fs.Create("/workspace/.devcontainer/sample/devcontainer.json")
146+
require.NoError(t, err)
142147

143148
// when
144149
devcontainerPath, devcontainerDir, err := findDevcontainerJSON(Options{

init.sh

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@
33
echo hey there
44
sleep 1
55

6-
echo INIT_COMMAND=/bin/sh >> $ENVBUILDER_ENV
7-
echo INIT_ARGS="-c /bin/bash" >> $ENVBUILDER_ENV
6+
echo INIT_COMMAND=/bin/sh >> "${ENVBUILDER_ENV}"
7+
echo INIT_ARGS="-c /bin/bash" >> "${ENVBUILDER_ENV}"

integration/integration_test.go

+4-2
Original file line numberDiff line numberDiff line change
@@ -1612,9 +1612,11 @@ func cleanOldEnvbuilders() {
16121612
panic(err)
16131613
}
16141614
for _, ctr := range ctrs {
1615-
cli.ContainerRemove(ctx, ctr.ID, container.RemoveOptions{
1615+
if err := cli.ContainerRemove(ctx, ctr.ID, container.RemoveOptions{
16161616
Force: true,
1617-
})
1617+
}); err != nil {
1618+
_, _ = fmt.Fprintf(os.Stderr, "failed to remove old test container: %s\n", err.Error())
1619+
}
16181620
}
16191621
}
16201622

scripts/build.sh

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/usr/bin/env bash
22

3-
cd $(dirname "${BASH_SOURCE[0]}")
3+
cd "$(dirname "${BASH_SOURCE[0]}")"
44
set -euo pipefail
55

66
archs=()
@@ -48,24 +48,24 @@ docker buildx inspect --bootstrap &> /dev/null
4848

4949
for arch in "${archs[@]}"; do
5050
echo "Building for $arch..."
51-
GOARCH=$arch CGO_ENABLED=0 go build -o ./envbuilder-$arch ../cmd/envbuilder &
51+
GOARCH=$arch CGO_ENABLED=0 go build -o "./envbuilder-${arch}" ../cmd/envbuilder &
5252
done
5353
wait
5454

5555
args=()
5656
for arch in "${archs[@]}"; do
57-
args+=( --platform linux/$arch )
57+
args+=( --platform "linux/${arch}" )
5858
done
5959
if [ "$push" = true ]; then
6060
args+=( --push )
6161
else
6262
args+=( --load )
6363
fi
6464

65-
docker buildx build --builder $BUILDER_NAME "${args[@]}" -t $base:$tag -t $base:latest -f Dockerfile .
65+
docker buildx build --builder $BUILDER_NAME "${args[@]}" -t "${base}:${tag}" -t "${base}:latest" -f Dockerfile .
6666

6767
# Check if archs contains the current. If so, then output a message!
68-
if [[ -z "${CI:-}" ]] && [[ " ${archs[@]} " =~ " ${current} " ]]; then
69-
docker tag $base:$tag envbuilder:latest
68+
if [[ -z "${CI:-}" ]] && [[ " ${archs[*]} " =~ ${current} ]]; then
69+
docker tag "${base}:${tag}" envbuilder:latest
7070
echo "Tagged $current as envbuilder:latest!"
7171
fi

scripts/develop.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/usr/bin/env bash
22

3-
cd $(dirname "${BASH_SOURCE[0]}")
3+
cd "$(dirname "${BASH_SOURCE[0]}")"
44
set -euxo pipefail
55

66
./build.sh

scripts/diagram.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/usr/bin/env bash
22

3-
cd $(dirname "${BASH_SOURCE[0]}")
3+
cd "$(dirname "${BASH_SOURCE[0]}")"
44
set -euxo pipefail
55

66
d2 ./diagram.d2 --pad=32 -t 1 ./diagram-light.svg

scripts/version.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#!/usr/bin/env bash
22

33
set -euo pipefail
4-
cd $(dirname "${BASH_SOURCE[0]}")
4+
cd "$(dirname "${BASH_SOURCE[0]}")"
55

66
last_tag="$(git describe --tags --abbrev=0)"
77
version="$last_tag"

testutil/registrytest/registrytest.go

-10
Original file line numberDiff line numberDiff line change
@@ -44,16 +44,6 @@ func New(t *testing.T) string {
4444
return srv.URL
4545
}
4646

47-
type logrusFormatter struct {
48-
callback func(entry *logrus.Entry)
49-
empty []byte
50-
}
51-
52-
func (f *logrusFormatter) Format(entry *logrus.Entry) ([]byte, error) {
53-
f.callback(entry)
54-
return f.empty, nil
55-
}
56-
5747
// WriteContainer uploads a container to the registry server.
5848
// It returns the reference to the uploaded container.
5949
func WriteContainer(t *testing.T, serverURL, containerRef, mediaType string, files map[string]any) string {

0 commit comments

Comments
 (0)