如何仅在提交已验证时运行Firebase GitHub Action?
可行,且可以通过GitHub Actions的条件配置实现
你要的需求完全可以实现,核心是利用GitHub Actions提供的上下文变量判断提交的验证状态,或者提交者的身份,再决定是否执行部署流程。
方案1:基于提交签名验证(推荐,符合“提交已验证”的需求)
GitHub会标记经过信任的GPG/SSH签名的提交为“已验证”,对应的上下文变量github.event.head_commit.verified会返回布尔值true。我们可以在工作流的Job级别添加条件,仅当最后一个提交已验证时才执行部署:
修改后的工作流配置:
# This file was auto-generated by the Firebase CLI # https://github.com/firebase/firebase-tools name: Deploy to Firebase Hosting on verified merge 'on': push: branches: - master jobs: build_and_deploy: runs-on: ubuntu-latest # 仅当推送的最后一个提交已验证时,才执行该Job if: ${{ github.event.head_commit.verified }} steps: - uses: actions/checkout@v2 - uses: FirebaseExtended/action-hosting-deploy@v0 with: repoToken: '${{ secrets.GITHUB_TOKEN }}' firebaseServiceAccount: '${{ secrets.FIREBASE_SERVICE_ACCOUNT_WOOSTER_TRADING_SYSTEMS }}' channelId: live projectId: wooster-trading-systems
这个配置的逻辑:
- 只有推送到
master分支的提交中,最后一个提交是已验证状态时,才会触发构建和部署 - 如果未验证提交者推送代码,工作流会直接跳过部署;之后验证提交者推送的代码(作为最新的已验证提交)会触发部署,自动更新到最新内容
方案2:基于指定提交者名单(适合限制特定用户部署)
如果你所谓的“验证提交者”是指仓库的特定授权用户,可以通过判断提交者的GitHub用户名来实现:
# This file was auto-generated by the Firebase CLI # https://github.com/firebase/firebase-tools name: Deploy to Firebase Hosting on authorized push 'on': push: branches: - master jobs: build_and_deploy: runs-on: ubuntu-latest # 仅当提交者在指定名单内时执行部署 if: ${{ contains(fromJSON('["你的用户名1", "你的用户名2"]'), github.event.head_commit.author.login) }} steps: - uses: actions/checkout@v2 - uses: FirebaseExtended/action-hosting-deploy@v0 with: repoToken: '${{ secrets.GITHUB_TOKEN }}' firebaseServiceAccount: '${{ secrets.FIREBASE_SERVICE_ACCOUNT_WOOSTER_TRADING_SYSTEMS }}' channelId: live projectId: wooster-trading-systems
把["你的用户名1", "你的用户名2"]替换为允许部署的用户GitHub用户名即可,只有这些用户推送的代码才会触发部署。
内容的提问来源于stack exchange,提问作者preritdas
相关产品推荐
相关产品推荐

