Skip to content

Commit 0844019

Browse files
committed
workflow
1 parent 76a15a3 commit 0844019

File tree

1 file changed

+26
-19
lines changed

1 file changed

+26
-19
lines changed

.github/workflows/build-release.yml

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
1-
# 工作流名称
21
name: Build and Release Project
32

4-
# 触发工作流的事件
53
on:
64
push:
75
branches:
@@ -57,32 +55,48 @@ jobs:
5755
- name: Build binary with cargo
5856
run: cargo build --release --target ${{ matrix.target }} --verbose
5957

60-
- name: Prepare artifact name and path
58+
# 步骤 1: 将编译产物重命名为包含平台信息的唯一文件名
59+
- name: Prepare artifact for upload
6160
id: prepare_artifact
6261
shell: bash
6362
run: |
6463
BIN_NAME="telembed"
6564
TARGET="${{ matrix.target }}"
6665
66+
# 定义原始二进制文件的路径
67+
SOURCE_PATH="target/${TARGET}/release/${BIN_NAME}"
68+
69+
# 定义新的、包含平台信息的唯一文件名
70+
FINAL_FILENAME="${BIN_NAME}-${TARGET}"
71+
72+
# 根据操作系统处理 .exe 后缀
6773
if [[ "${{ runner.os }}" == "Windows" ]]; then
68-
BIN_PATH="target/${TARGET}/release/${BIN_NAME}.exe"
69-
ARTIFACT_NAME="${BIN_NAME}-${TARGET}.exe"
74+
# 在原始位置重命名文件
75+
mv "${SOURCE_PATH}.exe" "target/${TARGET}/release/${FINAL_FILENAME}.exe"
76+
77+
# 将重命名后的完整路径和新文件名设置为输出
78+
echo "bin_path=target/${TARGET}/release/${FINAL_FILENAME}.exe" >> $GITHUB_OUTPUT
79+
echo "artifact_name=${FINAL_FILENAME}.exe" >> $GITHUB_OUTPUT
7080
else
71-
BIN_PATH="target/${TARGET}/release/${BIN_NAME}"
72-
ARTIFACT_NAME="${BIN_NAME}-${TARGET}"
73-
fi
81+
# 在原始位置重命名文件
82+
mv "$SOURCE_PATH" "target/${TARGET}/release/$FINAL_FILENAME"
7483
75-
echo "artifact_name=${ARTIFACT_NAME}" >> $GITHUB_OUTPUT
76-
echo "bin_path=${BIN_PATH}" >> $GITHUB_OUTPUT
84+
# 将重命名后的完整路径和新文件名设置为输出
85+
echo "bin_path=target/${TARGET}/release/${FINAL_FILENAME}" >> $GITHUB_OUTPUT
86+
echo "artifact_name=${FINAL_FILENAME}" >> $GITHUB_OUTPUT
87+
fi
7788
78-
# 此步骤上传的 artifact 会被自动压缩成 zip,但这只是为了在 job 之间传递
89+
# 步骤 2: 上传被唯一重命名后的二进制文件
7990
- name: Upload artifact for release job
8091
uses: actions/upload-artifact@v4
8192
with:
93+
# artifact 的名字也是唯一的
8294
name: ${{ steps.prepare_artifact.outputs.artifact_name }}
95+
# path 直接指向那个被重命名后的唯一文件
8396
path: ${{ steps.prepare_artifact.outputs.bin_path }}
97+
# --- 修改结束 ---
8498

85-
# 发布任务
99+
# 发布任务(此任务无需任何修改)
86100
release:
87101
name: Create GitHub Release
88102
needs: build
@@ -92,7 +106,6 @@ jobs:
92106
id: generate_tag
93107
run: echo "TAG=$(date +'%Y.%m.%d.%H%M%S')" >> $GITHUB_OUTPUT
94108

95-
# 此步骤会下载所有构建产物,并自动解压
96109
- name: Download all build artifacts
97110
uses: actions/download-artifact@v4
98111
with:
@@ -101,17 +114,11 @@ jobs:
101114
- name: Display structure of downloaded files
102115
run: ls -R artifacts
103116

104-
# 重要提示:
105-
# 上一步的 download-artifact 会自动解压在 build 任务中生成的压缩包。
106-
# 因此,'artifacts' 目录中现在存放的是原始的、未压缩的二进制文件。
107-
# 下面的步骤会将这些原始二进制文件直接作为附件上传到 Release 中。
108117
- name: Create Release and Upload Assets
109118
uses: softprops/action-gh-release@v2
110119
with:
111120
tag_name: ${{ steps.generate_tag.outputs.TAG }}
112121
name: "Release ${{ steps.generate_tag.outputs.TAG }}"
113122
generate_release_notes: true
114-
# 'files' 通配符会匹配 'artifacts' 目录下的所有文件
115-
# 并将它们作为独立的、未压缩的文件上传
116123
files: |
117124
artifacts/**/*

0 commit comments

Comments
 (0)