Feat: build all platform

pull/3/head
zijiren233 1 year ago
parent f84ee186d1
commit d1c05acf04

@ -30,7 +30,7 @@ jobs:
- name: Build - name: Build
run: | run: |
bash build.sh -v dev -P -p "windows/amd64,linux/amd64,linux/arm64,darwin/amd64,darwin/arm64" bash build.sh -v dev -P -p "windows,linux,darwin"
- name: Upload artifact - name: Upload artifact
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v3

@ -149,6 +149,16 @@ function CheckPlatform() {
function CheckAllPlatform() { function CheckAllPlatform() {
for platform in $(echo "$PLATFORM" | tr "," "\n"); do for platform in $(echo "$PLATFORM" | tr "," "\n"); do
if [ "$platform" == "all" ]; then
PLATFORM="all"
return 0
elif [ "$platform" == "linux" ]; then
continue
elif [ "$platform" == "darwin" ]; then
continue
elif [ "$platform" == "windows" ]; then
continue
fi
CheckPlatform "$platform" CheckPlatform "$platform"
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
echo "platform $platform not allowd" echo "platform $platform not allowd"
@ -172,6 +182,10 @@ function Build() {
else else
GOOS=$GOOS GOARCH=$GOARCH go build -tags "$TAGS" -ldflags "$LDFLAGS" -o "$BUILD_DIR/$(basename $PWD)-$GOOS-$GOARCH$EXT" . GOOS=$GOOS GOARCH=$GOARCH go build -tags "$TAGS" -ldflags "$LDFLAGS" -o "$BUILD_DIR/$(basename $PWD)-$GOOS-$GOARCH$EXT" .
fi fi
if [ $? -ne 0 ]; then
echo "build $GOOS/$GOARCH error"
exit 1
fi
} }
function BuildSingle() { function BuildSingle() {
@ -188,24 +202,31 @@ function BuildSingle() {
else else
go build -tags "$TAGS" -ldflags "$LDFLAGS" -o "$BUILD_DIR/$(basename $PWD)$EXT" . go build -tags "$TAGS" -ldflags "$LDFLAGS" -o "$BUILD_DIR/$(basename $PWD)$EXT" .
fi fi
if [ $? -ne 0 ]; then
echo "build $GOOS/$GOARCH error"
exit 1
fi
} }
function BuildAll() { function BuildAll() {
if [ ! "$PLATFORM" ]; then if [ ! "$1" ]; then
BuildSingle BuildSingle
return return
elif [ "$PLATFORM" == "all" ]; then else
PLATFORM="$ALLOWD_PLATFORM" for platform in $(echo "$1" | tr "," "\n"); do
elif [ "$PLATFORM" == "linux" ]; then if [ "$platform" == "all" ]; then
PLATFORM="$LINUX_ALLOWED_PLATFORM" BuildAll "$ALLOWD_PLATFORM"
elif [ "$PLATFORM" == "darwin" ]; then elif [ "$platform" == "linux" ]; then
PLATFORM="$DARWIN_ALLOWED_PLATFORM" BuildAll "$LINUX_ALLOWED_PLATFORM"
elif [ "$PLATFORM" == "windows" ]; then elif [ "$platform" == "darwin" ]; then
PLATFORM="$WINDOWS_ALLOWED_PLATFORM" BuildAll "$DARWIN_ALLOWED_PLATFORM"
elif [ "$platform" == "windows" ]; then
BuildAll "$WINDOWS_ALLOWED_PLATFORM"
else
Build "$platform"
fi
done
fi fi
for platform in $(echo "$PLATFORM" | tr "," "\n"); do
Build "$platform"
done
} }
ChToScriptFileDir ChToScriptFileDir
@ -213,4 +234,4 @@ Init
ParseArgs "$@" ParseArgs "$@"
FixArgs FixArgs
InitDep InitDep
BuildAll BuildAll "$PLATFORM"

@ -3,9 +3,7 @@ package bootstrap
import ( import (
"errors" "errors"
"os" "os"
"os/signal"
"sync" "sync"
"syscall"
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
@ -46,37 +44,6 @@ func NewSysNotifyTask(name string, NotifyType NotifyType, task func() error) *Sy
} }
} }
func InitSysNotify() {
c = make(chan os.Signal, 1)
signal.Notify(c, syscall.SIGHUP /*1*/, syscall.SIGINT /*2*/, syscall.SIGQUIT /*3*/, syscall.SIGTERM /*15*/, syscall.SIGUSR1 /*10*/, syscall.SIGUSR2 /*12*/)
WaitCbk = func() {
once.Do(waitCbk)
}
}
func waitCbk() {
log.Info("wait sys notify")
for s := range c {
log.Infof("receive sys notify: %v", s)
switch s {
case syscall.SIGHUP, syscall.SIGINT, syscall.SIGQUIT, syscall.SIGTERM:
tq, ok := TaskGroup.Load(NotifyTypeEXIT)
if ok {
log.Info("task: NotifyTypeEXIT running...")
runTask(tq)
}
return
case syscall.SIGUSR1, syscall.SIGUSR2:
tq, ok := TaskGroup.Load(NotifyTypeRELOAD)
if ok {
log.Info("task: NotifyTypeRELOAD running...")
runTask(tq)
}
}
log.Info("task: all done")
}
}
func runTask(tq *taskQueue) { func runTask(tq *taskQueue) {
tq.notifyTaskLock.Lock() tq.notifyTaskLock.Lock()
defer tq.notifyTaskLock.Unlock() defer tq.notifyTaskLock.Unlock()

@ -0,0 +1,43 @@
//go:build !windows
// +build !windows
package bootstrap
import (
"os"
"os/signal"
"syscall"
log "github.com/sirupsen/logrus"
)
func InitSysNotify() {
c = make(chan os.Signal, 1)
signal.Notify(c, syscall.SIGHUP /*1*/, syscall.SIGINT /*2*/, syscall.SIGQUIT /*3*/, syscall.SIGTERM /*15*/, syscall.SIGUSR1 /*10*/, syscall.SIGUSR2 /*12*/)
WaitCbk = func() {
once.Do(waitCbk)
}
}
func waitCbk() {
log.Info("wait sys notify")
for s := range c {
log.Infof("receive sys notify: %v", s)
switch s {
case syscall.SIGHUP, syscall.SIGINT, syscall.SIGQUIT, syscall.SIGTERM:
tq, ok := TaskGroup.Load(NotifyTypeEXIT)
if ok {
log.Info("task: NotifyTypeEXIT running...")
runTask(tq)
}
return
case syscall.SIGUSR1, syscall.SIGUSR2:
tq, ok := TaskGroup.Load(NotifyTypeRELOAD)
if ok {
log.Info("task: NotifyTypeRELOAD running...")
runTask(tq)
}
}
log.Info("task: all done")
}
}

@ -0,0 +1,34 @@
package bootstrap
import (
"os"
"os/signal"
"syscall"
log "github.com/sirupsen/logrus"
)
func InitSysNotify() {
c = make(chan os.Signal, 1)
signal.Notify(c, syscall.SIGHUP /*1*/, syscall.SIGINT /*2*/, syscall.SIGQUIT /*3*/, syscall.SIGTERM /*15*/)
WaitCbk = func() {
once.Do(waitCbk)
}
}
func waitCbk() {
log.Info("wait sys notify")
for s := range c {
log.Infof("receive sys notify: %v", s)
switch s {
case syscall.SIGHUP, syscall.SIGINT, syscall.SIGQUIT, syscall.SIGTERM:
tq, ok := TaskGroup.Load(NotifyTypeEXIT)
if ok {
log.Info("task: NotifyTypeEXIT running...")
runTask(tq)
}
return
}
log.Info("task: all done")
}
}
Loading…
Cancel
Save