如何为Twilio SMS GitHub Action嵌入工作流名称等动态值?
解决GitHub Actions中Twilio通知消息嵌入工作流信息的报错问题
问题原因
在env块里写${{ env.GITHUB_WORKFLOW }}是错误用法——GitHub Actions的规则里,env定义层级中不能通过env.引用GitHub内置变量,这些变量属于github上下文,得直接用github前缀访问。
解决方案
修改send_notification任务的MESSAGE定义,直接用github上下文变量获取工作流名称、执行时间等信息,完整配置示例如下:
send_notification: needs: deploy name: Send SMS Notification runs-on: ubuntu-latest env: MESSAGE: "✅ GitHub Action ✅\n\nName: ${{ github.workflow }}\nStatus: Complete\n触发时间: ${{ github.run_started_at }}\n\nAPI is live at:\nhttps://ammarahmedca.fly.dev" steps: - uses: twilio-labs/actions-sms@v1 with: fromPhoneNumber: ${{ secrets.TWILIO_PHONE_NUMBER }} toPhoneNumber: ${{ secrets.MY_PHONE_NUMBER }} message: ${{ env.MESSAGE }} env: TWILIO_ACCOUNT_SID: ${{ secrets.TWILIO_ACCOUNT_SID }} TWILIO_API_KEY: ${{ secrets.TWILIO_API_KEY }} TWILIO_API_SECRET: ${{ secrets.TWILIO_API_SECRET }}
额外说明
- 工作流名称:
${{ github.workflow }}直接对应你在工作流顶部定义的name: Deploy to Fly.io - 执行时间优化:
github.run_started_at返回的是UTC格式时间(比如2024-05-20T12:34:56Z),如果需要更易读的格式,可以加一步格式化时间的操作:send_notification: needs: deploy name: Send SMS Notification runs-on: ubuntu-latest steps: - name: 格式化触发时间 run: echo "FORMATTED_TIME=$(date -d "${{ github.run_started_at }}" '+%Y-%m-%d %H:%M:%S')" >> $GITHUB_ENV - uses: twilio-labs/actions-sms@v1 with: fromPhoneNumber: ${{ secrets.TWILIO_PHONE_NUMBER }} toPhoneNumber: ${{ secrets.MY_PHONE_NUMBER }} message: "✅ GitHub Action ✅\n\nName: ${{ github.workflow }}\nStatus: Complete\n触发时间: ${{ env.FORMATTED_TIME }}\n\nAPI is live at:\nhttps://ammarahmedca.fly.dev" env: TWILIO_ACCOUNT_SID: ${{ secrets.TWILIO_ACCOUNT_SID }} TWILIO_API_KEY: ${{ secrets.TWILIO_API_KEY }} TWILIO_API_SECRET: ${{ secrets.TWILIO_API_SECRET }} - 核心规则:GitHub内置上下文变量直接用
github.xxx访问,只有你自己定义的环境变量才用env.xxx引用。
内容的提问来源于stack exchange,提问作者Ammar Ahmed
相关产品推荐
相关产品推荐

