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

92 lines
2.9 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: '版本号'
required: true
jobs:
build:
runs-on: ubuntu
container:
image: debian:bookworm-slim # 自带bash和apt比Alpine简单
steps:
# 1. 更新并安装最小工具集
- name: 安装工具
run: |
apt-get update
apt-get install -y --no-install-recommends curl ca-certificates git make gcc g++
apt-get clean
# 2. 安装xmake官方方式
- name: 安装xmake
run: |
bash <(curl -fsSL https://xmake.io/shget.text)
echo "/root/.local/bin" >> $GITHUB_PATH
# 3. 检出代码
- name: 检出代码
run: |
git clone https://git.fig-lang.cn/${{ github.repository }} .
git checkout ${{ github.ref }}
# 4. 设置版本
- name: 设置版本
run: |
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
VERSION="${{ inputs.version }}"
else
VERSION="${GITHUB_REF#refs/tags/}"
fi
echo "VERSION=$VERSION" >> $GITHUB_ENV
echo "构建版本: $VERSION"
# 5. 构建
- name: 构建
run: |
export PATH="/root/.local/bin:$PATH"
xmake f -p linux -a x86_64 -m release -y
xmake build -j$(nproc)
# 6. 打包
- name: 打包
run: |
export PATH="/root/.local/bin:$PATH"
DIR="Fig-${{ env.VERSION }}-linux-x86_64"
mkdir -p "$DIR"
cp build/linux/x86_64/release/Fig "$DIR/"
[ -d "src/Module/Library" ] && cp -r src/Module/Library "$DIR/"
tar -czf "$DIR.tar.gz" "$DIR"
sha256sum "$DIR.tar.gz" > "$DIR.sha256"
# 7. 发布
- name: 发布
env:
TOKEN: ${{ secrets.CI_TOKEN }}
run: |
export PATH="/root/.local/bin:$PATH"
VERSION="${{ env.VERSION }}"
API="https://git.fig-lang.cn/api/v1/repos/${{ github.repository }}"
# 创建发布
curl -sS -X POST -H "Authorization: token $TOKEN" \
-H "Content-Type: application/json" \
-d "{\"tag_name\":\"$VERSION\"}" \
"$API/releases" 2>/dev/null || true
# 上传文件
curl -sS -X POST -H "Authorization: token $TOKEN" \
-H "Content-Type: application/octet-stream" \
--data-binary @Fig-$VERSION-linux-x86_64.tar.gz \
"$API/releases/$VERSION/assets?name=Fig-$VERSION-linux-x86_64.tar.gz"
curl -sS -X POST -H "Authorization: token $TOKEN" \
-H "Content-Type: text/plain" \
--data-binary @Fig-$VERSION-linux-x86_64.sha256 \
"$API/releases/$VERSION/assets?name=Fig-$VERSION-linux-x86_64.sha256"
echo "✅ 完成!版本: $VERSION"