You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by ke...@apache.org on 2021/11/16 11:24:09 UTC

[skywalking-cli] branch docker/crossplatform updated (b5b54e6 -> 4fad915)

This is an automated email from the ASF dual-hosted git repository.

kezhenxu94 pushed a change to branch docker/crossplatform
in repository https://gitbox.apache.org/repos/asf/skywalking-cli.git.


 discard b5b54e6  Add cross platform build targets
     new 4fad915  Add cross platform build targets

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (b5b54e6)
            \
             N -- N -- N   refs/heads/docker/crossplatform (4fad915)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .github/workflows/go.yml              | 2 ++
 .github/workflows/publish-docker.yaml | 1 -
 docs/How-to-release.md                | 5 ++++-
 3 files changed, 6 insertions(+), 2 deletions(-)

[skywalking-cli] 01/01: Add cross platform build targets

Posted by ke...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kezhenxu94 pushed a commit to branch docker/crossplatform
in repository https://gitbox.apache.org/repos/asf/skywalking-cli.git

commit 4fad915184f9ea3bcb571e000930437b1c7d49d5
Author: kezhenxu94 <ke...@apache.org>
AuthorDate: Tue Nov 16 17:35:42 2021 +0800

    Add cross platform build targets
---
 .github/workflows/go.yml                       |  2 +
 .github/workflows/publish-docker.yaml          |  7 +--
 Makefile                                       | 78 +++++++++++++-------------
 cmd/swctl/main.go                              |  3 +-
 docs/How-to-release.md                         |  5 +-
 internal/commands/install/manifest/manifest.go |  3 +-
 pkg/graphql/dashboard/global.go                |  4 +-
 7 files changed, 52 insertions(+), 50 deletions(-)

diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml
index 3a44d84..814d8ed 100644
--- a/.github/workflows/go.yml
+++ b/.github/workflows/go.yml
@@ -54,3 +54,5 @@ jobs:
       - name: Build
         run: make build -j3
 
+      - name: Build Docker images
+        run: make docker
diff --git a/.github/workflows/publish-docker.yaml b/.github/workflows/publish-docker.yaml
index 6eda3e0..a95013f 100644
--- a/.github/workflows/publish-docker.yaml
+++ b/.github/workflows/publish-docker.yaml
@@ -50,8 +50,5 @@ jobs:
           registry: ${{ env.HUB }}
           username: ${{ github.actor }}
           password: ${{ secrets.GITHUB_TOKEN }}
-      - name: Build docker image
-        run: |
-          make docker.push || make docker.push
-          docker tag $HUB/$APP_NAME:{$VERSION,latest}
-          docker push $HUB/$APP_NAME:latest
+      - name: Build and push docker images
+        run: make docker.push || make docker.push
diff --git a/Makefile b/Makefile
index ef592ff..d8c8fac 100644
--- a/Makefile
+++ b/Makefile
@@ -25,65 +25,65 @@ HUB ?= docker.io/apache
 RELEASE_BIN = skywalking-cli-$(VERSION)-bin
 RELEASE_SRC = skywalking-cli-$(VERSION)-src
 
-OS = $(shell uname)
-
 GO = go
 GO_PATH = $$($(GO) env GOPATH)
 GO_BUILD = $(GO) build
 GO_GET = $(GO) get
 GO_INSTALL = $(GO) install
 GO_TEST = $(GO) test
-GO_LINT = $(GO_PATH)/bin/golangci-lint
-GO_LICENSER = $(GO_PATH)/bin/go-licenser
-ARCH := $(shell uname)
-OSNAME := $(if $(findstring Darwin,$(ARCH)),darwin,linux)
 GO_BUILD_FLAGS = -v
 GO_BUILD_LDFLAGS = -X main.version=$(VERSION)
 
-PLATFORMS := windows linux darwin
-os = $(word 1, $@)
-ARCH = amd64
+GO_LINT = golangci-lint
+LICENSE_EYE = license-eye
 
-SHELL = /bin/bash
+BUILDS := darwin-amd64 darwin-arm64 linux-386 linux-amd64 linux-arm64 windows-386 windows-amd64
+BUILD_RULE = GOOS=$(GOOS) GOARCH=$(GOARCH) $(GO_BUILD) $(GO_BUILD_FLAGS) -ldflags "$(GO_BUILD_LDFLAGS)" -o $(OUT_DIR)/$(BINARY)-$(VERSION)-$(GOOS)-$(GOARCH) cmd/swctl/main.go
 
 all: clean license deps lint test build
 
-tools:
-	mkdir -p $(GO_PATH)/bin
-	$(GO_LINT) version || curl -sfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(GO_PATH)/bin
-	$(GO_LICENSER) -version || GO111MODULE=off $(GO_GET) -u github.com/elastic/go-licenser
+.PHONY: $(BUILDS)
+$(BUILDS): GOOS = $(word 1,$(subst -, ,$@))
+$(BUILDS): GOARCH = $(word 2,$(subst -, ,$@))
+$(BUILDS):
+	$(BUILD_RULE)
+
+.PHONY: build
+build: $(BUILDS)
 
-deps: tools
-	$(GO_GET) -v -t -d ./...
+.PHONY: deps
+deps:
+	@$(GO_GET) -v -t -d ./...
 
-.PHONY: $(PLATFORMS)
-$(PLATFORMS): clean
-	mkdir -p $(OUT_DIR)
-	GOOS=$(os) GOARCH=$(ARCH) $(GO_BUILD) $(GO_BUILD_FLAGS) -ldflags "$(GO_BUILD_LDFLAGS)" -o $(OUT_DIR)/$(BINARY)-$(VERSION)-$(os)-$(ARCH) cmd/swctl/main.go
+$(GO_LINT):
+	@$(GO_LINT) version > /dev/null 2>&1 || go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
+$(LICENSE_EYE):
+	@$(LICENSE_EYE) --version > /dev/null 2>&1 || go install github.com/apache/skywalking-eyes/cmd/license-eye@latest
 
 .PHONY: lint
-lint: tools
+lint: $(GO_LINT)
 	$(GO_LINT) run -v --timeout 5m ./...
+.PHONY: fix-lint
+fix-lint: $(GO_LINT)
+	$(GO_LINT) run -v --fix ./...
+
+.PHONY: license
+license: clean $(LICENSE_EYE)
+	@$(LICENSE_EYE) header check
+.PHONY: fix-license
+fix-license: clean $(LICENSE_EYE)
+	@$(LICENSE_EYE) header fix
+
+.PHONY: fix
+fix: fix-lint fix-license
 
 .PHONY: test
 test: clean
 	$(GO_TEST) ./... -coverprofile=coverage.txt -covermode=atomic
 
-.PHONY: build
-build: deps windows linux darwin
-
-.PHONY: license
-license: clean tools
-	$(GO_LICENSER) -d -licensor='Apache Software Foundation (ASF)' .
-
 .PHONY: verify
 verify: clean license lint test
 
-.PHONY: fix
-fix: tools
-	$(GO_LINT) run -v --fix ./...
-	$(GO_LICENSER) -licensor='Apache Software Foundation (ASF)' .
-
 .PHONY: coverage
 coverage: test
 	bash <(curl -s https://codecov.io/bash) -t a5af28a3-92a2-4b35-9a77-54ad99b1ae00
@@ -137,16 +137,18 @@ check-codegen:
 	fi
 
 .PHONY: docker
-docker: clean
-	docker build --build-arg VERSION=$(VERSION) . -t $(HUB)/$(APP_NAME):$(VERSION)
+docker:
+	docker buildx create --use
+	docker buildx build $(PUSH) --platform linux/386,linux/amd64,linux/arm64 --build-arg VERSION=$(VERSION) . -t $(HUB)/$(APP_NAME):$(VERSION) -t $(HUB)/$(APP_NAME):latest
 
 .PHONY: docker.push
+docker.push: PUSH = --push
 docker.push: docker
-	docker push $(HUB)/$(APP_NAME):$(VERSION)
 
 .PHONY: install
-install: $(OSNAME)
-	-cp $(OUT_DIR)/$(BINARY)-$(VERSION)-$(OSNAME)-$(ARCH) $(DESTDIR)/swctl
+install: clean
+	$(BUILD_RULE)
+	-cp $(OUT_DIR)/$(BINARY)-$(VERSION)-$(OSNAME)-* $(DESTDIR)/swctl
 
 .PHONY: uninstall
 uninstall: $(OSNAME)
diff --git a/cmd/swctl/main.go b/cmd/swctl/main.go
index 65b7bdb..f52ea7e 100644
--- a/cmd/swctl/main.go
+++ b/cmd/swctl/main.go
@@ -18,7 +18,6 @@
 package main
 
 import (
-	"io/ioutil"
 	"os"
 	"runtime"
 
@@ -192,7 +191,7 @@ func expandConfigFile(c *cli.Context) error {
 func tryConfigFile(flags []cli.Flag) cli.BeforeFunc {
 	return func(c *cli.Context) error {
 		configFile := c.String("config")
-		if bytes, err := ioutil.ReadFile(configFile); err == nil {
+		if bytes, err := os.ReadFile(configFile); err == nil {
 			log.Debug("Using configurations:\n", string(bytes))
 
 			err = altsrc.InitInputSourceWithContext(flags, altsrc.NewYamlSourceFromFlagFunc("config"))(c)
diff --git a/docs/How-to-release.md b/docs/How-to-release.md
index f1426a4..acdb878 100644
--- a/docs/How-to-release.md
+++ b/docs/How-to-release.md
@@ -195,7 +195,10 @@ Vote result should follow these:
     svn mv https://dist.apache.org/repos/dist/dev/skywalking/cli/$VERSION https://dist.apache.org/repos/dist/release/skywalking/cli -m"Release SkyWalking CLI $VERSION"
     ```
 
-1. Push Docker images.
+2. Push Docker images.
+
+In order to publish the Docker images, you
+have [to enable BuildKit in the Docker daemon](https://docs.docker.com/develop/develop-images/build_enhancements/.
 
 ```shell
 make docker.push
diff --git a/internal/commands/install/manifest/manifest.go b/internal/commands/install/manifest/manifest.go
index 1e76779..2d1b72d 100644
--- a/internal/commands/install/manifest/manifest.go
+++ b/internal/commands/install/manifest/manifest.go
@@ -21,7 +21,6 @@ import (
 	"bufio"
 	"fmt"
 	"io"
-	"io/ioutil"
 	"os"
 	"strings"
 
@@ -98,7 +97,7 @@ func loadOverlay(file string, in io.Reader, out interface{}) error {
 			}
 		}
 	} else {
-		b, err := ioutil.ReadFile(file)
+		b, err := os.ReadFile(file)
 		if err != nil {
 			return err
 		}
diff --git a/pkg/graphql/dashboard/global.go b/pkg/graphql/dashboard/global.go
index 3586de4..13b1aad 100644
--- a/pkg/graphql/dashboard/global.go
+++ b/pkg/graphql/dashboard/global.go
@@ -19,7 +19,7 @@ package dashboard
 
 import (
 	"bytes"
-	"io/ioutil"
+	"os"
 	"strings"
 	"sync"
 
@@ -100,7 +100,7 @@ func LoadTemplate(filename string) (*GlobalTemplate, error) {
 	if filename == DefaultTemplatePath {
 		byteValue = []byte(assets.Read(filename))
 	} else {
-		byteValue, err = ioutil.ReadFile(filename)
+		byteValue, err = os.ReadFile(filename)
 		if err != nil {
 			return nil, err
 		}