Files
Fig-TreeWalker/.gitea/workflows/build.yml
2026-01-03 15:17:22 +08:00

123 lines
4.1 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

name: Release Build
on:
push:
tags: ['*']
workflow_dispatch:
inputs:
version:
description: '版本号 (如v1.0.0)'
required: true
default: 'dev-build'
jobs:
build:
runs-on: ubuntu # 保持与你Runner匹配的标签
container:
image: alpine:latest # 轻量且快速启动的基础镜像
steps:
- name: 检出代码
run: |
apk add --no-cache git
git clone https://git.fig-lang.cn/${{ github.repository }} .
git checkout ${{ github.sha }}
- name: 安装所有依赖
run: |
# 更新源并一次性安装所有必要包
apk update && apk upgrade
apk add --no-cache \
curl \
wget \
gcc \
g++ \
make \
cmake \
automake \
autoconf \
libtool \
linux-headers \
musl-dev \
git \
zip \
tar
- name: 安装 xmake
run: |
wget -q https://xmake.io/shget.text -O install.sh
sh install.sh
echo "/root/.local/bin" >> $GITHUB_PATH
xmake --version
- name: 确定版本号
run: |
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
echo "VERSION=${{ inputs.version }}" >> $GITHUB_ENV
else
echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV
fi
echo "构建版本: ${{ env.VERSION }}"
- name: 构建项目 (Linux x86_64)
run: |
xmake f -p linux -a x86_64 -m release
xmake build -v -j$(nproc)
- name: 打包发布文件
run: |
# 创建带版本号的目录
PACKAGE_DIR="Fig-${{ env.VERSION }}-linux-x86_64"
mkdir -p "${PACKAGE_DIR}"
# 复制可执行文件和库
cp build/linux/x86_64/release/Fig "${PACKAGE_DIR}/"
cp -r src/Module/Library "${PACKAGE_DIR}/" 2>/dev/null || echo "Library目录不存在跳过"
# 创建压缩包
tar -czf "${PACKAGE_DIR}.tar.gz" "${PACKAGE_DIR}"
# 生成校验和
sha256sum "${PACKAGE_DIR}.tar.gz" > "${PACKAGE_DIR}.sha256"
# 列出生成的文件
ls -lh Fig-*.tar.gz Fig-*.sha256
- name: 发布到Gitea
env:
GITEA_TOKEN: ${{ secrets.CI_TOKEN }}
run: |
VERSION="${{ env.VERSION }}"
REPO_URL="https://git.fig-lang.cn/api/v1/repos/${{ github.repository }}"
echo "正在上传版本 $VERSION 的发布文件..."
# 尝试创建发布 (如果已存在则忽略错误)
curl -X POST \
-H "Authorization: token ${GITEA_TOKEN}" \
-H "Content-Type: application/json" \
-d "{\"tag_name\":\"${VERSION}\",\"name\":\"Fig ${VERSION}\",\"draft\":false,\"prerelease\":false}" \
"${REPO_URL}/releases" 2>/dev/null || echo "发布可能已存在,继续上传文件..."
# 上传主程序包
echo "上传 Fig-${VERSION}-linux-x86_64.tar.gz..."
curl -X POST \
-H "Authorization: token ${GITEA_TOKEN}" \
-H "Content-Type: application/octet-stream" \
--data-binary @Fig-${VERSION}-linux-x86_64.tar.gz \
"${REPO_URL}/releases/${VERSION}/assets?name=Fig-${VERSION}-linux-x86_64.tar.gz"
# 上传校验文件
echo "上传 Fig-${VERSION}-linux-x86_64.sha256..."
curl -X POST \
-H "Authorization: token ${GITEA_TOKEN}" \
-H "Content-Type: text/plain" \
--data-binary @Fig-${VERSION}-linux-x86_64.sha256 \
"${REPO_URL}/releases/${VERSION}/assets?name=Fig-${VERSION}-linux-x86_64.sha256"
echo "发布完成!"
- name: 输出完成信息
run: |
echo "✅ 构建成功完成!"
echo "版本号: ${{ env.VERSION }}"
echo "文件: Fig-${{ env.VERSION }}-linux-x86_64.tar.gz"
echo "校验: Fig-${{ env.VERSION }}-linux-x86_64.sha256"