Skip to content

Commit

Permalink
add ci and fix some lint errors
Browse files Browse the repository at this point in the history
  • Loading branch information
hanweisen committed Aug 16, 2023
1 parent efc5a0c commit eca6f28
Show file tree
Hide file tree
Showing 47 changed files with 961 additions and 205 deletions.
68 changes: 68 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
name: CI
on:
push:
pull_request:
jobs:
golangci:
name: lint
runs-on: ubuntu-22.04
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Install Go
uses: actions/setup-go@v4
with:
go-version: '1.20'
- name: golint
uses: golangci/golangci-lint-action@v3
with:
version: v1.53.3
verify:
name: verify
runs-on: ubuntu-22.04
env:
GOPATH: ${{ github.workspace }}
WORKSPACE: ${{ github.workspace }}/src/github.com/kosmos-io/clusterlink
defaults:
run:
working-directory: ${{ env.WORKSPACE }}
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
path: ${{ env.WORKSPACE }}
- name: Install Go
uses: actions/setup-go@v4
with:
go-version: '1.20'
- run: hack/verify-vendor.sh
- run: hack/verify-codegen.sh
- run: hack/verify-crds.sh
build:
name: build
needs: verify
runs-on: ubuntu-22.04
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
# https://github.com/actions/checkout#fetch-all-history-for-all-tags-and-branches
fetch-depth: 0
- name: Install Go
uses: actions/setup-go@v4
with:
go-version: '1.20'
- name: Compile
run: make all
test:
name: Unit test
needs: build
runs-on: ubuntu-22.04
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Install Go
uses: actions/setup-go@v4
with:
go-version: '1.20'
- run: make test
81 changes: 24 additions & 57 deletions .golangci.yml
Original file line number Diff line number Diff line change
@@ -1,70 +1,37 @@
# This files contains all configuration options for analysis running.
# More details please refer to: https://golangci-lint.run/usage/configuration/

run:
# timeout for analysis, e.g. 30s, 5m, default is 1m
timeout: 10m

# which dirs to skip: issues from them won't be reported;
# can use regexp here: generated.*, regexp is applied on full path;
# default value is empty list, but default dirs are skipped independently
# from this option's value (see skip-dirs-use-default).
# "/" will be replaced by current OS file path separator to properly work
# on Windows.
timeout: 60m
skip-dirs:
- hack/tools/preferredimports # This code is directly lifted from the Kubernetes codebase, skip checking
- (^|/)vendor($|/)
- (^|/)third_party($|/)

# default is true. Enables skipping of directories:
# vendor$, third_party$, testdata$, examples$, Godeps$, builtin$
skip-dirs-use-default: false

# One of 'readonly' and 'vendor'.
# - readonly: the go command is disallowed from the implicit automatic updating of go.mod described above.
# Instead, it fails when any changes to go.mod are needed. This setting is most useful to check
# that go.mod does not need updates, such as in a continuous integration and testing system.
# - vendor: the go command assumes that the vendor directory holds the correct copies of dependencies and ignores
# the dependency descriptions in go.mod.
modules-download-mode: readonly
- hack/($|/)
- (^|/)vendor($|/)
- (^|/)generated($|/)
modules-download-mode: vendor
linters:
disable-all: true
enable:
# linters maintained by golang.org
- gofmt
- goimports
- govet
# linters default enabled by golangci-lint .
- errcheck
- gosimple
- ineffassign
- staticcheck
- typecheck
- unused
# other linters supported by golangci-lint.
- gci
- gocyclo
- gosec
- misspell
- whitespace
- revive

- whitespace
- bodyclose
- dupl
- errcheck
- gci
- gofmt
- goimports
- misspell
- unused
- typecheck
linters-settings:
goimports:
local-prefixes: github.com/kosmos.io/clusterlink
gocyclo:
# minimal cyclomatic complexity to report
min-complexity: 15
misspell:
ignore-words:
- creater
gci:
sections:
- Standard
- Default
- Prefix(github.com/kosmos.io/clusterlink)
output:
sort-results: true




issues:
# The list of ids of default excludes to include or disable. By default it's empty.
include:
# disable excluding of issues about comments from revive
# see https://golangci-lint.run/usage/configuration/#command-line-options for more info
- EXC0012
- EXC0013
- EXC0014
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ lint-fix: golangci-lint

golangci-lint:
ifeq (, $(shell which golangci-lint))
GO111MODULE=on go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.49.0
GO111MODULE=on go install github.com/golangci/golangci-lint/cmd/golangci-lint@1.53.3
GOLANGLINT_BIN=$(shell go env GOPATH)/bin/golangci-lint
else
GOLANGLINT_BIN=$(shell which golangci-lint)
Expand Down
2 changes: 1 addition & 1 deletion cmd/clusterlink-proxy/app/clusterlink-proxy.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ package app
import (
"context"
"fmt"
"k8s.io/klog/v2"

"github.com/spf13/cobra"
cliflag "k8s.io/component-base/cli/flag"
"k8s.io/component-base/term"
"k8s.io/klog/v2"

"github.com/kosmos.io/clusterlink/cmd/clusterlink-proxy/app/options"
)
Expand Down
3 changes: 0 additions & 3 deletions cmd/controller-manager/app/controller-manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package app
import (
"context"
"flag"
"sync"

"github.com/spf13/cobra"
"k8s.io/apimachinery/pkg/util/sets"
Expand All @@ -25,8 +24,6 @@ var (

// ControllersDisabledByDefault is the set of Controllers which is disabled by default
ControllersDisabledByDefault = sets.New[string]()

stopOnce sync.Once
)

func init() {
Expand Down
9 changes: 6 additions & 3 deletions cmd/controller-manager/app/controllerstarter.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ func (c *Controller) Start(ctx context.Context) error {

clusterInformerFactory := externalversions.NewSharedInformerFactory(c.clusterLinkClient, 0)
clusterInformer := clusterInformerFactory.Clusterlink().V1alpha1().Clusters().Informer()
clusterInformer.AddEventHandler(cache.FilteringResourceEventHandler{
_, err := clusterInformer.AddEventHandler(cache.FilteringResourceEventHandler{
Handler: cache.ResourceEventHandlerFuncs{
AddFunc: c.OnAdd,
UpdateFunc: c.OnUpdate,
Expand All @@ -70,6 +70,11 @@ func (c *Controller) Start(ctx context.Context) error {
return cluster.Name == c.opts.ClusterName
},
})
if err != nil {
klog.Fatalf("failed add cluster event handler: %v", err)
panic(err)
}

c.clusterLister = clusterInformerFactory.Clusterlink().V1alpha1().Clusters().Lister()

c.setupControllers()
Expand Down Expand Up @@ -180,8 +185,6 @@ func (c *Controller) setupControllers() {
}

func (c *Controller) startControllers() {

//mgr的start会block
go func() {
if err := c.mgr.Start(c.ctx); err != nil {
klog.Errorf("controller manager exits unexpectedly: %v", err)
Expand Down
4 changes: 3 additions & 1 deletion go.mod
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
module github.com/kosmos.io/clusterlink

go 1.19
go 1.20

require (
github.com/coreos/go-iptables v0.6.0
Expand Down Expand Up @@ -152,3 +152,5 @@ require (
sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect
sigs.k8s.io/yaml v1.3.0 // indirect
)

replace golang.org/x/oauth2 => golang.org/x/oauth2 v0.1.0
Loading

0 comments on commit eca6f28

Please sign in to comment.