feat: register extra information during build (#390)

* feat: register extra information during build

* update github action go version

* update action
This commit is contained in:
Li Yiyang 2024-11-15 15:22:22 +08:00 committed by GitHub
parent ba7372a236
commit 7b466bc7b4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
12 changed files with 43 additions and 23 deletions

View File

@ -21,7 +21,7 @@ jobs:
- name: Install Go - name: Install Go
uses: actions/setup-go@v2 uses: actions/setup-go@v2
with: with:
go-version: 1.16.x go-version: 1.22.x
- name: Checkout code - name: Checkout code
uses: actions/checkout@v2 uses: actions/checkout@v2
- name: Go build - name: Go build
@ -33,5 +33,5 @@ jobs:
./goc build -o ./gocc . ./goc build -o ./gocc .
- name: run e2e test - name: run e2e test
run: | run: |
go get github.com/onsi/ginkgo/ginkgo go install github.com/onsi/ginkgo/ginkgo
make e2e make e2e

View File

@ -21,7 +21,7 @@ jobs:
- name: Install Go - name: Install Go
uses: actions/setup-go@v2 uses: actions/setup-go@v2
with: with:
go-version: 1.16.x go-version: 1.22.x
- name: Checkout code - name: Checkout code
uses: actions/checkout@v2 uses: actions/checkout@v2
- name: Go build - name: Go build
@ -33,5 +33,5 @@ jobs:
.\goc.exe build -o gocc . .\goc.exe build -o gocc .
- name: run e2e test - name: run e2e test
run: | run: |
go get github.com/onsi/ginkgo/ginkgo go install github.com/onsi/ginkgo/ginkgo
ginkgo tests/e2e/... ginkgo tests/e2e/...

View File

@ -11,7 +11,7 @@ jobs:
- name: Install Go - name: Install Go
uses: actions/setup-go@v2 uses: actions/setup-go@v2
with: with:
go-version: 1.16.x go-version: 1.22.x
- name: compile and release - name: compile and release
run: | run: |
./hack/release.sh ./hack/release.sh
@ -28,7 +28,7 @@ jobs:
- name: Install Go - name: Install Go
uses: actions/setup-go@v2 uses: actions/setup-go@v2
with: with:
go-version: 1.16.x go-version: 1.22.x
- name: compile and release - name: compile and release
run: | run: |
./hack/release.sh ./hack/release.sh
@ -45,7 +45,7 @@ jobs:
- name: Install Go - name: Install Go
uses: actions/setup-go@v2 uses: actions/setup-go@v2
with: with:
go-version: 1.16.x go-version: 1.22.x
- name: compile and release - name: compile and release
run: | run: |
./hack/release.sh ./hack/release.sh
@ -62,7 +62,7 @@ jobs:
- name: Install Go - name: Install Go
uses: actions/setup-go@v2 uses: actions/setup-go@v2
with: with:
go-version: 1.16.x go-version: 1.22.x
- name: compile and release - name: compile and release
run: | run: |
./hack/release.sh ./hack/release.sh

View File

@ -15,7 +15,7 @@ jobs:
name: vet and gofmt name: vet and gofmt
strategy: strategy:
matrix: matrix:
go-version: [1.16.x] go-version: [1.22.x]
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Install Go - name: Install Go

View File

@ -15,7 +15,7 @@ jobs:
name: go test on windows name: go test on windows
strategy: strategy:
matrix: matrix:
go-version: [1.16.x] go-version: [1.22.x]
runs-on: windows-latest runs-on: windows-latest
steps: steps:
- name: Install Go - name: Install Go

View File

@ -15,7 +15,7 @@ jobs:
name: go test on linux name: go test on linux
strategy: strategy:
matrix: matrix:
go-version: [1.16.x] go-version: [1.22.x]
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Install Go - name: Install Go

View File

@ -26,13 +26,15 @@ var buildCmd = &cobra.Command{
} }
var ( var (
gocmode string gocmode string
gochost string gochost string
gocextra string
) )
func init() { func init() {
buildCmd.Flags().StringVarP(&gocmode, "gocmode", "", "count", "coverage mode: set, count, atomic, watch") buildCmd.Flags().StringVarP(&gocmode, "gocmode", "", "count", "coverage mode: set, count, atomic, watch")
buildCmd.Flags().StringVarP(&gochost, "gochost", "", "127.0.0.1:7777", "specify the host of the goc sever") buildCmd.Flags().StringVarP(&gochost, "gochost", "", "127.0.0.1:7777", "specify the host of the goc sever")
buildCmd.Flags().StringVarP(&gocextra, "gocextra", "", "", "specify the extra information injected into the build")
rootCmd.AddCommand(buildCmd) rootCmd.AddCommand(buildCmd)
} }
@ -47,6 +49,7 @@ func buildAction(cmd *cobra.Command, args []string) {
build.WithArgs(args), build.WithArgs(args),
build.WithBuild(), build.WithBuild(),
build.WithDebug(globalDebug), build.WithDebug(globalDebug),
build.WithExtra(gocextra),
) )
b.Build() b.Build()

View File

@ -28,6 +28,7 @@ var installCmd = &cobra.Command{
func init() { func init() {
installCmd.Flags().StringVarP(&gocmode, "gocmode", "", "count", "coverage mode: set, count, atomic, watch") installCmd.Flags().StringVarP(&gocmode, "gocmode", "", "count", "coverage mode: set, count, atomic, watch")
installCmd.Flags().StringVarP(&gochost, "gochost", "", "127.0.0.1:7777", "specify the host of the goc sever") installCmd.Flags().StringVarP(&gochost, "gochost", "", "127.0.0.1:7777", "specify the host of the goc sever")
installCmd.Flags().StringVarP(&gocextra, "gocextra", "", "", "specify the extra information injected into the build")
rootCmd.AddCommand(installCmd) rootCmd.AddCommand(installCmd)
} }
@ -42,6 +43,7 @@ func installAction(cmd *cobra.Command, args []string) {
build.WithArgs(args), build.WithArgs(args),
build.WithInstall(), build.WithInstall(),
build.WithDebug(globalDebug), build.WithDebug(globalDebug),
build.WithExtra(gocextra),
) )
b.Install() b.Install()

View File

@ -45,7 +45,7 @@ var (
token string token string
id string id string
cond = sync.NewCond(&sync.Mutex{}) cond = sync.NewCond(&sync.Mutex{})
register_extra = os.Getenv("GOC_REGISTER_EXTRA") register_extra = "{{.Extra}}"
) )
func init() { func init() {
@ -55,6 +55,11 @@ func init() {
host = host_env host = host_env
} }
// init extra information
if os.Getenv("GOC_REGISTER_EXTRA") != "" {
register_extra = os.Getenv("GOC_REGISTER_EXTRA")
}
var dialer = websocket.DefaultDialer var dialer = websocket.DefaultDialer
go func() { go func() {

View File

@ -31,6 +31,7 @@ type Build struct {
Debug bool Debug bool
Host string Host string
Mode string // cover mode Mode string // cover mode
Extra string
GOPATH string GOPATH string
GOBIN string GOBIN string
@ -53,7 +54,6 @@ type Build struct {
} }
// NewBuild creates a Build struct // NewBuild creates a Build struct
//
func NewBuild(opts ...gocOption) *Build { func NewBuild(opts ...gocOption) *Build {
b := &Build{} b := &Build{}

View File

@ -14,6 +14,8 @@
package build package build
import ( import (
"strings"
"github.com/spf13/pflag" "github.com/spf13/pflag"
) )
@ -60,3 +62,9 @@ func WithDebug(enable bool) gocOption {
b.Debug = enable b.Debug = enable
} }
} }
func WithExtra(extra string) gocOption {
return func(b *Build) {
b.Extra = strings.TrimSpace(extra)
}
}

View File

@ -127,14 +127,14 @@ func (b *Build) getPkgTmpDir(pkgDir string) string {
// injectGocAgent inject handlers like following // injectGocAgent inject handlers like following
// //
// - xxx.go // - xxx.go
// - yyy_package // - yyy_package
// - main.go // - main.go
// - goc-cover-agent-apis-auto-generated-11111-22222-bridge.go // - goc-cover-agent-apis-auto-generated-11111-22222-bridge.go
// - goc-cover-agent-apis-auto-generated-11111-22222-package // - goc-cover-agent-apis-auto-generated-11111-22222-package
// | // |
// -- rpcagent.go // -- rpcagent.go
// -- watchagent.go // -- watchagent.go
// //
// 11111_22222_bridge.go 仅仅用于引用 11111_22222_package, where package contains ws agent main logic. // 11111_22222_bridge.go 仅仅用于引用 11111_22222_package, where package contains ws agent main logic.
// 使用 bridge.go 文件是为了避免插桩逻辑中的变量名污染 main 包 // 使用 bridge.go 文件是为了避免插桩逻辑中的变量名污染 main 包
@ -195,12 +195,14 @@ func (b *Build) injectGocAgent(where string, covers []*PackageCover) {
Package string Package string
Host string Host string
Mode string Mode string
Extra string
}{ }{
Covers: covers, Covers: covers,
GlobalCoverVarImportPath: b.GlobalCoverVarImportPath, GlobalCoverVarImportPath: b.GlobalCoverVarImportPath,
Package: injectPkgName, Package: injectPkgName,
Host: b.Host, Host: b.Host,
Mode: _coverMode, Mode: _coverMode,
Extra: b.Extra,
} }
if err := coverMainTmpl.Execute(f2, tmplData); err != nil { if err := coverMainTmpl.Execute(f2, tmplData); err != nil {