通过GitHub Action将Flutter编译的APK上传至Slack失败问题咨询
GitHub Action上传Flutter APK到Slack失败排查方案
1. 优先修复YAML缩进错误(核心问题)
YAML对缩进敏感度极高,你的配置存在多处层级错误,会直接导致步骤不执行、参数读取失败:
steps字段要缩进2格,和runs-on平级,归属到buildjob下MeilCli/slack-upload-file@v1的with字段多缩进了1格,要和uses左对齐action-slack步骤的env字段错误缩进在with内部,需调整为和with平级- 最后的
release-apk步骤错误缩进在action-slack的配置内,需调整为独立步骤,和其他step平级
2. 删除无效冗余命令
以下命令完全无用,还可能造成文件混淆,直接删除即可:
- run: 'echo build/app/outputs/apk/release/app-release.apk > app-release.apk'
这行代码只会在工作目录生成一个写了APK路径的纯文本文件,并不会导出真实APK安装包。
3. 校验Slack令牌权限
你使用的SLACK_READ_WRITE_TOKEN必须满足以下要求:
- 令牌所属的Slack应用已经开启
files:write权限 - 已经将该Slack应用邀请到你配置的
SLACK_CHANNEL_DEPLOY对应的频道内 - 若使用的是Bot令牌,额外确认开启
chat:write权限,保证上传附带的评论可以正常发送
4. 提前校验APK路径正确性
在执行Slack上传步骤前,增加一步路径校验命令,确认APK确实编译生成在目标路径:
- run: ls -l build/app/outputs/apk/release/
如果执行这步时日志里没有显示app-release.apk,说明Flutter编译环节存在问题,需要先排查编译失败的原因。
修正后核心步骤参考
name: APK Deploy on: push: branches: - master jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - uses: actions/setup-java@v1 with: java-version: '12.x' - uses: subosito/flutter-action@v1 with: channel: 'stable' - run: flutter pub get - run: flutter analyze . - run: flutter test - run: flutter build apk --release # 新增路径校验 - run: ls -l build/app/outputs/apk/release/ - uses: MeilCli/slack-upload-file@v1 with: slack_token: ${{ secrets.SLACK_READ_WRITE_TOKEN }} channels: ${{ secrets.SLACK_CHANNEL_DEPLOY }} file_path: 'build/app/outputs/apk/release/app-release.apk' file_name: 'app-release.apk' file_type: 'apk' initial_comment: '${{ github.ref }} - deployed the apk file to slack' - name: action-slack uses: 8398a7/action-slack@v3.8.0 with: status: ${{ job.status }} author_name: Build Notification env: SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} - name: release-apk uses: actions/upload-artifact@v2 with: name: app-release.apk path: build/app/outputs/apk/release/app-release.apk
内容的提问来源于stack exchange,提问作者learnforever
相关产品推荐
相关产品推荐

