mirror of
https://github.com/oneclickvirt/ecs.git
synced 2025-12-18 23:38:13 +08:00
122 lines
4.7 KiB
YAML
122 lines
4.7 KiB
YAML
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.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: 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
|
|
dpkg --add-architecture i386
|
|
apt-get update
|
|
apt-get install -y \
|
|
linux-libc-dev \
|
|
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 }} |