Merge pull request #923 from gtardif/lint_local

Lint local backend
This commit is contained in:
Guillaume Tardif 2020-11-18 17:33:51 +01:00 committed by GitHub
commit fbf5b0a7f9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 46 additions and 45 deletions

3
.github/labeler.yml vendored
View File

@ -4,6 +4,9 @@ aci:
ecs:
- ecs/**/*
local:
- local/**/*
cli:
- cli/**/*

View File

@ -43,11 +43,13 @@ FROM golangci/golangci-lint:${GOLANGCI_LINT_VERSION} AS lint-base
FROM base AS lint
ENV CGO_ENABLED=0
COPY --from=lint-base /usr/bin/golangci-lint /usr/bin/golangci-lint
ARG BUILD_TAGS
ARG GIT_TAG
RUN --mount=target=. \
--mount=type=cache,target=/go/pkg/mod \
--mount=type=cache,target=/root/.cache/go-build \
--mount=type=cache,target=/root/.cache/golangci-lint \
BUILD_TAGS=${BUILD_TAGS} \
GIT_TAG=${GIT_TAG} \
make -f builder.Makefile lint

View File

@ -72,6 +72,7 @@ cache-clear: ## Clear the builder cache
lint: ## run linter(s)
@docker build . \
--build-arg BUILD_TAGS=example,local,e2e \
--build-arg GIT_TAG=$(GIT_TAG) \
--target lint

View File

@ -39,6 +39,7 @@ WORK_DIR:=$(shell mktemp -d)
TAGS:=
ifdef BUILD_TAGS
TAGS=-tags $(BUILD_TAGS)
LINT_TAGS=--build-tags $(BUILD_TAGS)
endif
TAR_TRANSFORM:=--transform s/packaging/docker/ --transform s/bin/docker/ --transform s/docker-linux-amd64/docker/ --transform s/docker-darwin-amd64/docker/
@ -68,7 +69,7 @@ test:
.PHONY: lint
lint:
golangci-lint run --timeout 10m0s ./...
golangci-lint run $(LINT_TAGS) --timeout 10m0s ./...
.PHONY: import-restrictions
import-restrictions:

View File

@ -20,6 +20,7 @@ package local
import (
"context"
"github.com/docker/docker/client"
"github.com/docker/compose-cli/api/compose"
@ -71,6 +72,3 @@ func (s *local) VolumeService() volumes.Service {
func (s *local) ResourceService() resources.Service {
return nil
}

View File

@ -22,13 +22,14 @@ import (
"context"
"encoding/json"
"fmt"
"golang.org/x/sync/errgroup"
"io"
"path/filepath"
"strconv"
"strings"
"sync"
"golang.org/x/sync/errgroup"
"github.com/compose-spec/compose-go/types"
"github.com/docker/compose-cli/api/compose"
"github.com/docker/compose-cli/api/containers"
@ -222,11 +223,11 @@ func (s *local) Logs(ctx context.Context, projectName string, w io.Writer) error
consumer := formatter.NewLogConsumer(w)
for _, c := range list {
service := c.Labels[serviceLabel]
containerId := c.ID
containerID := c.ID
go func() {
s.containerService.Logs(ctx,containerId, containers.LogsRequest{
_ = s.containerService.Logs(ctx, containerID, containers.LogsRequest{
Follow: true,
Writer: consumer.GetWriter(service, containerId),
Writer: consumer.GetWriter(service, containerID),
})
wg.Done()
}()
@ -260,7 +261,6 @@ func (s *local) Ps(ctx context.Context, projectName string) ([]compose.ServiceSt
return status, nil
}
func (s *local) List(ctx context.Context, projectName string) ([]compose.Stack, error) {
_, err := s.containerService.apiClient.ContainerList(ctx, moby.ContainerListOptions{All: true})
if err != nil {
@ -340,15 +340,8 @@ func getContainerCreateOptions(p *types.Project, s types.ServiceConfig, number i
// StopTimeout: s.StopGracePeriod FIXME conversion
}
mountOptions, err := buildContainerMountOptions(p, s, inherit)
if err != nil {
return nil, nil, nil, err
}
bindings, err := buildContainerBindingOptions(s)
if err != nil {
return nil, nil, nil, err
}
mountOptions := buildContainerMountOptions(p, s, inherit)
bindings := buildContainerBindingOptions(s)
networkMode := getNetworkMode(p, s)
hostConfig := container.HostConfig{
@ -376,7 +369,7 @@ func buildContainerPorts(s types.ServiceConfig) nat.PortSet {
return ports
}
func buildContainerBindingOptions(s types.ServiceConfig) (nat.PortMap, error) {
func buildContainerBindingOptions(s types.ServiceConfig) nat.PortMap {
bindings := nat.PortMap{}
for _, port := range s.Ports {
p := nat.Port(fmt.Sprintf("%d/%s", port.Target, port.Protocol))
@ -388,10 +381,10 @@ func buildContainerBindingOptions(s types.ServiceConfig) (nat.PortMap, error) {
bind = append(bind, binding)
bindings[p] = bind
}
return bindings, nil
return bindings
}
func buildContainerMountOptions(p *types.Project, s types.ServiceConfig, inherit *moby.Container) ([]mount.Mount, error) {
func buildContainerMountOptions(p *types.Project, s types.ServiceConfig, inherit *moby.Container) []mount.Mount {
mounts := []mount.Mount{}
var inherited []string
if inherit != nil {
@ -434,7 +427,7 @@ func buildContainerMountOptions(p *types.Project, s types.ServiceConfig, inherit
TmpfsOptions: buildTmpfsOptions(v.Tmpfs),
})
}
return mounts, nil
return mounts
}
func buildBindOption(bind *types.ServiceVolumeBind) *mount.BindOptions {
@ -561,9 +554,8 @@ func (s *local) ensureNetwork(ctx context.Context, n types.NetworkConfig) error
Done: true,
})
return nil
} else {
return err
}
return err
}
return nil
}

View File

@ -21,6 +21,8 @@ package local
import (
"context"
"fmt"
"strconv"
"github.com/compose-spec/compose-go/types"
"github.com/docker/compose-cli/api/containers"
"github.com/docker/compose-cli/progress"
@ -28,7 +30,6 @@ import (
"github.com/docker/docker/api/types/filters"
"github.com/docker/docker/api/types/network"
"golang.org/x/sync/errgroup"
"strconv"
)
func (s *local) ensureService(ctx context.Context, project *types.Project, service types.ServiceConfig) error {
@ -229,7 +230,6 @@ func (s *local) runContainer(ctx context.Context, project *types.Project, servic
return nil
}
func (s *local) connectContainerToNetwork(ctx context.Context, id string, service string, n string) error {
err := s.containerService.apiClient.NetworkConnect(ctx, n, id, &network.EndpointSettings{
Aliases: []string{service},

View File

@ -20,12 +20,13 @@ package local
import (
"context"
"github.com/compose-spec/compose-go/types"
"golang.org/x/sync/errgroup"
)
func inDependencyOrder(ctx context.Context, project *types.Project, fn func(types.ServiceConfig) error) error {
eg, ctx := errgroup.WithContext(ctx)
eg, _ := errgroup.WithContext(ctx)
var (
scheduled []string
ready []string

View File

@ -20,9 +20,10 @@ package local
import (
"context"
"gotest.tools/v3/assert"
"testing"
"gotest.tools/v3/assert"
"github.com/compose-spec/compose-go/types"
)
@ -47,11 +48,12 @@ func TestInDependencyOrder(t *testing.T) {
},
},
}
//nolint:errcheck, unparam
go inDependencyOrder(context.TODO(), &project, func(config types.ServiceConfig) error {
order <- config.Name
return nil
})
assert.Equal(t, <- order, "test3")
assert.Equal(t, <- order, "test2")
assert.Equal(t, <- order, "test1")
assert.Equal(t, <-order, "test3")
assert.Equal(t, <-order, "test2")
assert.Equal(t, <-order, "test1")
}

View File

@ -20,6 +20,7 @@ package local
import (
"fmt"
"github.com/docker/docker/api/types/filters"
)

View File

@ -20,13 +20,14 @@ package local
import (
"encoding/json"
"github.com/opencontainers/go-digest"
)
func jsonHash(o interface{}) (string, error) {
bytes, err := json.Marshal(o)
if err != nil {
return "", nil
return "", err
}
return digest.SHA256.FromBytes(bytes).String(), nil
}

View File

@ -22,7 +22,6 @@ import (
"os"
)
func init() {
testSocket, defined := os.LookupEnv("TEST_METRICS_SOCKET")
if defined {