forked from PuqiAR/Fig-TreeWalker
change build.yml
This commit is contained in:
@@ -29,16 +29,22 @@ jobs:
|
||||
git clone https://git.fig-lang.cn/${{ github.repository }} .
|
||||
git checkout ${{ github.ref }}
|
||||
|
||||
- name: 设置版本
|
||||
- name: 设置版本和提交信息
|
||||
run: |
|
||||
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
|
||||
VERSION="${{ inputs.version }}"
|
||||
else
|
||||
VERSION="${GITHUB_REF#refs/tags/}"
|
||||
VERSION="${{ github.ref_name }}"
|
||||
fi
|
||||
echo "构建版本: $VERSION"
|
||||
echo "VERSION=$VERSION" >> $GITHUB_ENV
|
||||
|
||||
# 拿提交消息
|
||||
COMMIT_MSG=$(git log -1 --pretty=%B)
|
||||
echo "COMMIT_MSG<<EOF" >> $GITHUB_ENV
|
||||
echo "$COMMIT_MSG" >> $GITHUB_ENV
|
||||
echo "EOF" >> $GITHUB_ENV
|
||||
|
||||
- name: 构建项目 (Linux)
|
||||
run: |
|
||||
echo "开始构建Linux版本..."
|
||||
@@ -83,21 +89,34 @@ jobs:
|
||||
GITEA_TOKEN: ${{ secrets.CI_TOKEN }}
|
||||
run: |
|
||||
VERSION="${{ env.VERSION }}"
|
||||
COMMIT_MSG="${{ env.COMMIT_MSG }}"
|
||||
API="https://git.fig-lang.cn/api/v1/repos/${{ github.repository }}"
|
||||
|
||||
echo "正在为Linux版本创建/更新发布 $VERSION ..."
|
||||
|
||||
# 确保正确转义
|
||||
python3 -c "import json, os; print(json.dumps({'tag_name': os.environ['VERSION'], 'name': 'Fig ' + os.environ['VERSION'], 'body': os.environ.get('COMMIT_MSG', ''), 'draft': False, 'prerelease': False}))" > release_body.json
|
||||
|
||||
RESPONSE=$(curl -sS -X POST -H "Authorization: token $GITEA_TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{\"tag_name\":\"$VERSION\",\"name\":\"Fig $VERSION\",\"draft\":false,\"prerelease\":false}" \
|
||||
-d @release_body.json \
|
||||
"$API/releases" 2>/dev/null || echo '{"id":0}')
|
||||
|
||||
RELEASE_ID=$(echo "$RESPONSE" | grep -o '"id":[0-9]*' | head -1 | cut -d':' -f2)
|
||||
|
||||
if [ -z "$RELEASE_ID" ] || [ "$RELEASE_ID" = "0" ]; then
|
||||
echo "尝试通过标签获取已有发布的ID..."
|
||||
RELEASE_ID=$(curl -sS -H "Authorization: token $GITEA_TOKEN" \
|
||||
"$API/releases/tags/$VERSION" | grep -o '"id":[0-9]*' | head -1 | cut -d':' -f2)
|
||||
RESPONSE_TAG=$(curl -sS -H "Authorization: token $GITEA_TOKEN" "$API/releases/tags/$VERSION")
|
||||
RELEASE_ID=$(echo "$RESPONSE_TAG" | grep -o '"id":[0-9]*' | head -1 | cut -d':' -f2)
|
||||
|
||||
# 发布存在,更新它以包含最新的提交消息
|
||||
if [ -n "$RELEASE_ID" ] && [ "$RELEASE_ID" != "0" ]; then
|
||||
echo "更新已有发布的说明..."
|
||||
curl -sS -X PATCH -H "Authorization: token $GITEA_TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d @release_body.json \
|
||||
"$API/releases/$RELEASE_ID" > /dev/null
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -z "$RELEASE_ID" ]; then
|
||||
@@ -151,9 +170,9 @@ jobs:
|
||||
run: |
|
||||
$env:Path = "C:\Program Files\Git\cmd;$env:Path"
|
||||
git clone https://git.fig-lang.cn/$env:GITHUB_REPOSITORY .
|
||||
git checkout $env:GITHUB_REF
|
||||
git checkout ${{ github.ref }}
|
||||
|
||||
- name: 设置版本
|
||||
- name: 设置版本和提交信息
|
||||
run: |
|
||||
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
|
||||
if ($env:GITHUB_EVENT_NAME -eq 'workflow_dispatch') {
|
||||
@@ -161,11 +180,17 @@ jobs:
|
||||
if (-not $VERSION) { $VERSION = $env:VERSION_INPUT }
|
||||
if (-not $VERSION) { $VERSION = "dev-build" }
|
||||
} else {
|
||||
$VERSION = $env:GITHUB_REF_NAME
|
||||
$VERSION = "${{ github.ref_name }}"
|
||||
}
|
||||
Write-Host "构建版本: $VERSION"
|
||||
"VERSION=$VERSION" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8
|
||||
|
||||
# 提交消息
|
||||
$COMMIT_MSG = git log -1 --pretty=%B
|
||||
"COMMIT_MSG<<EOF" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8
|
||||
$COMMIT_MSG | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8
|
||||
"EOF" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8
|
||||
|
||||
- name: 构建项目 (Windows Native)
|
||||
run: |
|
||||
xmake f -p windows -a x86_64 -m release -y
|
||||
@@ -186,14 +211,7 @@ jobs:
|
||||
run: |
|
||||
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
|
||||
|
||||
# 🔧 修改:与发布步骤使用相同的版本号计算逻辑
|
||||
if ($env:GITHUB_EVENT_NAME -eq 'workflow_dispatch') {
|
||||
$VERSION = $env:INPUT_VERSION
|
||||
if (-not $VERSION) { $VERSION = "dev-build" }
|
||||
} else {
|
||||
$VERSION = $env:GITHUB_REF_NAME
|
||||
}
|
||||
|
||||
$VERSION = $env:VERSION
|
||||
Write-Host "打包版本: $VERSION"
|
||||
|
||||
$PACKAGE_NAME = "Fig-${VERSION}-windows-x86_64"
|
||||
@@ -231,13 +249,8 @@ jobs:
|
||||
run: |
|
||||
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
|
||||
|
||||
# 重新计算版本号(不使用 $env:VERSION)
|
||||
if ($env:GITHUB_EVENT_NAME -eq 'workflow_dispatch') {
|
||||
$VERSION = $env:INPUT_VERSION
|
||||
if (-not $VERSION) { $VERSION = "dev-build" }
|
||||
} else {
|
||||
$VERSION = $env:GITHUB_REF_NAME
|
||||
}
|
||||
$VERSION = $env:VERSION
|
||||
$COMMIT_MSG = $env:COMMIT_MSG
|
||||
|
||||
Write-Host "正在上传Windows版本到发布: $VERSION"
|
||||
|
||||
@@ -262,6 +275,7 @@ jobs:
|
||||
$CREATE_BODY = @{
|
||||
tag_name = $VERSION
|
||||
name = "Fig $VERSION"
|
||||
body = $COMMIT_MSG
|
||||
draft = $false
|
||||
prerelease = $false
|
||||
} | ConvertTo-Json -Compress
|
||||
@@ -281,6 +295,16 @@ jobs:
|
||||
$RESPONSE = Invoke-RestMethod -Uri "$API/releases/tags/$VERSION" `
|
||||
-Headers @{Authorization = "token $TOKEN" } `
|
||||
-ErrorAction SilentlyContinue
|
||||
|
||||
# 发布存在,更新它以包含最新的提交消息
|
||||
if ($RESPONSE -and $RESPONSE.id) {
|
||||
Write-Host "更新已有发布的说明..."
|
||||
Invoke-RestMethod -Method Patch -Uri "$API/releases/$($RESPONSE.id)" `
|
||||
-Headers @{
|
||||
Authorization = "token $TOKEN"
|
||||
'Content-Type' = 'application/json'
|
||||
} -Body $CREATE_BODY -ErrorAction SilentlyContinue | Out-Null
|
||||
}
|
||||
}
|
||||
|
||||
if ($RESPONSE -and $RESPONSE.id) {
|
||||
|
||||
Reference in New Issue
Block a user