mirror of
https://github.com/oneclickvirt/ecs.git
synced 2025-12-18 23:38:13 +08:00
fix:修复公共分支构建覆写问题,删除不再使用的备份文件
This commit is contained in:
@@ -1,84 +0,0 @@
|
||||
before:
|
||||
hooks:
|
||||
- go mod tidy -v
|
||||
builds:
|
||||
- id: universal
|
||||
env:
|
||||
- CGO_ENABLED=0
|
||||
ldflags:
|
||||
- -s -w -X main.version={{.Version}} -X main.arch={{.Arch}} -checklinkname=0 -extldflags=-static
|
||||
flags:
|
||||
- -trimpath
|
||||
goos:
|
||||
- linux
|
||||
- windows
|
||||
- freebsd
|
||||
goarch:
|
||||
- arm
|
||||
- arm64
|
||||
- 386
|
||||
- amd64
|
||||
- mips
|
||||
- mipsle
|
||||
- s390x
|
||||
- riscv64
|
||||
gomips:
|
||||
- softfloat
|
||||
ignore:
|
||||
- goos: windows
|
||||
goarch: arm
|
||||
main: ./
|
||||
binary: goecs
|
||||
- id: darwin-amd64
|
||||
env:
|
||||
- CGO_ENABLED=1
|
||||
- CC=o64-clang
|
||||
- CXX=o64-clang++
|
||||
ldflags:
|
||||
- -s -w -X main.version={{.Version}} -X main.arch={{.Arch}} -checklinkname=0
|
||||
flags:
|
||||
- -trimpath
|
||||
goos:
|
||||
- darwin
|
||||
goarch:
|
||||
- amd64
|
||||
main: ./
|
||||
binary: goecs
|
||||
- id: darwin-arm64
|
||||
env:
|
||||
- CGO_ENABLED=1
|
||||
- CC=oa64-clang
|
||||
- CXX=oa64-clang++
|
||||
ldflags:
|
||||
- -s -w -X main.version={{.Version}} -X main.arch={{.Arch}} -checklinkname=0
|
||||
flags:
|
||||
- -trimpath
|
||||
goos:
|
||||
- darwin
|
||||
goarch:
|
||||
- arm64
|
||||
main: ./
|
||||
binary: goecs
|
||||
universal_binaries:
|
||||
- name_template: "goecs"
|
||||
replace: false
|
||||
checksum:
|
||||
name_template: "checksums.txt"
|
||||
snapshot:
|
||||
name_template: "goecs"
|
||||
archives:
|
||||
- name_template: "goecs_{{ .Os }}_{{ .Arch }}"
|
||||
format: zip
|
||||
files:
|
||||
- none*
|
||||
changelog:
|
||||
sort: asc
|
||||
filters:
|
||||
exclude:
|
||||
- "^docs:"
|
||||
- "^test:"
|
||||
- "^chore"
|
||||
- Merge pull request
|
||||
- Merge branch
|
||||
- go mod tidy
|
||||
- New translations
|
||||
@@ -1,522 +0,0 @@
|
||||
version: 2
|
||||
project_name: goecs
|
||||
|
||||
env:
|
||||
- GO111MODULE=on
|
||||
|
||||
before:
|
||||
hooks:
|
||||
- go mod tidy -v
|
||||
|
||||
builds:
|
||||
# Linux AMD64 with CGO
|
||||
- id: linux-amd64-cgo
|
||||
env:
|
||||
- CGO_ENABLED=1
|
||||
- CC=x86_64-linux-gnu-gcc
|
||||
- CGO_CFLAGS=-O2 -static -fno-stack-protector
|
||||
ldflags:
|
||||
- -s -w -X main.version={{.Version}} -X main.arch={{.Arch}} -checklinkname=0 -extldflags=-static
|
||||
flags:
|
||||
- -trimpath
|
||||
goos:
|
||||
- linux
|
||||
goarch:
|
||||
- amd64
|
||||
main: ./
|
||||
binary: goecs
|
||||
no_unique_dist_dir: true
|
||||
hooks:
|
||||
pre:
|
||||
- echo "Starting build for linux/amd64 (CGO)"
|
||||
post:
|
||||
- echo "Successfully built linux/amd64 (CGO)"
|
||||
- echo "---"
|
||||
|
||||
# Linux 386 with CGO - 修复了编译器和标志
|
||||
- id: linux-386-cgo
|
||||
env:
|
||||
- CGO_ENABLED=1
|
||||
- CC=gcc
|
||||
- CGO_CFLAGS=-m32 -O1 -march=i686 -mtune=generic -fno-stack-protector
|
||||
- CGO_LDFLAGS=-m32
|
||||
ldflags:
|
||||
- -s -w -X main.version={{.Version}} -X main.arch={{.Arch}} -checklinkname=0 -extldflags="-m32 -static"
|
||||
flags:
|
||||
- -trimpath
|
||||
goos:
|
||||
- linux
|
||||
goarch:
|
||||
- 386
|
||||
main: ./
|
||||
binary: goecs
|
||||
no_unique_dist_dir: true
|
||||
hooks:
|
||||
pre:
|
||||
- echo "Starting build for linux/386 (CGO)"
|
||||
post:
|
||||
- echo "Successfully built linux/386 (CGO)"
|
||||
- echo "---"
|
||||
|
||||
# Linux ARM64 with CGO
|
||||
- id: linux-arm64-cgo
|
||||
env:
|
||||
- CGO_ENABLED=1
|
||||
- CC=aarch64-linux-gnu-gcc
|
||||
- CGO_CFLAGS=-O1 -fno-stack-protector
|
||||
ldflags:
|
||||
- -s -w -X main.version={{.Version}} -X main.arch={{.Arch}} -checklinkname=0 -extldflags=-static
|
||||
flags:
|
||||
- -trimpath
|
||||
goos:
|
||||
- linux
|
||||
goarch:
|
||||
- arm64
|
||||
main: ./
|
||||
binary: goecs
|
||||
no_unique_dist_dir: true
|
||||
hooks:
|
||||
pre:
|
||||
- echo "Starting build for linux/arm64 (CGO)"
|
||||
post:
|
||||
- echo "Successfully built linux/arm64 (CGO)"
|
||||
- echo "---"
|
||||
|
||||
# Windows AMD64 with CGO
|
||||
- id: windows-amd64-cgo
|
||||
env:
|
||||
- CGO_ENABLED=1
|
||||
- CC=x86_64-w64-mingw32-gcc
|
||||
- CGO_CFLAGS=-O2 -static-libgcc -static-libstdc++
|
||||
- CGO_LDFLAGS=-static-libgcc -static-libstdc++
|
||||
ldflags:
|
||||
- -s -w -X main.version={{.Version}} -X main.arch={{.Arch}} -checklinkname=0 -extldflags=-static
|
||||
flags:
|
||||
- -trimpath
|
||||
goos:
|
||||
- windows
|
||||
goarch:
|
||||
- amd64
|
||||
main: ./
|
||||
binary: goecs
|
||||
no_unique_dist_dir: true
|
||||
hooks:
|
||||
pre:
|
||||
- echo "Starting build for windows/amd64 (CGO)"
|
||||
post:
|
||||
- echo "Successfully built windows/amd64 (CGO)"
|
||||
- echo "---"
|
||||
|
||||
# Windows 386 with CGO - 修复了编译器名称
|
||||
- id: windows-386-cgo
|
||||
env:
|
||||
- CGO_ENABLED=1
|
||||
- CC=i686-w64-mingw32-gcc
|
||||
- CGO_CFLAGS=-O2 -static-libgcc -static-libstdc++
|
||||
- CGO_LDFLAGS=-static-libgcc -static-libstdc++
|
||||
ldflags:
|
||||
- -s -w -X main.version={{.Version}} -X main.arch={{.Arch}} -checklinkname=0 -extldflags=-static
|
||||
flags:
|
||||
- -trimpath
|
||||
goos:
|
||||
- windows
|
||||
goarch:
|
||||
- 386
|
||||
main: ./
|
||||
binary: goecs
|
||||
no_unique_dist_dir: true
|
||||
hooks:
|
||||
pre:
|
||||
- echo "Starting build for windows/386 (CGO)"
|
||||
post:
|
||||
- echo "Successfully built windows/386 (CGO)"
|
||||
- echo "---"
|
||||
|
||||
# Darwin AMD64 with CGO
|
||||
- id: darwin-amd64-cgo
|
||||
env:
|
||||
- CGO_ENABLED=1
|
||||
- CC=o64-clang
|
||||
- CGO_CFLAGS=-O2 -arch x86_64 -mmacosx-version-min=10.12
|
||||
- CGO_LDFLAGS=-arch x86_64 -mmacosx-version-min=10.12
|
||||
ldflags:
|
||||
- -s -w -X main.version={{.Version}} -X main.arch={{.Arch}} -checklinkname=0
|
||||
flags:
|
||||
- -trimpath
|
||||
goos:
|
||||
- darwin
|
||||
goarch:
|
||||
- amd64
|
||||
main: ./
|
||||
binary: goecs
|
||||
no_unique_dist_dir: true
|
||||
hooks:
|
||||
pre:
|
||||
- echo "Starting build for darwin/amd64 (CGO)"
|
||||
- echo "Checking osxcross tools..."
|
||||
- which o64-clang || echo "o64-clang not found"
|
||||
- which o64-clang++ || echo "o64-clang++ not found"
|
||||
post:
|
||||
- echo "Successfully built darwin/amd64 (CGO)"
|
||||
- echo "---"
|
||||
|
||||
# Darwin ARM64 with CGO
|
||||
- id: darwin-arm64-cgo
|
||||
env:
|
||||
- CGO_ENABLED=1
|
||||
- CC=oa64-clang
|
||||
- CGO_CFLAGS=-O2 -arch arm64 -mmacosx-version-min=11.0
|
||||
- CGO_LDFLAGS=-arch arm64 -mmacosx-version-min=11.0
|
||||
ldflags:
|
||||
- -s -w -X main.version={{.Version}} -X main.arch={{.Arch}} -checklinkname=0
|
||||
flags:
|
||||
- -trimpath
|
||||
goos:
|
||||
- darwin
|
||||
goarch:
|
||||
- arm64
|
||||
main: ./
|
||||
binary: goecs
|
||||
no_unique_dist_dir: true
|
||||
hooks:
|
||||
pre:
|
||||
- echo "Starting build for darwin/arm64 (CGO)"
|
||||
- echo "Checking osxcross tools..."
|
||||
- which oa64-clang || echo "oa64-clang not found"
|
||||
- which oa64-clang++ || echo "oa64-clang++ not found"
|
||||
post:
|
||||
- echo "Successfully built darwin/arm64 (CGO)"
|
||||
- echo "---"
|
||||
|
||||
# Linux RISC-V 64 with CGO
|
||||
- id: linux-riscv64-cgo
|
||||
env:
|
||||
- CGO_ENABLED=1
|
||||
- CC=riscv64-linux-gnu-gcc
|
||||
- CGO_CFLAGS=-O1 -fno-stack-protector
|
||||
ldflags:
|
||||
- -s -w -X main.version={{.Version}} -X main.arch={{.Arch}} -checklinkname=0 -extldflags=-static
|
||||
flags:
|
||||
- -trimpath
|
||||
goos:
|
||||
- linux
|
||||
goarch:
|
||||
- riscv64
|
||||
main: ./
|
||||
binary: goecs
|
||||
no_unique_dist_dir: true
|
||||
hooks:
|
||||
pre:
|
||||
- echo "Starting build for linux/riscv64 (CGO)"
|
||||
post:
|
||||
- echo "Successfully built linux/riscv64 (CGO)"
|
||||
- echo "---"
|
||||
|
||||
# Linux MIPS64 with CGO
|
||||
- id: linux-mips64-cgo
|
||||
env:
|
||||
- CGO_ENABLED=1
|
||||
- CC=mips64-linux-gnuabi64-gcc
|
||||
- CGO_CFLAGS=-O1 -fno-stack-protector
|
||||
ldflags:
|
||||
- -s -w -X main.version={{.Version}} -X main.arch={{.Arch}} -checklinkname=0 -extldflags=-static
|
||||
flags:
|
||||
- -trimpath
|
||||
goos:
|
||||
- linux
|
||||
goarch:
|
||||
- mips64
|
||||
main: ./
|
||||
binary: goecs
|
||||
no_unique_dist_dir: true
|
||||
hooks:
|
||||
pre:
|
||||
- echo "Starting build for linux/mips64 (CGO)"
|
||||
post:
|
||||
- echo "Successfully built linux/mips64 (CGO)"
|
||||
- echo "---"
|
||||
|
||||
# Linux MIPS64LE with CGO
|
||||
- id: linux-mips64le-cgo
|
||||
env:
|
||||
- CGO_ENABLED=1
|
||||
- CC=mips64el-linux-gnuabi64-gcc
|
||||
- CGO_CFLAGS=-O1 -fno-stack-protector
|
||||
ldflags:
|
||||
- -s -w -X main.version={{.Version}} -X main.arch={{.Arch}} -checklinkname=0 -extldflags=-static
|
||||
flags:
|
||||
- -trimpath
|
||||
goos:
|
||||
- linux
|
||||
goarch:
|
||||
- mips64le
|
||||
main: ./
|
||||
binary: goecs
|
||||
no_unique_dist_dir: true
|
||||
hooks:
|
||||
pre:
|
||||
- echo "Starting build for linux/mips64le (CGO)"
|
||||
post:
|
||||
- echo "Successfully built linux/mips64le (CGO)"
|
||||
- echo "---"
|
||||
|
||||
# Linux PPC64LE with CGO
|
||||
- id: linux-ppc64le-cgo
|
||||
env:
|
||||
- CGO_ENABLED=1
|
||||
- CC=powerpc64le-linux-gnu-gcc
|
||||
- CGO_CFLAGS=-O1 -fno-stack-protector
|
||||
ldflags:
|
||||
- -s -w -X main.version={{.Version}} -X main.arch={{.Arch}} -checklinkname=0 -extldflags=-static
|
||||
flags:
|
||||
- -trimpath
|
||||
goos:
|
||||
- linux
|
||||
goarch:
|
||||
- ppc64le
|
||||
main: ./
|
||||
binary: goecs
|
||||
no_unique_dist_dir: true
|
||||
hooks:
|
||||
pre:
|
||||
- echo "Starting build for linux/ppc64le (CGO)"
|
||||
post:
|
||||
- echo "Successfully built linux/ppc64le (CGO)"
|
||||
- echo "---"
|
||||
|
||||
# Linux ARM (no CGO)
|
||||
- id: linux-arm-nocgo
|
||||
env:
|
||||
- CGO_ENABLED=0
|
||||
ldflags:
|
||||
- -s -w -X main.version={{.Version}} -X main.arch={{.Arch}} -checklinkname=0
|
||||
flags:
|
||||
- -trimpath
|
||||
goos:
|
||||
- linux
|
||||
goarch:
|
||||
- arm
|
||||
goarm:
|
||||
- "5"
|
||||
- "6"
|
||||
- "7"
|
||||
main: ./
|
||||
binary: goecs
|
||||
no_unique_dist_dir: true
|
||||
hooks:
|
||||
pre:
|
||||
- echo "Starting build for linux/arm (no CGO)"
|
||||
post:
|
||||
- echo "Successfully built linux/arm (no CGO)"
|
||||
- echo "---"
|
||||
|
||||
# Linux S390X (no CGO)
|
||||
- id: linux-s390x-nocgo
|
||||
env:
|
||||
- CGO_ENABLED=0
|
||||
ldflags:
|
||||
- -s -w -X main.version={{.Version}} -X main.arch={{.Arch}} -checklinkname=0
|
||||
flags:
|
||||
- -trimpath
|
||||
goos:
|
||||
- linux
|
||||
goarch:
|
||||
- s390x
|
||||
main: ./
|
||||
binary: goecs
|
||||
no_unique_dist_dir: true
|
||||
hooks:
|
||||
pre:
|
||||
- echo "Starting build for linux/s390x (no CGO)"
|
||||
post:
|
||||
- echo "Successfully built linux/s390x (no CGO)"
|
||||
- echo "---"
|
||||
|
||||
# Linux MIPS (no CGO)
|
||||
- id: linux-mips-nocgo
|
||||
env:
|
||||
- CGO_ENABLED=0
|
||||
ldflags:
|
||||
- -s -w -X main.version={{.Version}} -X main.arch={{.Arch}} -checklinkname=0
|
||||
flags:
|
||||
- -trimpath
|
||||
goos:
|
||||
- linux
|
||||
goarch:
|
||||
- mips
|
||||
gomips:
|
||||
- softfloat
|
||||
main: ./
|
||||
binary: goecs
|
||||
no_unique_dist_dir: true
|
||||
hooks:
|
||||
pre:
|
||||
- echo "Starting build for linux/mips (no CGO)"
|
||||
post:
|
||||
- echo "Successfully built linux/mips (no CGO)"
|
||||
- echo "---"
|
||||
|
||||
# Linux MIPSLE (no CGO)
|
||||
- id: linux-mipsle-nocgo
|
||||
env:
|
||||
- CGO_ENABLED=0
|
||||
ldflags:
|
||||
- -s -w -X main.version={{.Version}} -X main.arch={{.Arch}} -checklinkname=0
|
||||
flags:
|
||||
- -trimpath
|
||||
goos:
|
||||
- linux
|
||||
goarch:
|
||||
- mipsle
|
||||
gomips:
|
||||
- softfloat
|
||||
main: ./
|
||||
binary: goecs
|
||||
no_unique_dist_dir: true
|
||||
hooks:
|
||||
pre:
|
||||
- echo "Starting build for linux/mipsle (no CGO)"
|
||||
post:
|
||||
- echo "Successfully built linux/mipsle (no CGO)"
|
||||
- echo "---"
|
||||
|
||||
# Linux PPC64 (no CGO)
|
||||
- id: linux-ppc64-nocgo
|
||||
env:
|
||||
- CGO_ENABLED=0
|
||||
ldflags:
|
||||
- -s -w -X main.version={{.Version}} -X main.arch={{.Arch}} -checklinkname=0
|
||||
flags:
|
||||
- -trimpath
|
||||
goos:
|
||||
- linux
|
||||
goarch:
|
||||
- ppc64
|
||||
main: ./
|
||||
binary: goecs
|
||||
no_unique_dist_dir: true
|
||||
hooks:
|
||||
pre:
|
||||
- echo "Starting build for linux/ppc64 (no CGO)"
|
||||
post:
|
||||
- echo "Successfully built linux/ppc64 (no CGO)"
|
||||
- echo "---"
|
||||
|
||||
# FreeBSD AMD64 (no CGO)
|
||||
- id: freebsd-amd64-nocgo
|
||||
env:
|
||||
- CGO_ENABLED=0
|
||||
ldflags:
|
||||
- -s -w -X main.version={{.Version}} -X main.arch={{.Arch}} -checklinkname=0
|
||||
flags:
|
||||
- -trimpath
|
||||
goos:
|
||||
- freebsd
|
||||
goarch:
|
||||
- amd64
|
||||
main: ./
|
||||
binary: goecs
|
||||
no_unique_dist_dir: true
|
||||
hooks:
|
||||
pre:
|
||||
- echo "Starting build for freebsd/amd64 (no CGO)"
|
||||
post:
|
||||
- echo "Successfully built freebsd/amd64 (no CGO)"
|
||||
- echo "---"
|
||||
|
||||
# FreeBSD ARM64 (no CGO)
|
||||
- id: freebsd-arm64-nocgo
|
||||
env:
|
||||
- CGO_ENABLED=0
|
||||
ldflags:
|
||||
- -s -w -X main.version={{.Version}} -X main.arch={{.Arch}} -checklinkname=0
|
||||
flags:
|
||||
- -trimpath
|
||||
goos:
|
||||
- freebsd
|
||||
goarch:
|
||||
- arm64
|
||||
main: ./
|
||||
binary: goecs
|
||||
no_unique_dist_dir: true
|
||||
hooks:
|
||||
pre:
|
||||
- echo "Starting build for freebsd/arm64 (no CGO)"
|
||||
post:
|
||||
- echo "Successfully built freebsd/arm64 (no CGO)"
|
||||
- echo "---"
|
||||
|
||||
universal_binaries:
|
||||
- name_template: "goecs"
|
||||
replace: false
|
||||
ids:
|
||||
- darwin-amd64-cgo
|
||||
- darwin-arm64-cgo
|
||||
|
||||
checksum:
|
||||
name_template: "checksums.txt"
|
||||
algorithm: sha256
|
||||
disable: false
|
||||
ids:
|
||||
- linux-amd64-cgo
|
||||
- linux-386-cgo
|
||||
- linux-arm64-cgo
|
||||
- linux-riscv64-cgo
|
||||
- linux-mips64-cgo
|
||||
- linux-mips64le-cgo
|
||||
- linux-ppc64le-cgo
|
||||
- windows-amd64-cgo
|
||||
- windows-386-cgo
|
||||
- darwin-amd64-cgo
|
||||
- darwin-arm64-cgo
|
||||
- linux-arm-nocgo
|
||||
- linux-s390x-nocgo
|
||||
- linux-mips-nocgo
|
||||
- linux-mipsle-nocgo
|
||||
- linux-ppc64-nocgo
|
||||
- freebsd-amd64-nocgo
|
||||
- freebsd-arm64-nocgo
|
||||
extra_files:
|
||||
- glob: "./goecs.sh"
|
||||
|
||||
snapshot:
|
||||
name_template: "goecs"
|
||||
|
||||
archives:
|
||||
- id: default
|
||||
name_template: "goecs_{{ .Os }}_{{ .Arch }}"
|
||||
format: zip
|
||||
files:
|
||||
- none*
|
||||
allow_different_binary_count: true
|
||||
builds:
|
||||
- linux-amd64-cgo
|
||||
- linux-386-cgo
|
||||
- linux-arm64-cgo
|
||||
- linux-riscv64-cgo
|
||||
- linux-mips64-cgo
|
||||
- linux-mips64le-cgo
|
||||
- linux-ppc64le-cgo
|
||||
- windows-amd64-cgo
|
||||
- windows-386-cgo
|
||||
- darwin-amd64-cgo
|
||||
- darwin-arm64-cgo
|
||||
- linux-arm-nocgo
|
||||
- linux-s390x-nocgo
|
||||
- linux-mips-nocgo
|
||||
- linux-mipsle-nocgo
|
||||
- linux-ppc64-nocgo
|
||||
- freebsd-amd64-nocgo
|
||||
- freebsd-arm64-nocgo
|
||||
|
||||
changelog:
|
||||
sort: asc
|
||||
filters:
|
||||
exclude:
|
||||
- "^docs:"
|
||||
- "^test:"
|
||||
- "^chore"
|
||||
- Merge pull request
|
||||
- Merge branch
|
||||
- go mod tidy
|
||||
- New translations
|
||||
@@ -1,14 +0,0 @@
|
||||
// clearScreen 清屏
|
||||
func clearScreen() {
|
||||
var cmd *exec.Cmd
|
||||
switch runtime.GOOS {
|
||||
case "windows":
|
||||
cmd = exec.Command("cmd", "/c", "cls")
|
||||
case "darwin":
|
||||
cmd = exec.Command("clear")
|
||||
default:
|
||||
cmd = exec.Command("clear")
|
||||
}
|
||||
cmd.Stdout = os.Stdout
|
||||
_ = cmd.Run()
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
package basic1
|
||||
|
||||
import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func Test_basic(t *testing.T) {
|
||||
Basic("zh")
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
package basic1
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/oneclickvirt/basics/network"
|
||||
"github.com/oneclickvirt/basics/system"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// 本包不在main中使用,仅做测试使用,真正调用的在 utils 中的 BasicsAndSecurityCheck
|
||||
func Basic(language string) {
|
||||
ipInfo, _, _ := network.NetworkCheck("both", false, language)
|
||||
systemInfo := system.CheckSystemInfo(language)
|
||||
basicInfo := strings.ReplaceAll(systemInfo+ipInfo, "\n\n", "\n")
|
||||
fmt.Print(basicInfo)
|
||||
}
|
||||
132
.back/build.yaml
132
.back/build.yaml
@@ -1,132 +0,0 @@
|
||||
name: Goreleaser
|
||||
on:
|
||||
workflow_dispatch:
|
||||
tags:
|
||||
- "v*.*.*"
|
||||
|
||||
jobs:
|
||||
goreleaser:
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
# 1.20 是 Windows 7/8 Server 2008/2012 最后一个支持版本
|
||||
image: goreleaser/goreleaser-cross:v1.20
|
||||
steps:
|
||||
- name: Configure git safe directory
|
||||
run: |
|
||||
git config --global --add safe.directory /__w/ecs/ecs
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set up Go
|
||||
uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: 1.23.4
|
||||
|
||||
- name: Configure Git for Private Modules
|
||||
run: |
|
||||
git config --global url."https://${{ secrets.GHT }}@github.com/".insteadOf "https://github.com/"
|
||||
git config --global url."git@github.com:".insteadOf "https://github.com/"
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GHT }}
|
||||
|
||||
- name: Install missing cross-compilation tools
|
||||
run: |
|
||||
echo "Installing missing cross-compilation tools..."
|
||||
apt-get update
|
||||
PACKAGES=(
|
||||
gcc-multilib
|
||||
g++-multilib
|
||||
linux-libc-dev
|
||||
linux-libc-dev:i386
|
||||
libc6-dev-i386
|
||||
libc6-dev-i386-cross
|
||||
gcc-aarch64-linux-gnu
|
||||
gcc-riscv64-linux-gnu
|
||||
gcc-mips64-linux-gnuabi64
|
||||
gcc-mips64el-linux-gnuabi64
|
||||
gcc-powerpc64le-linux-gnu
|
||||
gcc-mingw-w64-x86-64
|
||||
gcc-mingw-w64-i686
|
||||
libc6-dev-amd64-cross
|
||||
libc6-dev-arm64-cross
|
||||
libc6-dev-riscv64-cross
|
||||
libc6-dev-mips64-cross
|
||||
libc6-dev-mips64el-cross
|
||||
libc6-dev-ppc64el-cross
|
||||
)
|
||||
for pkg in "${PACKAGES[@]}"; do
|
||||
echo "Installing $pkg..."
|
||||
apt-get install -y "$pkg" || echo "Failed to install $pkg, continuing..."
|
||||
done
|
||||
|
||||
- name: Verify cross-compilation tools
|
||||
run: |
|
||||
echo "Checking available cross-compilation tools..."
|
||||
echo "=== GCC compilers ==="
|
||||
which gcc || echo "gcc not found"
|
||||
which x86_64-linux-gnu-gcc || echo "x86_64-linux-gnu-gcc not found"
|
||||
which aarch64-linux-gnu-gcc || echo "aarch64-linux-gnu-gcc not found"
|
||||
which riscv64-linux-gnu-gcc || echo "riscv64-linux-gnu-gcc not found"
|
||||
which mips64-linux-gnuabi64-gcc || echo "mips64-linux-gnuabi64-gcc not found"
|
||||
which mips64el-linux-gnuabi64-gcc || echo "mips64el-linux-gnuabi64-gcc not found"
|
||||
which powerpc64le-linux-gnu-gcc || echo "powerpc64le-linux-gnu-gcc not found"
|
||||
echo "=== MinGW compilers ==="
|
||||
which x86_64-w64-mingw32-gcc || echo "x86_64-w64-mingw32-gcc not found"
|
||||
which i686-w64-mingw32-gcc || echo "i686-w64-mingw32-gcc not found"
|
||||
echo "=== OSXCross compilers ==="
|
||||
which o64-clang || echo "o64-clang not found"
|
||||
which oa64-clang || echo "oa64-clang not found"
|
||||
which o64-clang++ || echo "o64-clang++ not found"
|
||||
which oa64-clang++ || echo "oa64-clang++ not found"
|
||||
echo "=== Clang compilers ==="
|
||||
which clang || echo "clang not found"
|
||||
echo "=== Available gcc binaries ==="
|
||||
ls -la /usr/bin/*gcc* | head -20
|
||||
echo "=== Available clang binaries ==="
|
||||
ls -la /usr/bin/*clang* | head -10
|
||||
echo "=== OSXCross directory ==="
|
||||
ls -la /usr/osxcross/bin/ 2>/dev/null || echo "OSXCross not found in /usr/osxcross/bin/"
|
||||
|
||||
- name: Run GoReleaser
|
||||
uses: goreleaser/goreleaser-action@v6
|
||||
with:
|
||||
distribution: goreleaser
|
||||
version: latest
|
||||
args: release --parallelism 1 --verbose
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GHT }}
|
||||
GOPRIVATE: github.com/oneclickvirt/security
|
||||
|
||||
- name: Update goecs.sh with new version
|
||||
run: |
|
||||
if [[ "$GITHUB_REF" == refs/tags/* ]]; then
|
||||
VERSION="${GITHUB_REF#refs/tags/v}"
|
||||
else
|
||||
VERSION=$(git describe --tags --abbrev=0 2>/dev/null | sed 's/^v//' || echo "0.1.37")
|
||||
fi
|
||||
echo "Using version: $VERSION"
|
||||
FILE="goecs.sh"
|
||||
BRANCH="master"
|
||||
git config --global user.name "github-actions[bot]"
|
||||
git config --global user.email "github-actions[bot]@users.noreply.github.com"
|
||||
git config --global --unset url."git@github.com:".insteadOf || true
|
||||
git fetch origin $BRANCH
|
||||
git checkout $BRANCH
|
||||
if [ ! -f "$FILE" ]; then
|
||||
echo "Error: $FILE not found"
|
||||
exit 1
|
||||
fi
|
||||
sed -i "s/\(_yellow \"Unable to get version info, using default version \).*\(\".*\)/\1$VERSION\2/" "$FILE"
|
||||
sed -i "s/\(ECS_VERSION=\"\).*\(\"\)/\1$VERSION\2/" "$FILE"
|
||||
if git diff --quiet "$FILE"; then
|
||||
echo "No changes detected in $FILE"
|
||||
exit 0
|
||||
fi
|
||||
git add "$FILE"
|
||||
git commit -m "chore: update ECS_VERSION to $VERSION in goecs.sh"
|
||||
git push origin $BRANCH
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GHT }}
|
||||
@@ -1,467 +0,0 @@
|
||||
name: Build and Release
|
||||
on:
|
||||
workflow_dispatch:
|
||||
tags:
|
||||
- "v*.*.*"
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Release Check And Build
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Get latest tag
|
||||
id: tag
|
||||
run: |
|
||||
TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "v0.1.0")
|
||||
echo "tag=$TAG" >> $GITHUB_OUTPUT
|
||||
echo "version=${TAG#v}" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Generate changelog
|
||||
id: changelog
|
||||
run: |
|
||||
TAG="${{ steps.tag.outputs.tag }}"
|
||||
PREV_TAG=$(git describe --tags --abbrev=0 "$TAG^" 2>/dev/null || echo "")
|
||||
if [ -z "$PREV_TAG" ]; then
|
||||
CHANGELOG=$(git log --oneline --pretty=format:"* %H %s" "$TAG" | head -20)
|
||||
else
|
||||
CHANGELOG=$(git log --oneline --pretty=format:"* %H %s" "$PREV_TAG..$TAG")
|
||||
fi
|
||||
FULL_CHANGELOG="## Changelog"$'\n'"$CHANGELOG"
|
||||
echo "$FULL_CHANGELOG" > changelog.txt
|
||||
echo "changelog<<EOF" >> $GITHUB_OUTPUT
|
||||
echo "$FULL_CHANGELOG" >> $GITHUB_OUTPUT
|
||||
echo "EOF" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Create or update release
|
||||
run: |
|
||||
TAG="${{ steps.tag.outputs.tag }}"
|
||||
CHANGELOG_BODY=$(cat changelog.txt | jq -Rs .)
|
||||
RELEASE_EXISTS=$(curl -s -H "Authorization: Bearer ${{ secrets.GHT }}" "https://api.github.com/repos/${{ github.repository }}/releases/tags/$TAG" | jq -r '.id // empty')
|
||||
if [ -z "$RELEASE_EXISTS" ]; then
|
||||
curl -s -X POST -H "Authorization: Bearer ${{ secrets.GHT }}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{\"tag_name\":\"$TAG\",\"name\":\"$TAG\",\"body\":$CHANGELOG_BODY,\"draft\":false,\"prerelease\":false}" \
|
||||
"https://api.github.com/repos/${{ github.repository }}/releases"
|
||||
else
|
||||
curl -s -X PATCH -H "Authorization: Bearer ${{ secrets.GHT }}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{\"body\":$CHANGELOG_BODY}" \
|
||||
"https://api.github.com/repos/${{ github.repository }}/releases/$RELEASE_EXISTS"
|
||||
fi
|
||||
|
||||
- name: Delete existing release assets
|
||||
run: |
|
||||
TAG="${{ steps.tag.outputs.tag }}"
|
||||
RELEASE_ID=$(curl -s -H "Authorization: Bearer ${{ secrets.GHT }}" "https://api.github.com/repos/${{ github.repository }}/releases/tags/$TAG" | jq -r '.id')
|
||||
if [ "$RELEASE_ID" != "null" ]; then
|
||||
ASSETS=$(curl -s -H "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/${{ github.repository }}/releases/$RELEASE_ID/assets" | jq -r '.[] | .id')
|
||||
for asset in $ASSETS; do
|
||||
curl -s -X DELETE -H "Authorization: Bearer ${{ secrets.GHT }}" "https://api.github.com/repos/${{ github.repository }}/releases/assets/$asset"
|
||||
done
|
||||
sleep 30
|
||||
fi
|
||||
|
||||
release-binary:
|
||||
name: Release Go Binary
|
||||
needs: build
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- goos: linux
|
||||
goarch: amd64
|
||||
cgo_enabled: "1"
|
||||
cc: x86_64-linux-gnu-gcc
|
||||
cflags: "-O2 -static -fno-stack-protector"
|
||||
ldflags: "-extldflags=-static -s -w"
|
||||
packages: "build-essential gcc"
|
||||
runner: ubuntu-latest
|
||||
|
||||
- goos: linux
|
||||
goarch: 386
|
||||
cgo_enabled: "1"
|
||||
cc: x86_64-linux-gnu-gcc
|
||||
cflags: "-m32 -O1 -march=i686 -mtune=generic -fno-stack-protector"
|
||||
ldflags: "-extldflags=-static -s -w"
|
||||
packages: "build-essential gcc-multilib"
|
||||
runner: ubuntu-latest
|
||||
|
||||
- goos: linux
|
||||
goarch: arm64
|
||||
cgo_enabled: "1"
|
||||
cc: aarch64-linux-gnu-gcc
|
||||
cflags: "-O1 -fno-stack-protector"
|
||||
ldflags: "-extldflags=-static -s -w"
|
||||
packages: "build-essential gcc-aarch64-linux-gnu"
|
||||
runner: ubuntu-latest
|
||||
|
||||
- goos: linux
|
||||
goarch: riscv64
|
||||
cgo_enabled: "1"
|
||||
cc: riscv64-linux-gnu-gcc
|
||||
cflags: "-O1 -fno-stack-protector"
|
||||
ldflags: "-extldflags=-static -s -w"
|
||||
packages: "build-essential gcc-riscv64-linux-gnu"
|
||||
runner: ubuntu-latest
|
||||
|
||||
- goos: linux
|
||||
goarch: mips64
|
||||
cgo_enabled: "1"
|
||||
cc: mips64-linux-gnuabi64-gcc
|
||||
cflags: "-O1 -fno-stack-protector"
|
||||
ldflags: "-extldflags=-static -s -w"
|
||||
packages: "build-essential gcc-mips64-linux-gnuabi64"
|
||||
runner: ubuntu-latest
|
||||
|
||||
- goos: linux
|
||||
goarch: mips64le
|
||||
cgo_enabled: "1"
|
||||
cc: mips64el-linux-gnuabi64-gcc
|
||||
cflags: "-O1 -fno-stack-protector"
|
||||
ldflags: "-extldflags=-static -s -w"
|
||||
packages: "build-essential gcc-mips64el-linux-gnuabi64"
|
||||
runner: ubuntu-latest
|
||||
|
||||
- goos: linux
|
||||
goarch: ppc64le
|
||||
cgo_enabled: "1"
|
||||
cc: powerpc64le-linux-gnu-gcc
|
||||
cflags: "-O1 -fno-stack-protector"
|
||||
ldflags: "-extldflags=-static -s -w"
|
||||
packages: "build-essential gcc-powerpc64le-linux-gnu"
|
||||
runner: ubuntu-latest
|
||||
|
||||
- goos: linux
|
||||
goarch: arm
|
||||
# goarm: 7
|
||||
cgo_enabled: "1"
|
||||
cc: arm-linux-gnueabihf-gcc
|
||||
cflags: "-O1 -fno-stack-protector"
|
||||
ldflags: "-extldflags=-static -s -w"
|
||||
packages: "build-essential gcc-arm-linux-gnueabihf"
|
||||
runner: ubuntu-latest
|
||||
|
||||
- goos: windows
|
||||
goarch: amd64
|
||||
cgo_enabled: "1"
|
||||
cc: x86_64-w64-mingw32-gcc
|
||||
cflags: "-O2 -static-libgcc -static-libstdc++"
|
||||
ldflags: "-extldflags=-static -s -w"
|
||||
packages: "build-essential gcc-mingw-w64-x86-64"
|
||||
runner: ubuntu-latest
|
||||
|
||||
- goos: windows
|
||||
goarch: 386
|
||||
cgo_enabled: "1"
|
||||
cc: i686-w64-mingw32-gcc
|
||||
cflags: "-O2 -static-libgcc -static-libstdc++"
|
||||
ldflags: "-extldflags=-static -s -w"
|
||||
packages: "build-essential gcc-mingw-w64-i686"
|
||||
runner: ubuntu-latest
|
||||
|
||||
- goos: windows
|
||||
goarch: arm64
|
||||
cgo_enabled: "0"
|
||||
ldflags: "-extldflags=-static -s -w"
|
||||
packages: "build-essential"
|
||||
runner: ubuntu-latest
|
||||
|
||||
- goos: darwin
|
||||
goarch: amd64
|
||||
cgo_enabled: "0"
|
||||
ldflags: "-s -w"
|
||||
runner: macos-latest
|
||||
|
||||
- goos: darwin
|
||||
goarch: arm64
|
||||
cgo_enabled: "0"
|
||||
ldflags: "-s -w"
|
||||
runner: macos-latest
|
||||
|
||||
- goos: linux
|
||||
goarch: s390x
|
||||
cgo_enabled: "0"
|
||||
ldflags: "-s -w"
|
||||
runner: ubuntu-latest
|
||||
|
||||
- goos: linux
|
||||
goarch: mips
|
||||
cgo_enabled: "0"
|
||||
ldflags: "-s -w"
|
||||
runner: ubuntu-latest
|
||||
|
||||
- goos: linux
|
||||
goarch: mipsle
|
||||
cgo_enabled: "0"
|
||||
ldflags: "-s -w"
|
||||
runner: ubuntu-latest
|
||||
|
||||
- goos: linux
|
||||
goarch: ppc64
|
||||
cgo_enabled: "0"
|
||||
ldflags: "-s -w"
|
||||
runner: ubuntu-latest
|
||||
|
||||
- goos: windows
|
||||
goarch: arm64
|
||||
cgo_enabled: "0"
|
||||
ldflags: "-s -w"
|
||||
runner: ubuntu-latest
|
||||
|
||||
- goos: freebsd
|
||||
goarch: amd64
|
||||
cgo_enabled: "0"
|
||||
ldflags: "-s -w"
|
||||
runner: ubuntu-latest
|
||||
|
||||
- goos: freebsd
|
||||
goarch: arm64
|
||||
cgo_enabled: "0"
|
||||
ldflags: "-s -w"
|
||||
runner: ubuntu-latest
|
||||
|
||||
runs-on: ${{ matrix.runner }}
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set up Go
|
||||
uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: 1.25.3
|
||||
|
||||
- name: Configure Git for Private Modules
|
||||
run: |
|
||||
git config --global url."https://${{ secrets.GHT }}@github.com/".insteadOf "https://github.com/"
|
||||
git config --global url."git@github.com:".insteadOf "https://github.com/"
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GHT }}
|
||||
|
||||
- name: Install cross-compilation tools
|
||||
if: matrix.runner != 'macos-latest'
|
||||
run: |
|
||||
sudo apt-get update -qq
|
||||
case "${{ matrix.goos }}-${{ matrix.goarch }}" in
|
||||
linux-386)
|
||||
sudo apt-get install -y build-essential gcc-multilib g++-multilib ;;
|
||||
linux-arm64)
|
||||
sudo apt-get install -y build-essential gcc-aarch64-linux-gnu ;;
|
||||
linux-riscv64)
|
||||
sudo apt-get install -y build-essential gcc-riscv64-linux-gnu ;;
|
||||
linux-mips64)
|
||||
sudo apt-get install -y build-essential gcc-mips64-linux-gnuabi64 ;;
|
||||
linux-mips64le)
|
||||
sudo apt-get install -y build-essential gcc-mips64el-linux-gnuabi64 ;;
|
||||
linux-ppc64le)
|
||||
sudo apt-get install -y build-essential gcc-powerpc64le-linux-gnu ;;
|
||||
linux-arm)
|
||||
sudo apt-get install -y build-essential gcc-arm-linux-gnueabihf ;;
|
||||
windows-amd64|windows-386)
|
||||
sudo apt-get install -y build-essential gcc-mingw-w64-x86-64 gcc-mingw-w64-i686 ;;
|
||||
*)
|
||||
sudo apt-get install -y build-essential ;;
|
||||
esac
|
||||
|
||||
- name: Get latest tag
|
||||
id: tag
|
||||
run: |
|
||||
TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "v0.1.0")
|
||||
echo "tag=$TAG" >> $GITHUB_OUTPUT
|
||||
echo "version=${TAG#v}" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Build Binary
|
||||
env:
|
||||
CGO_ENABLED: ${{ matrix.cgo_enabled }}
|
||||
GOOS: ${{ matrix.goos }}
|
||||
GOARCH: ${{ matrix.goarch }}
|
||||
CC: ${{ matrix.cc }}
|
||||
CGO_CFLAGS: ${{ matrix.cflags }}
|
||||
CGO_LDFLAGS: ${{ matrix.ldflags }}
|
||||
run: |
|
||||
go clean -cache -modcache -testcache
|
||||
|
||||
# 设置额外的环境变量
|
||||
if [[ -n "${{ matrix.goarm }}" ]]; then
|
||||
export GOARM=${{ matrix.goarm }}
|
||||
fi
|
||||
if [[ -n "${{ matrix.gomips }}" ]]; then
|
||||
export GOMIPS=${{ matrix.gomips }}
|
||||
fi
|
||||
|
||||
# 针对 Darwin 的特殊处理
|
||||
if [[ "${{ matrix.cgo_enabled }}" == "1" && "${{ matrix.goos }}" == "darwin" ]]; then
|
||||
if [[ "${{ matrix.goarch }}" == "amd64" ]]; then
|
||||
export CC="x86_64-apple-darwin21.4-clang"
|
||||
export CXX="x86_64-apple-darwin21.4-clang++"
|
||||
elif [[ "${{ matrix.goarch }}" == "arm64" ]]; then
|
||||
export CC="aarch64-apple-darwin21.4-clang"
|
||||
export CXX="aarch64-apple-darwin21.4-clang++"
|
||||
fi
|
||||
export OSXCROSS_ROOT="${OSXCROSS_ROOT}"
|
||||
elif [[ "${{ matrix.cgo_enabled }}" == "1" && "${{ matrix.runner }}" != "macos-latest" ]]; then
|
||||
# 对于 Windows 的特殊处理
|
||||
if [[ "${{ matrix.goos }}" == "windows" ]]; then
|
||||
export CGO_LDFLAGS="-static-libgcc -static-libstdc++"
|
||||
fi
|
||||
fi
|
||||
|
||||
# 测试编译器(仅在启用 CGO 时)
|
||||
if [[ "${{ matrix.cgo_enabled }}" == "1" && -n "$CC" ]]; then
|
||||
echo 'int main() { return 0; }' > test.c
|
||||
$CC $CGO_CFLAGS test.c -o test || exit 1
|
||||
rm -f test.c test
|
||||
fi
|
||||
|
||||
# 清理和准备
|
||||
rm -rf vendor/
|
||||
go mod download
|
||||
go mod tidy
|
||||
mkdir -p bin
|
||||
|
||||
# 设置二进制文件名
|
||||
BINARY_NAME="goecs"
|
||||
if [[ "${{ matrix.goos }}" == "windows" ]]; then
|
||||
BINARY_NAME="${BINARY_NAME}.exe"
|
||||
fi
|
||||
|
||||
# 构建 LDFLAGS
|
||||
LDFLAGS="-s -w -X main.version=${{ steps.tag.outputs.version }} -X main.arch=${{ matrix.goarch }}"
|
||||
if [[ "${{ matrix.cgo_enabled }}" == "1" ]]; then
|
||||
LDFLAGS="${LDFLAGS} -checklinkname=0 ${{ matrix.ldflags }}"
|
||||
else
|
||||
LDFLAGS="${LDFLAGS} -checklinkname=0 ${{ matrix.ldflags }}"
|
||||
fi
|
||||
|
||||
# 执行构建
|
||||
echo "Building for GOOS=$GOOS GOARCH=$GOARCH CGO_ENABLED=$CGO_ENABLED"
|
||||
go build -a -o bin/$BINARY_NAME -ldflags="$LDFLAGS" -trimpath ./
|
||||
|
||||
# 验证文件是否存在
|
||||
[[ -f "bin/$BINARY_NAME" ]] || exit 1
|
||||
|
||||
# 显示构建信息
|
||||
echo "Built binary: bin/$BINARY_NAME"
|
||||
ls -la bin/
|
||||
if command -v file >/dev/null 2>&1; then
|
||||
file bin/$BINARY_NAME
|
||||
fi
|
||||
|
||||
- name: Create ZIP archive
|
||||
run: |
|
||||
cd bin
|
||||
BINARY_NAME="goecs"
|
||||
if [[ "${{ matrix.goos }}" == "windows" ]]; then
|
||||
BINARY_NAME="${BINARY_NAME}.exe"
|
||||
fi
|
||||
ZIP_NAME="goecs_${{ matrix.goos }}_${{ matrix.goarch }}"
|
||||
if [[ -n "${{ matrix.goarm }}" ]]; then
|
||||
ZIP_NAME="${ZIP_NAME}v${{ matrix.goarm }}"
|
||||
fi
|
||||
if [[ -n "${{ matrix.gomips }}" ]]; then
|
||||
ZIP_NAME="${ZIP_NAME}_${{ matrix.gomips }}"
|
||||
fi
|
||||
ZIP_NAME="${ZIP_NAME}.zip"
|
||||
zip "$ZIP_NAME" "$BINARY_NAME"
|
||||
|
||||
- name: Upload to Release
|
||||
run: |
|
||||
TAG="${{ steps.tag.outputs.tag }}"
|
||||
RELEASE_ID=$(curl -s -H "Authorization: Bearer ${{ secrets.GHT }}" "https://api.github.com/repos/${{ github.repository }}/releases/tags/$TAG" | jq -r '.id')
|
||||
cd bin
|
||||
for file in *.zip; do
|
||||
if [[ -f "$file" ]]; then
|
||||
curl -s -H "Authorization: Bearer ${{ secrets.GHT }}" \
|
||||
-H "Content-Type: application/zip" \
|
||||
--data-binary @"$file" \
|
||||
"https://uploads.github.com/repos/${{ github.repository }}/releases/$RELEASE_ID/assets?name=$file"
|
||||
fi
|
||||
done
|
||||
|
||||
checksums:
|
||||
name: Generate Checksums
|
||||
runs-on: ubuntu-latest
|
||||
needs: release-binary
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Get latest tag
|
||||
id: tag
|
||||
run: |
|
||||
TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "v0.1.0")
|
||||
echo "tag=$TAG" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Download release assets
|
||||
run: |
|
||||
TAG="${{ steps.tag.outputs.tag }}"
|
||||
RELEASE_ID=$(curl -s -H "Authorization: Bearer ${{ secrets.GHT }}" "https://api.github.com/repos/${{ github.repository }}/releases/tags/$TAG" | jq -r '.id')
|
||||
mkdir -p assets
|
||||
ASSETS=$(curl -s -H "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/${{ github.repository }}/releases/$RELEASE_ID/assets")
|
||||
echo "$ASSETS" | jq -r '.[] | select(.name | endswith(".zip")) | .browser_download_url' | while read url; do
|
||||
filename=$(basename "$url")
|
||||
curl -L -H "Authorization: Bearer ${{ secrets.GHT }}" "$url" -o "assets/$filename"
|
||||
done
|
||||
|
||||
- name: Generate checksums
|
||||
run: |
|
||||
cd assets
|
||||
sha256sum *.zip > checksums.txt
|
||||
if [[ -f "../goecs.sh" ]]; then
|
||||
sha256sum ../goecs.sh >> checksums.txt
|
||||
fi
|
||||
|
||||
- name: Upload checksums
|
||||
run: |
|
||||
TAG="${{ steps.tag.outputs.tag }}"
|
||||
RELEASE_ID=$(curl -s -H "Authorization: Bearer ${{ secrets.GHT }}" "https://api.github.com/repos/${{ github.repository }}/releases/tags/$TAG" | jq -r '.id')
|
||||
curl -s -H "Authorization: Bearer ${{ secrets.GHT }}" \
|
||||
-H "Content-Type: text/plain" \
|
||||
--data-binary @assets/checksums.txt \
|
||||
"https://uploads.github.com/repos/${{ github.repository }}/releases/$RELEASE_ID/assets?name=checksums.txt"
|
||||
|
||||
update-script:
|
||||
name: Update Script Version
|
||||
runs-on: ubuntu-latest
|
||||
needs: checksums
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Get latest tag
|
||||
id: tag
|
||||
run: |
|
||||
TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "v0.1.0")
|
||||
echo "tag=$TAG" >> $GITHUB_OUTPUT
|
||||
echo "version=${TAG#v}" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Update goecs.sh version
|
||||
run: |
|
||||
VERSION="${{ steps.tag.outputs.version }}"
|
||||
BRANCH="master"
|
||||
git config --global user.name "github-actions[bot]"
|
||||
git config --global user.email "github-actions[bot]@users.noreply.github.com"
|
||||
git config --global --unset url."git@github.com:".insteadOf || true
|
||||
git fetch origin $BRANCH
|
||||
git checkout $BRANCH
|
||||
if [ -f "goecs.sh" ]; then
|
||||
sed -i "s/\(_yellow \"Unable to get version info, using default version \).*\(\".*\)/\1$VERSION\2/" "goecs.sh"
|
||||
sed -i "s/\(ECS_VERSION=\"\).*\(\"\)/\1$VERSION\2/" "goecs.sh"
|
||||
if ! git diff --quiet "goecs.sh"; then
|
||||
git add "goecs.sh"
|
||||
git commit -m "chore: update ECS_VERSION to $VERSION in goecs.sh"
|
||||
git push origin $BRANCH
|
||||
fi
|
||||
fi
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GHT }}
|
||||
@@ -1,527 +0,0 @@
|
||||
name: Build and Release
|
||||
on:
|
||||
workflow_dispatch:
|
||||
tags:
|
||||
- "v*.*.*"
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Release Check And Build
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Get latest tag
|
||||
id: tag
|
||||
run: |
|
||||
TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "v0.1.0")
|
||||
echo "tag=$TAG" >> $GITHUB_OUTPUT
|
||||
echo "version=${TAG#v}" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Generate changelog
|
||||
id: changelog
|
||||
run: |
|
||||
TAG="${{ steps.tag.outputs.tag }}"
|
||||
PREV_TAG=$(git describe --tags --abbrev=0 "$TAG^" 2>/dev/null || echo "")
|
||||
if [ -z "$PREV_TAG" ]; then
|
||||
CHANGELOG=$(git log --oneline --pretty=format:"* %H %s" "$TAG" | head -20)
|
||||
else
|
||||
CHANGELOG=$(git log --oneline --pretty=format:"* %H %s" "$PREV_TAG..$TAG")
|
||||
fi
|
||||
FULL_CHANGELOG="## Changelog"$'\n'"$CHANGELOG"
|
||||
echo "$FULL_CHANGELOG" > changelog.txt
|
||||
echo "changelog<<EOF" >> $GITHUB_OUTPUT
|
||||
echo "$FULL_CHANGELOG" >> $GITHUB_OUTPUT
|
||||
echo "EOF" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Create or update release
|
||||
run: |
|
||||
TAG="${{ steps.tag.outputs.tag }}"
|
||||
CHANGELOG_BODY=$(cat changelog.txt | jq -Rs .)
|
||||
RELEASE_EXISTS=$(curl -s -H "Authorization: Bearer ${{ secrets.GHT }}" "https://api.github.com/repos/${{ github.repository }}/releases/tags/$TAG" | jq -r '.id // empty')
|
||||
if [ -z "$RELEASE_EXISTS" ]; then
|
||||
curl -s -X POST -H "Authorization: Bearer ${{ secrets.GHT }}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{\"tag_name\":\"$TAG\",\"name\":\"$TAG\",\"body\":$CHANGELOG_BODY,\"draft\":false,\"prerelease\":false}" \
|
||||
"https://api.github.com/repos/${{ github.repository }}/releases"
|
||||
else
|
||||
curl -s -X PATCH -H "Authorization: Bearer ${{ secrets.GHT }}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{\"body\":$CHANGELOG_BODY}" \
|
||||
"https://api.github.com/repos/${{ github.repository }}/releases/$RELEASE_EXISTS"
|
||||
fi
|
||||
|
||||
- name: Delete existing release assets
|
||||
run: |
|
||||
TAG="${{ steps.tag.outputs.tag }}"
|
||||
RELEASE_ID=$(curl -s -H "Authorization: Bearer ${{ secrets.GHT }}" "https://api.github.com/repos/${{ github.repository }}/releases/tags/$TAG" | jq -r '.id')
|
||||
if [ "$RELEASE_ID" != "null" ]; then
|
||||
ASSETS=$(curl -s -H "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/${{ github.repository }}/releases/$RELEASE_ID/assets" | jq -r '.[] | .id')
|
||||
for asset in $ASSETS; do
|
||||
curl -s -X DELETE -H "Authorization: Bearer ${{ secrets.GHT }}" "https://api.github.com/repos/${{ github.repository }}/releases/assets/$asset"
|
||||
done
|
||||
sleep 30
|
||||
fi
|
||||
|
||||
build-musl-toolchain:
|
||||
name: Build musl Cross-Compiler Toolchain
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
target:
|
||||
- x86_64-linux-musl
|
||||
- i686-linux-musl
|
||||
- aarch64-linux-musl
|
||||
- riscv64-linux-musl
|
||||
- mips64-linux-musl
|
||||
- mips64el-linux-musl
|
||||
- powerpc64le-linux-musl
|
||||
- arm-linux-musleabihf
|
||||
steps:
|
||||
- name: Install build dependencies
|
||||
run: |
|
||||
sudo apt-get update -qq
|
||||
sudo apt-get install -y build-essential curl
|
||||
|
||||
- name: Cache musl toolchain
|
||||
id: cache-musl
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: /opt/musl-${{ matrix.target }}
|
||||
key: musl-toolchain-${{ matrix.target }}-v2
|
||||
|
||||
- name: Build musl cross-compiler
|
||||
if: steps.cache-musl.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
# Clone musl-cross-make
|
||||
git clone https://github.com/richfelker/musl-cross-make.git
|
||||
cd musl-cross-make
|
||||
|
||||
# Create config for target
|
||||
cat > config.mak << EOF
|
||||
TARGET = ${{ matrix.target }}
|
||||
OUTPUT = /opt/musl-${{ matrix.target }}
|
||||
COMMON_CONFIG += --disable-nls
|
||||
GCC_CONFIG += --enable-languages=c,c++
|
||||
GCC_CONFIG += --disable-libquadmath --disable-decimal-float
|
||||
GCC_CONFIG += --disable-libitm --disable-fixed-point
|
||||
EOF
|
||||
|
||||
# Build the toolchain
|
||||
make -j$(nproc)
|
||||
sudo make install
|
||||
|
||||
# Verify installation
|
||||
ls -la /opt/musl-${{ matrix.target }}/bin/
|
||||
/opt/musl-${{ matrix.target }}/bin/${{ matrix.target }}-gcc --version
|
||||
|
||||
- name: Create toolchain artifact
|
||||
run: |
|
||||
sudo tar -czf musl-${{ matrix.target }}-toolchain.tar.gz -C /opt musl-${{ matrix.target }}
|
||||
|
||||
- name: Upload toolchain artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: musl-${{ matrix.target }}-toolchain
|
||||
path: musl-${{ matrix.target }}-toolchain.tar.gz
|
||||
retention-days: 1
|
||||
|
||||
release-binary:
|
||||
name: Release Go Binary
|
||||
needs: [build, build-musl-toolchain]
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- goos: linux
|
||||
goarch: amd64
|
||||
cgo_enabled: "1"
|
||||
musl_target: x86_64-linux-musl
|
||||
cflags: "-O2 -static -fno-stack-protector"
|
||||
ldflags: "-extldflags=-static"
|
||||
runner: ubuntu-latest
|
||||
|
||||
- goos: linux
|
||||
goarch: 386
|
||||
cgo_enabled: "1"
|
||||
musl_target: i686-linux-musl
|
||||
cflags: "-O1 -march=i686 -mtune=generic -fno-stack-protector"
|
||||
ldflags: "-extldflags=-static"
|
||||
runner: ubuntu-latest
|
||||
|
||||
- goos: linux
|
||||
goarch: arm64
|
||||
cgo_enabled: "1"
|
||||
musl_target: aarch64-linux-musl
|
||||
cflags: "-O1 -fno-stack-protector"
|
||||
ldflags: "-extldflags=-static"
|
||||
runner: ubuntu-latest
|
||||
|
||||
- goos: linux
|
||||
goarch: riscv64
|
||||
cgo_enabled: "1"
|
||||
musl_target: riscv64-linux-musl
|
||||
cflags: "-O1 -fno-stack-protector"
|
||||
ldflags: "-extldflags=-static"
|
||||
runner: ubuntu-latest
|
||||
|
||||
- goos: linux
|
||||
goarch: mips64
|
||||
cgo_enabled: "1"
|
||||
musl_target: mips64-linux-musl
|
||||
cflags: "-O1 -fno-stack-protector"
|
||||
ldflags: "-extldflags=-static"
|
||||
runner: ubuntu-latest
|
||||
|
||||
- goos: linux
|
||||
goarch: mips64le
|
||||
cgo_enabled: "1"
|
||||
musl_target: mips64el-linux-musl
|
||||
cflags: "-O1 -fno-stack-protector"
|
||||
ldflags: "-extldflags=-static"
|
||||
runner: ubuntu-latest
|
||||
|
||||
- goos: linux
|
||||
goarch: ppc64le
|
||||
cgo_enabled: "1"
|
||||
musl_target: powerpc64le-linux-musl
|
||||
cflags: "-O1 -fno-stack-protector"
|
||||
ldflags: "-extldflags=-static"
|
||||
runner: ubuntu-latest
|
||||
|
||||
- goos: linux
|
||||
goarch: arm
|
||||
cgo_enabled: "1"
|
||||
musl_target: arm-linux-musleabihf
|
||||
cflags: "-O1 -fno-stack-protector"
|
||||
ldflags: "-extldflags=-latomic -static"
|
||||
runner: ubuntu-latest
|
||||
|
||||
- goos: windows
|
||||
goarch: amd64
|
||||
cgo_enabled: "1"
|
||||
cc: x86_64-w64-mingw32-gcc
|
||||
cflags: "-O2 -static-libgcc -static-libstdc++"
|
||||
ldflags: "-extldflags=-static"
|
||||
packages: "build-essential gcc-mingw-w64-x86-64"
|
||||
runner: ubuntu-latest
|
||||
|
||||
- goos: windows
|
||||
goarch: 386
|
||||
cgo_enabled: "1"
|
||||
cc: i686-w64-mingw32-gcc
|
||||
cflags: "-O2 -static-libgcc -static-libstdc++"
|
||||
ldflags: "-extldflags=-static"
|
||||
packages: "build-essential gcc-mingw-w64-i686"
|
||||
runner: ubuntu-latest
|
||||
|
||||
- goos: windows
|
||||
goarch: arm64
|
||||
cgo_enabled: "0"
|
||||
ldflags: "-s -w"
|
||||
packages: "build-essential"
|
||||
runner: ubuntu-latest
|
||||
|
||||
- goos: darwin
|
||||
goarch: amd64
|
||||
cgo_enabled: "0"
|
||||
ldflags: "-s -w"
|
||||
runner: macos-latest
|
||||
|
||||
- goos: darwin
|
||||
goarch: arm64
|
||||
cgo_enabled: "0"
|
||||
ldflags: "-s -w"
|
||||
runner: macos-latest
|
||||
|
||||
- goos: linux
|
||||
goarch: s390x
|
||||
cgo_enabled: "0"
|
||||
ldflags: "-s -w"
|
||||
runner: ubuntu-latest
|
||||
|
||||
- goos: linux
|
||||
goarch: mips
|
||||
cgo_enabled: "0"
|
||||
ldflags: "-s -w"
|
||||
runner: ubuntu-latest
|
||||
|
||||
- goos: linux
|
||||
goarch: mipsle
|
||||
cgo_enabled: "0"
|
||||
ldflags: "-s -w"
|
||||
runner: ubuntu-latest
|
||||
|
||||
- goos: linux
|
||||
goarch: ppc64
|
||||
cgo_enabled: "0"
|
||||
ldflags: "-s -w"
|
||||
runner: ubuntu-latest
|
||||
|
||||
- goos: freebsd
|
||||
goarch: amd64
|
||||
cgo_enabled: "0"
|
||||
ldflags: "-s -w"
|
||||
runner: ubuntu-latest
|
||||
|
||||
- goos: freebsd
|
||||
goarch: arm64
|
||||
cgo_enabled: "0"
|
||||
ldflags: "-s -w"
|
||||
runner: ubuntu-latest
|
||||
|
||||
runs-on: ${{ matrix.runner }}
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set up Go
|
||||
uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: 1.25.3
|
||||
|
||||
- name: Configure Git for Private Modules
|
||||
run: |
|
||||
git config --global url."https://${{ secrets.GHT }}@github.com/".insteadOf "https://github.com/"
|
||||
git config --global url."git@github.com:".insteadOf "https://github.com/"
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GHT }}
|
||||
|
||||
- name: Download musl toolchain
|
||||
if: matrix.musl_target != ''
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: musl-${{ matrix.musl_target }}-toolchain
|
||||
|
||||
- name: Setup musl toolchain
|
||||
if: matrix.musl_target != ''
|
||||
run: |
|
||||
sudo tar -xzf musl-${{ matrix.musl_target }}-toolchain.tar.gz -C /opt/
|
||||
echo "/opt/musl-${{ matrix.musl_target }}/bin" >> $GITHUB_PATH
|
||||
|
||||
# Verify toolchain is working
|
||||
/opt/musl-${{ matrix.musl_target }}/bin/${{ matrix.musl_target }}-gcc --version
|
||||
|
||||
# Test compiler
|
||||
echo 'int main() { return 0; }' > test.c
|
||||
/opt/musl-${{ matrix.musl_target }}/bin/${{ matrix.musl_target }}-gcc ${{ matrix.cflags }} test.c -o test
|
||||
rm -f test.c test
|
||||
|
||||
- name: Install cross-compilation tools (non-musl)
|
||||
if: matrix.runner != 'macos-latest' && matrix.musl_target == ''
|
||||
run: |
|
||||
sudo systemctl restart systemd-resolved || true
|
||||
sudo apt-get update -qq || (sleep 10 && sudo apt-get update -qq)
|
||||
|
||||
case "${{ matrix.goos }}-${{ matrix.goarch }}" in
|
||||
windows-amd64|windows-386)
|
||||
for i in 1 2 3; do
|
||||
sudo apt-get install -y build-essential gcc-mingw-w64-x86-64 gcc-mingw-w64-i686 && break || sleep 10
|
||||
done ;;
|
||||
*)
|
||||
sudo systemctl restart systemd-resolved || true
|
||||
for i in 1 2 3; do
|
||||
sudo apt-get install -y build-essential && break || sleep 10
|
||||
done ;;
|
||||
esac
|
||||
|
||||
- name: Get latest tag
|
||||
id: tag
|
||||
run: |
|
||||
TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "v0.1.0")
|
||||
echo "tag=$TAG" >> $GITHUB_OUTPUT
|
||||
echo "version=${TAG#v}" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Build Binary
|
||||
env:
|
||||
CGO_ENABLED: ${{ matrix.cgo_enabled }}
|
||||
GOOS: ${{ matrix.goos }}
|
||||
GOARCH: ${{ matrix.goarch }}
|
||||
CGO_CFLAGS: ${{ matrix.cflags }}
|
||||
CGO_LDFLAGS: ${{ matrix.ldflags }}
|
||||
run: |
|
||||
go clean -cache -modcache -testcache
|
||||
|
||||
# Set CC based on target
|
||||
if [[ "${{ matrix.musl_target }}" != "" ]]; then
|
||||
export CC="/opt/musl-${{ matrix.musl_target }}/bin/${{ matrix.musl_target }}-gcc"
|
||||
export CXX="/opt/musl-${{ matrix.musl_target }}/bin/${{ matrix.musl_target }}-g++"
|
||||
elif [[ "${{ matrix.cc }}" != "" ]]; then
|
||||
export CC="${{ matrix.cc }}"
|
||||
fi
|
||||
|
||||
# 设置额外的环境变量
|
||||
if [[ -n "${{ matrix.goarm }}" ]]; then
|
||||
export GOARM=${{ matrix.goarm }}
|
||||
fi
|
||||
if [[ -n "${{ matrix.gomips }}" ]]; then
|
||||
export GOMIPS=${{ matrix.gomips }}
|
||||
fi
|
||||
|
||||
# 针对 Darwin 的特殊处理
|
||||
if [[ "${{ matrix.cgo_enabled }}" == "1" && "${{ matrix.goos }}" == "darwin" ]]; then
|
||||
if [[ "${{ matrix.goarch }}" == "amd64" ]]; then
|
||||
export CC="x86_64-apple-darwin21.4-clang"
|
||||
export CXX="x86_64-apple-darwin21.4-clang++"
|
||||
elif [[ "${{ matrix.goarch }}" == "arm64" ]]; then
|
||||
export CC="aarch64-apple-darwin21.4-clang"
|
||||
export CXX="aarch64-apple-darwin21.4-clang++"
|
||||
fi
|
||||
export OSXCROSS_ROOT="${OSXCROSS_ROOT}"
|
||||
fi
|
||||
|
||||
# 清理和准备
|
||||
rm -rf vendor/
|
||||
go mod download
|
||||
go mod tidy
|
||||
mkdir -p bin
|
||||
|
||||
# 设置二进制文件名
|
||||
BINARY_NAME="goecs"
|
||||
if [[ "${{ matrix.goos }}" == "windows" ]]; then
|
||||
BINARY_NAME="${BINARY_NAME}.exe"
|
||||
fi
|
||||
|
||||
# 构建 LDFLAGS
|
||||
LDFLAGS="-s -w -X main.version=${{ steps.tag.outputs.version }} -X main.arch=${{ matrix.goarch }}"
|
||||
if [[ "${{ matrix.cgo_enabled }}" == "1" ]]; then
|
||||
LDFLAGS="${LDFLAGS} -checklinkname=0 ${{ matrix.ldflags }}"
|
||||
else
|
||||
LDFLAGS="${LDFLAGS} -checklinkname=0 ${{ matrix.ldflags }}"
|
||||
fi
|
||||
|
||||
# 执行构建
|
||||
echo "Building for GOOS=$GOOS GOARCH=$GOARCH CGO_ENABLED=$CGO_ENABLED"
|
||||
if [[ -n "$CC" ]]; then
|
||||
echo "Using CC=$CC"
|
||||
fi
|
||||
|
||||
go build -a -o bin/$BINARY_NAME -ldflags="$LDFLAGS" -trimpath ./
|
||||
|
||||
# 验证文件是否存在
|
||||
[[ -f "bin/$BINARY_NAME" ]] || exit 1
|
||||
|
||||
# 显示构建信息
|
||||
echo "Built binary: bin/$BINARY_NAME"
|
||||
ls -la bin/
|
||||
if command -v file >/dev/null 2>&1; then
|
||||
file bin/$BINARY_NAME
|
||||
fi
|
||||
|
||||
- name: Create ZIP archive
|
||||
run: |
|
||||
cd bin
|
||||
BINARY_NAME="goecs"
|
||||
if [[ "${{ matrix.goos }}" == "windows" ]]; then
|
||||
BINARY_NAME="${BINARY_NAME}.exe"
|
||||
fi
|
||||
ZIP_NAME="goecs_${{ matrix.goos }}_${{ matrix.goarch }}"
|
||||
if [[ -n "${{ matrix.goarm }}" ]]; then
|
||||
ZIP_NAME="${ZIP_NAME}v${{ matrix.goarm }}"
|
||||
fi
|
||||
if [[ -n "${{ matrix.gomips }}" ]]; then
|
||||
ZIP_NAME="${ZIP_NAME}_${{ matrix.gomips }}"
|
||||
fi
|
||||
ZIP_NAME="${ZIP_NAME}.zip"
|
||||
zip "$ZIP_NAME" "$BINARY_NAME"
|
||||
|
||||
- name: Upload to Release
|
||||
run: |
|
||||
TAG="${{ steps.tag.outputs.tag }}"
|
||||
RELEASE_ID=$(curl -s -H "Authorization: Bearer ${{ secrets.GHT }}" "https://api.github.com/repos/${{ github.repository }}/releases/tags/$TAG" | jq -r '.id')
|
||||
cd bin
|
||||
for file in *.zip; do
|
||||
if [[ -f "$file" ]]; then
|
||||
curl -s -H "Authorization: Bearer ${{ secrets.GHT }}" \
|
||||
-H "Content-Type: application/zip" \
|
||||
--data-binary @"$file" \
|
||||
"https://uploads.github.com/repos/${{ github.repository }}/releases/$RELEASE_ID/assets?name=$file"
|
||||
fi
|
||||
done
|
||||
|
||||
checksums:
|
||||
name: Generate Checksums
|
||||
runs-on: ubuntu-latest
|
||||
needs: release-binary
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Get latest tag
|
||||
id: tag
|
||||
run: |
|
||||
TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "v0.1.0")
|
||||
echo "tag=$TAG" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Download release assets
|
||||
run: |
|
||||
TAG="${{ steps.tag.outputs.tag }}"
|
||||
RELEASE_ID=$(curl -s -H "Authorization: Bearer ${{ secrets.GHT }}" "https://api.github.com/repos/${{ github.repository }}/releases/tags/$TAG" | jq -r '.id')
|
||||
mkdir -p assets
|
||||
ASSETS=$(curl -s -H "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/${{ github.repository }}/releases/$RELEASE_ID/assets")
|
||||
echo "$ASSETS" | jq -r '.[] | select(.name | endswith(".zip")) | .browser_download_url' | while read url; do
|
||||
filename=$(basename "$url")
|
||||
curl -L -H "Authorization: Bearer ${{ secrets.GHT }}" "$url" -o "assets/$filename"
|
||||
done
|
||||
|
||||
- name: Generate checksums
|
||||
run: |
|
||||
cd assets
|
||||
sha256sum *.zip > checksums.txt
|
||||
if [[ -f "../goecs.sh" ]]; then
|
||||
sha256sum ../goecs.sh >> checksums.txt
|
||||
fi
|
||||
|
||||
- name: Upload checksums
|
||||
run: |
|
||||
TAG="${{ steps.tag.outputs.tag }}"
|
||||
RELEASE_ID=$(curl -s -H "Authorization: Bearer ${{ secrets.GHT }}" "https://api.github.com/repos/${{ github.repository }}/releases/tags/$TAG" | jq -r '.id')
|
||||
curl -s -H "Authorization: Bearer ${{ secrets.GHT }}" \
|
||||
-H "Content-Type: text/plain" \
|
||||
--data-binary @assets/checksums.txt \
|
||||
"https://uploads.github.com/repos/${{ github.repository }}/releases/$RELEASE_ID/assets?name=checksums.txt"
|
||||
|
||||
update-script:
|
||||
name: Update Script Version
|
||||
runs-on: ubuntu-latest
|
||||
needs: checksums
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Get latest tag
|
||||
id: tag
|
||||
run: |
|
||||
TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "v0.1.0")
|
||||
echo "tag=$TAG" >> $GITHUB_OUTPUT
|
||||
echo "version=${TAG#v}" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Update goecs.sh version
|
||||
run: |
|
||||
VERSION="${{ steps.tag.outputs.version }}"
|
||||
BRANCH="master"
|
||||
git config --global user.name "github-actions[bot]"
|
||||
git config --global user.email "github-actions[bot]@users.noreply.github.com"
|
||||
git config --global --unset url."git@github.com:".insteadOf || true
|
||||
git fetch origin $BRANCH
|
||||
git checkout $BRANCH
|
||||
if [ -f "goecs.sh" ]; then
|
||||
sed -i "s/\(_yellow \"Unable to get version info, using default version \).*\(\".*\)/\1$VERSION\2/" "goecs.sh"
|
||||
sed -i "s/\(ECS_VERSION=\"\).*\(\"\)/\1$VERSION\2/" "goecs.sh"
|
||||
if ! git diff --quiet "goecs.sh"; then
|
||||
git add "goecs.sh"
|
||||
git commit -m "chore: update ECS_VERSION to $VERSION in goecs.sh"
|
||||
git push origin $BRANCH
|
||||
fi
|
||||
fi
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GHT }}
|
||||
@@ -1,11 +0,0 @@
|
||||
package commediatest
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/oneclickvirt/CommonMediaTests/commediatests"
|
||||
)
|
||||
|
||||
func ComMediaTest(language string) {
|
||||
res := commediatests.MediaTests(language)
|
||||
fmt.Print(res)
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
package commediatest
|
||||
|
||||
import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
// 本包仅测试无实际使用
|
||||
func TestMedia(t *testing.T) {
|
||||
ComMediaTest("zh")
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
package network1
|
||||
|
||||
import "github.com/oneclickvirt/security/network"
|
||||
|
||||
// 本包在main中不使用
|
||||
func NetworkCheck(checkType string, enableSecurityCheck bool, language string) (string, string, error) {
|
||||
return network.NetworkCheck(checkType, enableSecurityCheck, language)
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
package network1
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestIpv4SecurityCheck(t *testing.T) {
|
||||
// 单项测试
|
||||
//result1, _ := Ipv4SecurityCheck("8.8.8.8", nil, "zh")
|
||||
//fmt.Println(result1)
|
||||
//result2, _ := Ipv6SecurityCheck("2001:4860:4860::8844", nil, "zh")
|
||||
//fmt.Println(result2)
|
||||
|
||||
// 全项测试
|
||||
ipInfo, securityInfo, _ := NetworkCheck("both", true, "zh")
|
||||
fmt.Println("--------------------------------------------------")
|
||||
fmt.Print(ipInfo)
|
||||
fmt.Println("--------------------------------------------------")
|
||||
fmt.Print(securityInfo)
|
||||
fmt.Println("--------------------------------------------------")
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
package port
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/oneclickvirt/portchecker/email"
|
||||
)
|
||||
|
||||
// 常用端口阻断检测 TCP/UDP/ICMP 协议
|
||||
// 本包不在main中使用
|
||||
func EmailCheck() {
|
||||
res := email.EmailCheck()
|
||||
fmt.Println(res)
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
package port
|
||||
|
||||
import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func Test(t *testing.T) {
|
||||
EmailCheck()
|
||||
}
|
||||
6
.github/workflows/build_public.yml
vendored
6
.github/workflows/build_public.yml
vendored
@@ -54,8 +54,10 @@ jobs:
|
||||
|
||||
- name: Create public branch
|
||||
run: |
|
||||
git checkout -b public || git checkout public
|
||||
git merge ${{ github.ref_name }} --no-edit || true
|
||||
# 删除本地 public 分支(如果存在)
|
||||
git branch -D public 2>/dev/null || true
|
||||
# 基于当前分支创建新的 public 分支(完全覆盖)
|
||||
git checkout -b public
|
||||
|
||||
- name: Remove security package references
|
||||
run: |
|
||||
|
||||
Reference in New Issue
Block a user