mirror of https://github.com/docker/compose.git
Add `make lint` and run it on CI
This commit is contained in:
parent
6feedaf939
commit
4e9a4185af
|
@ -11,23 +11,17 @@ jobs:
|
|||
name: Build
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Set up Go 1.13
|
||||
- name: Set up Go 1.14
|
||||
uses: actions/setup-go@v1
|
||||
with:
|
||||
go-version: 1.13
|
||||
go-version: 1.14
|
||||
id: go
|
||||
|
||||
- name: Checkout code into the Go module directory
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Install Protoc
|
||||
uses: arduino/setup-protoc@master
|
||||
|
||||
- name: Get dependencies
|
||||
run: ./scripts/setup/install-go-gen
|
||||
|
||||
- name: Protos
|
||||
run: make protos
|
||||
- name: Lint
|
||||
run: make lint
|
||||
|
||||
- name: Build
|
||||
run: make cli
|
||||
|
|
|
@ -30,4 +30,6 @@ linters-settings:
|
|||
lll:
|
||||
line-length: 200
|
||||
issues:
|
||||
# golangci hides some golint warnings (the warning about exported things
|
||||
# withtout documentation for example), this will make it show them anyway.
|
||||
exclude-use-default: false
|
10
Dockerfile
10
Dockerfile
|
@ -13,9 +13,9 @@ RUN apt-get update && apt-get install --no-install-recommends -y \
|
|||
protobuf-compiler \
|
||||
libprotobuf-dev
|
||||
|
||||
RUN go get github.com/golang/protobuf/protoc-gen-go && \
|
||||
RUN go get github.com/golang/protobuf/protoc-gen-go@v1.4.1 && \
|
||||
go get golang.org/x/tools/cmd/goimports && \
|
||||
go get gotest.tools/gotestsum && \
|
||||
go get gotest.tools/gotestsum@v0.4.2 && \
|
||||
go get github.com/golangci/golangci-lint/cmd/golangci-lint@v1.26.0
|
||||
|
||||
WORKDIR ${PWD}
|
||||
|
@ -37,13 +37,13 @@ RUN --mount=type=cache,target=/root/.cache/go-build \
|
|||
make -f builder.Makefile cross
|
||||
|
||||
FROM scratch AS protos
|
||||
COPY --from=make-protos /go/src/github.com/docker/api .
|
||||
COPY --from=make-protos /api .
|
||||
|
||||
FROM scratch AS cli
|
||||
COPY --from=make-cli /go/src/github.com/docker/api/bin/* .
|
||||
COPY --from=make-cli /api/bin/* .
|
||||
|
||||
FROM scratch AS cross
|
||||
COPY --from=make-cross /go/src/github.com/docker/api/bin/* .
|
||||
COPY --from=make-cross /api/bin/* .
|
||||
|
||||
FROM make-protos as test
|
||||
RUN make -f builder.Makefile test
|
||||
|
|
4
Makefile
4
Makefile
|
@ -54,8 +54,8 @@ cache-clear: # Clear the builder cache
|
|||
@docker builder prune --force --filter type=exec.cachemount --filter=unused-for=24h
|
||||
|
||||
lint: ## run linter(s)
|
||||
@echo "Linting..."
|
||||
golangci-lint run --timeout 10m0s ./...
|
||||
@docker build . \
|
||||
--target lint
|
||||
|
||||
help: ## Show help
|
||||
@echo Please specify a build target. The choices are:
|
||||
|
|
12
README.md
12
README.md
|
@ -4,7 +4,17 @@
|
|||
|
||||
## Dev Setup
|
||||
|
||||
Make sure you have Docker installed and running.
|
||||
The recommended way is to use the main `Makefile` that runs everything inside a container.
|
||||
|
||||
If you don't have or want to use Docker for building you need to make sure you have all the needed tools installed locally:
|
||||
|
||||
* go 1.14
|
||||
* `go get github.com/golang/protobuf/protoc-gen-go@v1.4.1`
|
||||
* `go get golang.org/x/tools/cmd/goimports`
|
||||
* `go get gotest.tools/gotestsum@v0.4.2`
|
||||
* `go get github.com/golangci/golangci-lint/cmd/golangci-lint@v1.26.0`
|
||||
|
||||
And then you can call the same make targets but you need to pass it the `builder.Makefile` (`make -f builder.Makefile`).
|
||||
|
||||
## Building the project
|
||||
|
||||
|
|
33
azure/aci.go
33
azure/aci.go
|
@ -30,7 +30,10 @@ func init() {
|
|||
}
|
||||
|
||||
func createACIContainers(ctx context.Context, aciContext store.AciContext, groupDefinition containerinstance.ContainerGroup) (c containerinstance.ContainerGroup, err error) {
|
||||
containerGroupsClient := getContainerGroupsClient(aciContext.SubscriptionID)
|
||||
containerGroupsClient, err := getContainerGroupsClient(aciContext.SubscriptionID)
|
||||
if err != nil {
|
||||
return c, errors.Wrapf(err, "cannot get container group client")
|
||||
}
|
||||
|
||||
// Check if the container group already exists
|
||||
_, err = containerGroupsClient.Get(ctx, aciContext.ResourceGroup, *groupDefinition.Name)
|
||||
|
@ -94,7 +97,10 @@ func createACIContainers(ctx context.Context, aciContext store.AciContext, group
|
|||
}
|
||||
|
||||
func execACIContainer(ctx context.Context, aciContext store.AciContext, command, containerGroup string, containerName string) (c containerinstance.ContainerExecResponse, err error) {
|
||||
containerClient := getContainerClient(aciContext.SubscriptionID)
|
||||
containerClient, err := getContainerClient(aciContext.SubscriptionID)
|
||||
if err != nil {
|
||||
return c, errors.Wrapf(err, "cannot get container client")
|
||||
}
|
||||
rows, cols := getTermSize()
|
||||
containerExecRequest := containerinstance.ContainerExecRequest{
|
||||
Command: to.StringPtr(command),
|
||||
|
@ -199,7 +205,10 @@ func exec(ctx context.Context, address string, password string, reader io.Reader
|
|||
}
|
||||
|
||||
func getACIContainerLogs(ctx context.Context, aciContext store.AciContext, containerGroupName, containerName string) (string, error) {
|
||||
containerClient := getContainerClient(aciContext.SubscriptionID)
|
||||
containerClient, err := getContainerClient(aciContext.SubscriptionID)
|
||||
if err != nil {
|
||||
return "", errors.Wrapf(err, "cannot get container client")
|
||||
}
|
||||
|
||||
logs, err := containerClient.ListLogs(ctx, aciContext.ResourceGroup, containerGroupName, containerName, nil)
|
||||
if err != nil {
|
||||
|
@ -208,16 +217,22 @@ func getACIContainerLogs(ctx context.Context, aciContext store.AciContext, conta
|
|||
return *logs.Content, err
|
||||
}
|
||||
|
||||
func getContainerGroupsClient(subscriptionID string) containerinstance.ContainerGroupsClient {
|
||||
auth, _ := auth.NewAuthorizerFromCLI()
|
||||
func getContainerGroupsClient(subscriptionID string) (containerinstance.ContainerGroupsClient, error) {
|
||||
auth, err := auth.NewAuthorizerFromCLI()
|
||||
if err != nil {
|
||||
return containerinstance.ContainerGroupsClient{}, err
|
||||
}
|
||||
containerGroupsClient := containerinstance.NewContainerGroupsClient(subscriptionID)
|
||||
containerGroupsClient.Authorizer = auth
|
||||
return containerGroupsClient
|
||||
return containerGroupsClient, nil
|
||||
}
|
||||
|
||||
func getContainerClient(subscriptionID string) containerinstance.ContainerClient {
|
||||
auth, _ := auth.NewAuthorizerFromCLI()
|
||||
func getContainerClient(subscriptionID string) (containerinstance.ContainerClient, error) {
|
||||
auth, err := auth.NewAuthorizerFromCLI()
|
||||
if err != nil {
|
||||
return containerinstance.ContainerClient{}, err
|
||||
}
|
||||
containerClient := containerinstance.NewContainerClient(subscriptionID)
|
||||
containerClient.Authorizer = auth
|
||||
return containerClient
|
||||
return containerClient, nil
|
||||
}
|
||||
|
|
|
@ -57,6 +57,10 @@ cross:
|
|||
test:
|
||||
@gotestsum ./...
|
||||
|
||||
lint:
|
||||
golangci-lint run --timeout 10m0s ./...
|
||||
|
||||
|
||||
FORCE:
|
||||
|
||||
.PHONY: all protos cli cross test
|
||||
.PHONY: all protos cli cross test lint
|
||||
|
|
|
@ -43,7 +43,7 @@ func runServe(ctx context.Context, opts serveOpts) error {
|
|||
if err != nil {
|
||||
return errors.Wrap(err, "listen unix socket")
|
||||
}
|
||||
// nolint
|
||||
// nolint errcheck
|
||||
defer listener.Close()
|
||||
|
||||
p := proxy.NewContainerAPI()
|
||||
|
|
|
@ -46,7 +46,7 @@ func LoadConfigFile(configDir string, configFileName string) (*ConfigFile, error
|
|||
if err != nil {
|
||||
return nil, fmt.Errorf("can't read %s: %w", filename, err)
|
||||
}
|
||||
// nolint
|
||||
// nolint errcheck
|
||||
defer file.Close()
|
||||
err = json.NewDecoder(file).Decode(&configFile)
|
||||
if err != nil {
|
||||
|
|
|
@ -47,7 +47,7 @@ type Flags struct {
|
|||
Context string
|
||||
}
|
||||
|
||||
// AddFlags adds persistent (globa) flags
|
||||
// AddFlags adds persistent (global) flags
|
||||
func (c *Flags) AddFlags(flags *pflag.FlagSet) {
|
||||
flags.StringVar(&c.Config, "config", filepath.Join(home(), configFileDir), "Location of the client config files `DIRECTORY`")
|
||||
flags.StringVarP(&c.Context, "context", "c", os.Getenv("DOCKER_CONTEXT"), "context")
|
||||
|
|
2
go.mod
2
go.mod
|
@ -1,6 +1,6 @@
|
|||
module github.com/docker/api
|
||||
|
||||
go 1.13
|
||||
go 1.14
|
||||
|
||||
require (
|
||||
github.com/Azure/azure-sdk-for-go v42.0.0+incompatible
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
go get -u github.com/gogo/protobuf/proto
|
||||
go get -u github.com/gogo/protobuf/jsonpb
|
||||
go get -u github.com/golang/protobuf/protoc-gen-go
|
||||
go get -u github.com/stevvooe/protobuild
|
||||
go get -u gotest.tools/gotestsum
|
|
@ -1,61 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright The containerd Authors.
|
||||
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
#
|
||||
# Downloads and installs protobuf
|
||||
#
|
||||
set -eu -o pipefail
|
||||
|
||||
PROTOBUF_VERSION=3.11.4
|
||||
GOARCH=$(go env GOARCH)
|
||||
GOOS=$(go env GOOS)
|
||||
PROTOBUF_DIR=$(mktemp -d)
|
||||
|
||||
case $GOARCH in
|
||||
|
||||
arm64)
|
||||
wget -O $PROTOBUF_DIR/protobuf "https://github.com/google/protobuf/releases/download/v$PROTOBUF_VERSION/protoc-$PROTOBUF_VERSION-linux-aarch64.zip"
|
||||
unzip $PROTOBUF_DIR/protobuf -d /usr/local
|
||||
;;
|
||||
|
||||
amd64 | 386)
|
||||
if [ "$GOOS" = windows ]; then
|
||||
wget -O $PROTOBUF_DIR/protobuf "https://github.com/google/protobuf/releases/download/v$PROTOBUF_VERSION/protoc-$PROTOBUF_VERSION-win32.zip"
|
||||
elif [ "$GOOS" = linux ]; then
|
||||
wget -O $PROTOBUF_DIR/protobuf "https://github.com/google/protobuf/releases/download/v$PROTOBUF_VERSION/protoc-$PROTOBUF_VERSION-linux-x86_64.zip"
|
||||
elif [ "$GOOS" = darwin ]; then
|
||||
curl -Lo $PROTOBUF_DIR/protobuf "https://github.com/google/protobuf/releases/download/v$PROTOBUF_VERSION/protoc-$PROTOBUF_VERSION-osx-x86_64.zip"
|
||||
fi
|
||||
unzip $PROTOBUF_DIR/protobuf -x readme.txt -d /usr/local
|
||||
;;
|
||||
|
||||
ppc64le)
|
||||
wget -O $PROTOBUF_DIR/protobuf "https://github.com/google/protobuf/releases/download/v$PROTOBUF_VERSION/protoc-$PROTOBUF_VERSION-linux-ppcle_64.zip"
|
||||
unzip $PROTOBUF_DIR/protobuf -d /usr/local
|
||||
;;
|
||||
*)
|
||||
wget -O $PROTOBUF_DIR/protobuf "https://github.com/google/protobuf/releases/download/v$PROTOBUF_VERSION/protobuf-cpp-$PROTOBUF_VERSION.zip"
|
||||
unzip $PROTOBUF_DIR/protobuf -d /usr/src/protobuf
|
||||
cd /usr/src/protobuf/protobuf-$PROTOBUF_VERSION
|
||||
./autogen.sh
|
||||
./configure --disable-shared
|
||||
make
|
||||
make check
|
||||
make install
|
||||
ldconfig
|
||||
;;
|
||||
esac
|
||||
rm -rf $PROTOBUF_DIR
|
Loading…
Reference in New Issue