1- # 工作流名称
21name : Build and Release Project
32
4- # 触发工作流的事件
53on :
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
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