2323 fail-fast : false
2424 matrix :
2525 platform :
26- - name : Linux AppImage
27- os : ubuntu-latest
28- rust-target : x86_64-unknown-linux-gnu
29- artifact-name : linux-x86_64-appimage
30- bundle-type : appimage
31- bundle-pattern : " *.AppImage"
32- file-suffix : appimage
3326 - name : Linux DEB
3427 os : ubuntu-latest
3528 rust-target : x86_64-unknown-linux-gnu
@@ -195,51 +188,6 @@ jobs:
195188 ls -la binaries/ || echo "binaries目录不存在"
196189 fi
197190
198- # 调试AppImage构建环境
199- - name : Debug AppImage build environment
200- if : matrix.platform.os == 'ubuntu-latest' && matrix.platform.bundle-type == 'appimage'
201- run : |
202- echo "🔍 调试AppImage构建环境..."
203- echo "📋 系统信息:"
204- uname -a
205- echo "📋 已安装工具版本:"
206- which linuxdeploy || echo "linuxdeploy未找到"
207- which ldd || echo "ldd未找到"
208- ldd --version || echo "ldd版本获取失败"
209- which patchelf || echo "patchelf未找到"
210- patchelf --version || echo "patchelf版本获取失败"
211- echo "📋 环境变量:"
212- env | grep -E "(ARCH|NO_STRIP|LINUXDEPLOY)" || echo "无相关环境变量"
213- echo "📋 检查目标二进制文件状态:"
214- if [ -f "src-tauri/target/release/claudia" ]; then
215- echo "✅ 找到主程序二进制文件"
216- file src-tauri/target/release/claudia
217- ldd src-tauri/target/release/claudia || echo "⚠️ 主程序ldd失败"
218- else
219- echo "❌ 主程序二进制文件不存在"
220- fi
221-
222- echo "📋 检查外部二进制文件配置:"
223- if [ -f "binaries/claude-code" ]; then
224- echo "✅ 外部二进制文件存在"
225- echo "📋 详细分析外部二进制文件:"
226- file binaries/claude-code
227- ls -la binaries/claude-code
228- echo "📋 检查二进制文件依赖:"
229- ldd binaries/claude-code 2>&1 || {
230- echo "⚠️ ldd失败,详细错误信息:"
231- ldd binaries/claude-code 2>&1 | cat -v
232- echo "📋 使用 readelf 检查:"
233- readelf -h binaries/claude-code 2>&1 || echo "readelf 也失败"
234- echo "📋 使用 hexdump 检查文件头:"
235- hexdump -C binaries/claude-code | head -5 || echo "hexdump 失败"
236- }
237- else
238- echo "❌ 外部二进制文件不存在"
239- echo "📋 检查构建过程是否创建了该文件:"
240- find . -name "claude-code" -type f 2>/dev/null || echo "整个项目中未找到 claude-code 文件"
241- fi
242-
243191 # 构建Tauri应用程序
244192 - name : Build Tauri application
245193 run : |
@@ -259,39 +207,8 @@ jobs:
259207 env :
260208 TAURI_SIGNING_PRIVATE_KEY : ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
261209 TAURI_SIGNING_PRIVATE_KEY_PASSWORD : ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
262- # 设置AppImage构建环境变量
263- ARCH : x86_64
264- NO_STRIP : 1
265- # 添加调试模式
266- RUST_LOG : debug
267- RUST_BACKTRACE : full
268- # 添加详细日志输出
269- LINUXDEPLOY_OUTPUT_VERSION : 1
270-
271- # 构建失败诊断
272- - name : Diagnose build failure
273- if : failure() && matrix.platform.os == 'ubuntu-latest' && matrix.platform.bundle-type == 'appimage'
274- run : |
275- echo "❌ AppImage构建失败,开始诊断..."
276- echo "📋 检查构建日志:"
277- find src-tauri -name "*.log" -type f -exec echo "=== {} ===" \; -exec cat {} \; 2>/dev/null || echo "未找到构建日志"
278- echo "📋 检查AppDir结构:"
279- if [ -d "src-tauri/target/release/bundle/appimage" ]; then
280- find src-tauri/target/release/bundle/appimage -type d -name "*.AppDir" -exec echo "=== AppDir: {} ===" \; -exec ls -la {} \; 2>/dev/null || echo "未找到AppDir"
281- fi
282- echo "📋 检查可能的错误文件:"
283- find src-tauri/target -name "*.stderr" -type f -exec echo "=== {} ===" \; -exec cat {} \; 2>/dev/null || echo "未找到stderr文件"
284- echo "📋 检查 linuxdeploy 相关文件:"
285- find /tmp -name "*linuxdeploy*" -type f 2>/dev/null | head -10 || echo "未找到 linuxdeploy 临时文件"
286- echo "📋 检查系统 ldd 状态:"
287- which ldd
288- ldd --help | head -5 2>/dev/null || echo "ldd help 失败"
289- echo "📋 检查 AppDir 中的二进制文件:"
290- if [ -d "src-tauri/target/release/bundle/appimage" ]; then
291- find src-tauri/target/release/bundle/appimage -name "*.AppDir" -exec find {} -name "claude-code" -type f \; 2>/dev/null || echo "AppDir 中未找到 claude-code"
292- fi
293- echo "📋 检查Rust编译产物:"
294- ls -la src-tauri/target/release/ 2>/dev/null || echo "release目录不存在"
210+
211+
295212
296213 # 查找构建产物
297214 - name : Find build artifacts
@@ -303,7 +220,7 @@ jobs:
303220
304221 # 显示完整构建目录结构
305222 echo "📁 完整构建目录结构:"
306- find src-tauri/target -type f \( -name "*.AppImage" -o -name "*. deb" -o -name "*.rpm" -o -name "*.msi" -o -name "*.exe" -o -name "*.dmg" \) 2>/dev/null || echo "未找到任何构建产物"
223+ find src-tauri/target -type f \( -name "*.deb" -o -name "*.rpm" -o -name "*.msi" -o -name "*.exe" -o -name "*.dmg" \) 2>/dev/null || echo "未找到任何构建产物"
307224
308225 echo "📁 target目录结构:"
309226 ls -la src-tauri/target/ 2>/dev/null || echo "target目录不存在"
@@ -317,9 +234,7 @@ jobs:
317234 fi
318235 fi
319236
320- if [ "${{ matrix.platform.bundle-type }}" = "appimage" ]; then
321- BUNDLE_PATH=$(find src-tauri/target/release/bundle/appimage -name "*.AppImage" | head -1)
322- elif [ "${{ matrix.platform.bundle-type }}" = "deb" ]; then
237+ if [ "${{ matrix.platform.bundle-type }}" = "deb" ]; then
323238 BUNDLE_PATH=$(find src-tauri/target/release/bundle/deb -name "*.deb" | head -1)
324239 elif [ "${{ matrix.platform.bundle-type }}" = "rpm" ]; then
325240 BUNDLE_PATH=$(find src-tauri/target/release/bundle/rpm -name "*.rpm" | head -1)
@@ -339,7 +254,7 @@ jobs:
339254 echo "❌ 未找到构建产物!"
340255 echo "查找路径:"
341256 find src-tauri/target -type d -name "bundle" 2>/dev/null || true
342- find src-tauri/target -type f \( -name "*.AppImage" -o -name "*. deb" -o -name "*.rpm" -o -name "*.msi" -o -name "*.exe" -o -name "*.dmg" \) 2>/dev/null || true
257+ find src-tauri/target -type f \( -name "*.deb" -o -name "*.rpm" -o -name "*.msi" -o -name "*.exe" -o -name "*.dmg" \) 2>/dev/null || true
343258 exit 1
344259 fi
345260
@@ -355,9 +270,7 @@ jobs:
355270 EXTENSION="${ORIGINAL_NAME##*.}"
356271
357272 # 根据平台和架构生成文件名,不包含文件类型后缀
358- if [ "${{ matrix.platform.bundle-type }}" = "appimage" ]; then
359- NEW_NAME="claudia-linux-x86_64.${EXTENSION}"
360- elif [ "${{ matrix.platform.bundle-type }}" = "deb" ]; then
273+ if [ "${{ matrix.platform.bundle-type }}" = "deb" ]; then
361274 NEW_NAME="claudia-linux-x86_64.${EXTENSION}"
362275 elif [ "${{ matrix.platform.bundle-type }}" = "rpm" ]; then
363276 NEW_NAME="claudia-linux-x86_64.${EXTENSION}"
@@ -410,9 +323,9 @@ jobs:
410323 run : |
411324 mkdir -p ./release-files
412325 echo "📦 查找所有构建产物..."
413- find ./artifacts -type f \( -name "*.AppImage" -o -name "*. deb" -o -name "*.rpm" -o -name "*.msi" -o -name "*.exe" -o -name "*.dmg" \) -print
326+ find ./artifacts -type f \( -name "*.deb" -o -name "*.rpm" -o -name "*.msi" -o -name "*.exe" -o -name "*.dmg" \) -print
414327 echo "📦 复制构建产物到发布目录..."
415- find ./artifacts -type f \( -name "*.AppImage" -o -name "*. deb" -o -name "*.rpm" -o -name "*.msi" -o -name "*.exe" -o -name "*.dmg" \) -exec cp {} ./release-files/ \;
328+ find ./artifacts -type f \( -name "*.deb" -o -name "*.rpm" -o -name "*.msi" -o -name "*.exe" -o -name "*.dmg" \) -exec cp {} ./release-files/ \;
416329 echo "📦 发布文件列表:"
417330 ls -la ./release-files/
418331
@@ -449,9 +362,7 @@ jobs:
449362 for file in ./release-files/*; do
450363 if [ -f "$file" ]; then
451364 filename=$(basename "$file")
452- if [[ "$filename" == *"linux"* && "$filename" == *".AppImage" ]]; then
453- echo "- **Linux AppImage (x86_64)**: \`$filename\`" >> CHANGELOG.md
454- elif [[ "$filename" == *"linux"* && "$filename" == *".deb" ]]; then
365+ if [[ "$filename" == *"linux"* && "$filename" == *".deb" ]]; then
455366 echo "- **Linux DEB (x86_64)**: \`$filename\`" >> CHANGELOG.md
456367 elif [[ "$filename" == *"linux"* && "$filename" == *".rpm" ]]; then
457368 echo "- **Linux RPM (x86_64)**: \`$filename\`" >> CHANGELOG.md
@@ -476,14 +387,6 @@ jobs:
476387 echo "### 🔧 安装说明 / Installation Instructions" >> CHANGELOG.md
477388 echo "" >> CHANGELOG.md
478389 echo "#### Linux" >> CHANGELOG.md
479- echo "**AppImage**:" >> CHANGELOG.md
480- echo "- 中文:下载 \`.AppImage\` 文件,添加执行权限后直接运行" >> CHANGELOG.md
481- echo "- English: Download the \`.AppImage\` file, add execute permission and run directly" >> CHANGELOG.md
482- echo "\`\`\`bash" >> CHANGELOG.md
483- echo "chmod +x claudia-linux-x86_64.AppImage" >> CHANGELOG.md
484- echo "./claudia-linux-x86_64.AppImage" >> CHANGELOG.md
485- echo "\`\`\`" >> CHANGELOG.md
486- echo "" >> CHANGELOG.md
487390 echo "**DEB Package**:" >> CHANGELOG.md
488391 echo "- 中文:下载 \`.deb\` 文件,使用包管理器安装" >> CHANGELOG.md
489392 echo "- English: Download the \`.deb\` file and install using package manager" >> CHANGELOG.md
0 commit comments