name: Release Build on: push: tags: ['*'] workflow_dispatch: inputs: version: description: '版本号 (例如: v1.0.0)' required: true default: 'dev-build' jobs: build-linux-x64: runs-on: ubuntu # 关键:不要写 container,让任务直接在宿主机上执行 steps: # 1. 直接使用本地镜像运行构建 - name: 在自定义镜像中构建 run: | # 使用本地镜像启动容器,执行所有构建步骤 docker run --rm \ -v $PWD:/workspace \ -w /workspace \ git.fig-lang.cn/puqiar/fig-ci:base-latest \ bash -c " # 克隆代码(容器内) git clone 'https://git.fig-lang.cn/${{ github.repository }}' . && \ git checkout '${{ github.ref }}' && \ # 设置版本号 if [ '${{ github.event_name }}' = 'workflow_dispatch' ]; then VERSION='${{ inputs.version }}' else VERSION='${GITHUB_REF#refs/tags/}' fi && \ echo \"版本: \$VERSION\" && \ # 构建 xmake f -p linux -a x86_64 -m release -y && \ xmake build -j\$(nproc) && \ # 打包 PACKAGE_NAME=\"Fig-\$VERSION-linux-x86_64\" && \ mkdir -p \"\${PACKAGE_NAME}\" && \ cp build/linux/x86_64/release/Fig \"\${PACKAGE_NAME}/\" && \ tar -czf \"\${PACKAGE_NAME}.tar.gz\" \"\${PACKAGE_NAME}\" && \ sha256sum \"\${PACKAGE_NAME}.tar.gz\" > \"\${PACKAGE_NAME}.sha256\" && \ echo \"构建完成\" " # 2. 发布(在宿主机上执行,因为打包好的文件在宿主机目录里) - name: 发布到Gitea env: GITEA_TOKEN: ${{ secrets.CI_TOKEN }} run: | # 确定版本号(逻辑和上面一样) if [ '${{ github.event_name }}' = 'workflow_dispatch' ]; then VERSION='${{ inputs.version }}' else VERSION='${GITHUB_REF#refs/tags/}' fi API=\"https://git.fig-lang.cn/api/v1/repos/${{ github.repository }}\" # 上传发布包 curl -sS -X POST -H \"Authorization: token $GITEA_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 $GITEA_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 \"✅ 发布完成!\"