热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

仅使用GitHubActions在特定分支上运行作业

如何解决《仅使用GitHubActions在特定分支上运行作业》经验,为你挑选了1个好方法。

我是GitHub Actions的新手,有2个工作-一个运行我的测试,另一个将我的项目部署到服务器上。

显然,我希望测试可以在每个分支上运行,但是部署应该仅在将某些内容推入主程序时进行。

我正在努力寻找一种在特定分支上运行作业的方法。我知道有可能只在特定分支上运行整个工作流程,但这意味着我将拥有一个“测试”工作流程和一个“部署”工作流程。

这听起来像是一个解决方案,但是它们将并行运行。在理想情况下,测试将首先运行,并且只有在测试成功的情况下,部署工作才能开始。使用2个单独的工作流时不是这种情况。

我将如何实现这一目标?是否可以在特定分支上运行作业



1> peterevans..:

在最近的更新中,您现在可以将if条件设置为job水平。请参阅此处的文档。https://help.github.com/cn/articles/workflow-syntax-for-github-actions#jobsjob_idif

我测试了此工作流程,该工作流程可test在每次推送时运行该作业,但仅deploy在master分支上运行。

name: my workflow
on: push
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - name: Execute tests
        run: exit 0
  deploy:
    runs-on: ubuntu-latest
    needs: test
    if: github.ref == 'refs/heads/master'
    steps:
      - name: Deploy app
        run: exit 0

接下来是我的原始答案,如果您希望拥有单独的工作流程,还可以使用其他解决方案。

除以外的每个分支都将运行第一个工作流程master。在此工作流程中,您仅运行测试。

on:
  push:
    branches:
      - '*'
      - '!master'

第二个工作流只master运行一次,如果测试成功通过,则运行您的测试并部署。

on:
  push:
    branches:
      - master


推荐阅读
author-avatar
倩女墨镜aaaaa_259
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有