name: Goreleaser on: workflow_dispatch: push: tags: - "v*.*.*" jobs: goreleaser: runs-on: ubuntu-latest container: # 1.20 是 Windows 7/8 Server 2008/2012 最后一个支持版本 image: goreleaser/goreleaser-cross:v1.24.5 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: 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: Install missing cross-compilation tools run: | echo "Installing missing cross-compilation tools..." apt-get update apt-get install -y \ gcc-multilib \ g++-multilib \ 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-i386 \ || echo "Some packages may already be installed" - 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 }}