From 280d292c4cea62f5d5a655da1761af6916a98e35 Mon Sep 17 00:00:00 2001 From: spiritlhl <103393591+spiritLHLS@users.noreply.github.com> Date: Mon, 3 Nov 2025 02:33:29 +0000 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A=E4=BF=AE=E5=A4=8D=E5=85=AC?= =?UTF-8?q?=E5=85=B1=E5=88=86=E6=94=AF=E6=9E=84=E5=BB=BA=E8=A6=86=E5=86=99?= =?UTF-8?q?=E9=97=AE=E9=A2=98=EF=BC=8C=E5=88=A0=E9=99=A4=E4=B8=8D=E5=86=8D?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E7=9A=84=E5=A4=87=E4=BB=BD=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .back/.goreleaser.old | 84 ----- .back/.goreleaser.yaml | 522 ---------------------------- .back/OldFunction.go | 14 - .back/basic/basic_test.go | 9 - .back/basic/basiccheck.go | 16 - .back/build.yaml | 132 -------- .back/build_binary_cgo.old | 467 ------------------------- .back/build_binary_musl.old | 527 ----------------------------- .back/commediatest/media.go | 11 - .back/commediatest/media_test.go | 10 - .back/network/network.go | 8 - .back/network/network_test.go | 22 -- .back/port/port.go | 13 - .back/port/port_test.go | 9 - .github/workflows/build_public.yml | 6 +- 15 files changed, 4 insertions(+), 1846 deletions(-) delete mode 100644 .back/.goreleaser.old delete mode 100644 .back/.goreleaser.yaml delete mode 100644 .back/OldFunction.go delete mode 100644 .back/basic/basic_test.go delete mode 100644 .back/basic/basiccheck.go delete mode 100644 .back/build.yaml delete mode 100644 .back/build_binary_cgo.old delete mode 100644 .back/build_binary_musl.old delete mode 100644 .back/commediatest/media.go delete mode 100644 .back/commediatest/media_test.go delete mode 100644 .back/network/network.go delete mode 100644 .back/network/network_test.go delete mode 100644 .back/port/port.go delete mode 100644 .back/port/port_test.go diff --git a/.back/.goreleaser.old b/.back/.goreleaser.old deleted file mode 100644 index 77a11c6..0000000 --- a/.back/.goreleaser.old +++ /dev/null @@ -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 diff --git a/.back/.goreleaser.yaml b/.back/.goreleaser.yaml deleted file mode 100644 index 768b9d6..0000000 --- a/.back/.goreleaser.yaml +++ /dev/null @@ -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 \ No newline at end of file diff --git a/.back/OldFunction.go b/.back/OldFunction.go deleted file mode 100644 index 9de73f8..0000000 --- a/.back/OldFunction.go +++ /dev/null @@ -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() -} \ No newline at end of file diff --git a/.back/basic/basic_test.go b/.back/basic/basic_test.go deleted file mode 100644 index 4b5d986..0000000 --- a/.back/basic/basic_test.go +++ /dev/null @@ -1,9 +0,0 @@ -package basic1 - -import ( - "testing" -) - -func Test_basic(t *testing.T) { - Basic("zh") -} diff --git a/.back/basic/basiccheck.go b/.back/basic/basiccheck.go deleted file mode 100644 index 110ec0c..0000000 --- a/.back/basic/basiccheck.go +++ /dev/null @@ -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) -} diff --git a/.back/build.yaml b/.back/build.yaml deleted file mode 100644 index ad1ad4f..0000000 --- a/.back/build.yaml +++ /dev/null @@ -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 }} \ No newline at end of file diff --git a/.back/build_binary_cgo.old b/.back/build_binary_cgo.old deleted file mode 100644 index 3399993..0000000 --- a/.back/build_binary_cgo.old +++ /dev/null @@ -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<> $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 }} diff --git a/.back/build_binary_musl.old b/.back/build_binary_musl.old deleted file mode 100644 index b54e87d..0000000 --- a/.back/build_binary_musl.old +++ /dev/null @@ -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<> $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 }} \ No newline at end of file diff --git a/.back/commediatest/media.go b/.back/commediatest/media.go deleted file mode 100644 index 4423cd0..0000000 --- a/.back/commediatest/media.go +++ /dev/null @@ -1,11 +0,0 @@ -package commediatest - -import ( - "fmt" - "github.com/oneclickvirt/CommonMediaTests/commediatests" -) - -func ComMediaTest(language string) { - res := commediatests.MediaTests(language) - fmt.Print(res) -} diff --git a/.back/commediatest/media_test.go b/.back/commediatest/media_test.go deleted file mode 100644 index 2bb47af..0000000 --- a/.back/commediatest/media_test.go +++ /dev/null @@ -1,10 +0,0 @@ -package commediatest - -import ( - "testing" -) - -// 本包仅测试无实际使用 -func TestMedia(t *testing.T) { - ComMediaTest("zh") -} diff --git a/.back/network/network.go b/.back/network/network.go deleted file mode 100644 index 8c29262..0000000 --- a/.back/network/network.go +++ /dev/null @@ -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) -} diff --git a/.back/network/network_test.go b/.back/network/network_test.go deleted file mode 100644 index ec1d7a0..0000000 --- a/.back/network/network_test.go +++ /dev/null @@ -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("--------------------------------------------------") -} diff --git a/.back/port/port.go b/.back/port/port.go deleted file mode 100644 index 5e52c61..0000000 --- a/.back/port/port.go +++ /dev/null @@ -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) -} diff --git a/.back/port/port_test.go b/.back/port/port_test.go deleted file mode 100644 index 31eb259..0000000 --- a/.back/port/port_test.go +++ /dev/null @@ -1,9 +0,0 @@ -package port - -import ( - "testing" -) - -func Test(t *testing.T) { - EmailCheck() -} diff --git a/.github/workflows/build_public.yml b/.github/workflows/build_public.yml index cbc892b..9fbf115 100644 --- a/.github/workflows/build_public.yml +++ b/.github/workflows/build_public.yml @@ -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: |