问题描述
正在通过 GitHub Actions 和 EAS Build 构建 React Native Expo 应用的内部分发版本。工作流在推送时使用 expo/expo-github-action@v7
触发。构建完成后,操作日志会显示2个URL(以及2个QR码),可以从中下载 .apk
和 .ipa
文件:
用户希望能够以编程方式获取这些链接,以便在下一步中使用它们来通知 Slack 频道等操作。
解决方案
以下方案可能因版本变化或平台差异而略有不同,请确保在实施前仔细阅读相关文档。
使用 GitHub Actions 输出
GitHub Actions 允许你在工作流程中的一个步骤中将信息输出为变量,然后可以在后续步骤中使用这些变量。对于你的情况,你可以通过以下步骤获取构建链接:
1. 在你的 GitHub Actions 工作流程文件中(例如 .github/workflows/main.yml
),找到执行构建的步骤。
2. 在构建步骤中,添加一个步骤来提取构建链接并将其输出为变量。你可以使用 shell 命令来提取链接,然后使用 echo
将其输出为变量。例如:
yaml
- name: Extract Build Links
run: |
# 提取.apk链接
APK_LINK=$(grep -oP "APK: \K.*" your-action-log-file.txt)
# 提取.ipa链接
IPA_LINK=$(grep -oP "IPA: \K.*" your-action-log-file.txt)
echo "APK_LINK=$APK_LINK" >> $GITHUB_ENV
echo "IPA_LINK=$IPA_LINK" >> $GITHUB_ENV
请将 your-action-log-file.txt
替换为你的操作日志文件的路径。
3. 在后续步骤中,你可以使用这些输出的变量。例如,你可以通过 ${{ env.APK_LINK }}
和 ${{ env.IPA_LINK }}
来获取链接。
通过上述步骤,你可以在 GitHub Actions 中提取构建链接并将其作为环境变量输出,然后在后续步骤中使用这些链接。
自动化通知到 Slack 频道
一旦你获得了构建链接,你可以使用 Slack 的 API 或现有的库来将通知发送到 Slack 频道。以下是一个简单的示例,演示如何使用 Webhook 将消息发送到 Slack:
- name: Notify Slack
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} # 在 GitHub 仓库的 Secrets 中设置 Webhook URL
run: |
curl -X POST -H 'Content-type: application/json' --data '{
"text": "New build links:\nAPK: '${{ env.APK_LINK }}'\nIPA: '${{ env.IPA_LINK }}'"
}' $SLACK_WEBHOOK_URL
在上面的示例中,我们假设你已经在 GitHub 仓库的 Secrets 中设置了一个名为 SLACK_WEBHOOK_URL
的 secret,其中包含 Slack 的 Webhook URL。
请注意,以上只是一个简单的示例,实际情况可能需要根据你的需求进行更多的定制和配置。
总结
通过 GitHub Actions 的输出功能,你可以在构建步骤中提取构建链接并将其作为环境变量输出,然后在后续步骤中使用这些链接。利用这些链接,你可以自动化通知到 Slack 频道或执行其他操作,从而更有效地管理构建和通知流程。记得根据你的实际需求和平台变化进行相应的调整和测试。