Files
wangdefa f9e2d3310f
CI / validate (push) Successful in 5s
CI / build (amd64) (push) Successful in 22s
CI / build (arm64) (push) Successful in 3m48s
Release / build (amd64) (push) Successful in 28s
Release / build (arm64) (push) Successful in 3m30s
Release / release (push) Successful in 35s
新增 CI 和 Release 流水线,优化构建与发布流程,添加 VERSION 文件以统一版本管理
2026-08-05 13:10:52 +08:00

82 lines
2.6 KiB
YAML

name: CI
# 分支推送只做校验和原生构建;tag 发布由 release.yml 独立处理。
on:
push:
branches: ["**"]
env:
DOCKER_BUILDKIT: "1"
BUILDX_NO_DEFAULT_ATTESTATIONS: "1"
BUILDKIT_PROGRESS: plain
jobs:
validate:
runs-on: ubuntu-latest-amd64
steps:
- uses: actions/checkout@v4
- name: 校验版本和脚本语法
run: |
VERSION=$(tr -d '\r\n' < VERSION)
[[ "${VERSION}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]
bash -n script/*.sh debian/build-deb.sh
sh -n debian/postinst debian/prerm debian/postrm
sh -n debian/xxxig-enable-1gb-pages
build:
needs: validate
runs-on: ${{ matrix.arch == 'amd64' && 'ubuntu-latest-amd64' || 'ubuntu-latest-arm64' }}
strategy:
fail-fast: false
matrix:
arch: [amd64, arm64]
steps:
- uses: actions/checkout@v4
- name: 准备原生 Buildx
run: |
BUILDER=$(docker buildx create --use \
--driver docker-container \
--driver-opt network=host)
echo "BUILDER=${BUILDER}" >> "$GITHUB_ENV"
docker buildx inspect --bootstrap
- name: 构建 ${{ matrix.arch }} 二进制
run: |
VERSION=$(tr -d '\r\n' < VERSION)
docker buildx build --pull \
--platform "linux/${{ matrix.arch }}" \
--build-arg "XXXIG_VERSION=v${VERSION}" \
--output type=local,dest=./output \
-f docker/Dockerfile .
- name: 冒烟测试
run: |
DIR="./output/linux_${{ matrix.arch }}"
test -x "${DIR}/xxxigDaemon"
test -x "${DIR}/xxxig"
test -x "${DIR}/xxxigServer"
test -f "${DIR}/config.json"
test -f "${DIR}/config_cc.json"
"${DIR}/xxxigDaemon" --version
- name: 验证 Debian 打包
run: |
VERSION=$(tr -d '\r\n' < VERSION)
TARGZ="xxxig-${{ matrix.arch }}-linux-static-${VERSION}.tar.gz"
tar -czf "${TARGZ}" -C "./output/linux_${{ matrix.arch }}" .
if ! command -v dpkg-deb >/dev/null; then
sudo apt-get update
sudo apt-get install -y dpkg-dev
fi
./debian/build-deb.sh "${{ matrix.arch }}" "${VERSION}" "${TARGZ}"
DEB="xxxig_${VERSION}_${{ matrix.arch }}.deb"
CONTENTS=$(dpkg-deb --contents "${DEB}")
grep -Fq 'usr/libexec/xxxig-enable-1gb-pages' <<<"${CONTENTS}"
grep -Fq 'lib/systemd/system/xxxig-hugepages.service' <<<"${CONTENTS}"
- name: 清理 Buildx
if: always()
run: docker buildx rm "${BUILDER}" || true