GitHub Action工作流程未运行

116
我有一个 GitHub action 工作流程文件位于 myrepo/.github/workflows/Build Webpage.yml 它包含了这些内容:
name: Webpage Build

on:
  push:
    branches:
      - webpage 

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: setup node
      uses: actions/setup-node@v2-beta
      with:
        node-version: '12'
    - name: install deps and predeploy
      run: |
        npm ci
        npm run predeploy
    - name: Deploy 
      uses: JamesIves/github-pages-deploy-action@3.5.2
      with:
        GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
        BRANCH: gh-pages
        FOLDER: build

当我推送到网页分支时,操作选项卡中根本没有任何反应,我无法确定是否存在语法错误或者是否有完全不正确的设置。在过去,我曾经遇到过与语法相关的错误,比如 每个步骤必须定义一个 'uses' 或 'run' 键,这对我来说表明 Github 确实认识工作流程。


1
GitHub还在抱怨语法吗? - smac89
1
不,无论我推送什么都没有发生任何事情,也没有看到任何投诉或错误。 - KieranLewin
1
如果您确定已经推送到了“webpage”分支,但工作流程仍未被触发,则需要前往官方actions community页面并提交错误报告。 - smac89
2
如果您想进一步调试它,另一个选项是将触发器更改为在计划上运行,并查看是否触发了工作流程... - smac89
6
发现混淆了基本的 Git 文件...显然我很蠢XD,只是将工作流程推送上去,现在它正在运行,所以简而言之,请确保在您想要运行的分支上设置工作流程。我记得在某个文档中看到过,但找不到了。非常感谢。 - KieranLewin
显示剩余8条评论
22个回答

238

你的分支是 master 还是 main

这可能在未来看起来很傻,但截至2020年10月,请记住默认的 GitHub 分支已从 master 更名为 main (source)。

因此,如果你从其他地方复制操作,请确保你正在针对正确的分支(对于新存储库,这意味着大多数情况下需要在 .yml 工作流文件中将 master 替换为 main)。

如果你针对错误的分支,操作名称将出现在 GitHub 上,但实际上不会运行任何操作。


7
做得好。我复制/粘贴了。我的分支是主要的 YAML 文件是 master。 - Gabriel Linassi
1
如果您进行了此更改但未得到修复,请参见sachinkondana的答案:如果工作流文件是唯一更改的内容,并且未包含在“paths”中,则工作流将不会运行,直到有与“paths”匹配的内容被更改。 - gmarmstrong
4
这件事发生在我身上,这就是为什么这个地方很棒。我花了一个小时查阅官方文档,寻找解决方法,而你的答案正中要害。谢谢。 - RagnarLothbrock
1
【捂脸】:这正是我所做的。让我白费了很长时间。 现在就这么做了: branches: [ "master", "main" ] - Lon Kaut
3
类似的事情也发生在我身上。我把“.github/workflows”写成了“.github/workflow”。希望这能帮到一些人。 - Nirav Madhani

180

我遇到了这个问题,但是所有的答案都没有帮助。它根本就无法运行,也不知道为什么。 直到我发现 Github actions 出现故障。请查看https://www.githubstatus.com/


我简直不敢相信,这对我来说现在也是完全一样的情况 :D - benshabatnoam
2
好的,我刚到这里,现在想知道如何手动运行推送/ PR 工作流程。 - Kilbo
1
它应该是工作流运行列表顶部的一个栏,根据文档所述,但我目前实际上没有看到这个... - Nick K9
2
这是答案。Git操作现在不可用! - rodrigo
@NickK9 或许相关:你需要为手动运行按钮添加一个 workflow_dispatch 触发器才能使用。 - undefined
显示剩余2条评论

68

如在帖子下面的评论中所述,如果您想要在分支x上运行工作流程,则.github文件夹必须位于分支x上,并且任何其他您想要从中触发工作流程的分支也是如此。


2
我们在从另一个提供者迁移到github/github actions时遇到了这个问题,该分支早于迁移。这非常令人困惑 :) - chipcullen
1
这是一个容易被许多用户忽略的情况。只需将 .github 文件夹复制到您的本地工作分支即可。 - Aman Sharma

29

再看一个情况,假设您的项目中已经有workflow文件,并且如果您的paths已设置,则在您未更改path文件夹内的内容之前,工作流将不会运行。因此,如果您对保存在path外部的workflow进行任何更改,都不会触发Action

on:
  push:
    branches:
     - master
    paths:
     - 'packages/container/**'

21
  • 我遇到了另一个愚蠢的情况。由于 GitHub UI 会在文件夹路径中添加空格(有时是由 Google Translate 插件引起的),当我从 GitHub UI 复制路径 .github/workflows 并将其用于在 VSCode 中创建文件夹时,它变成了带有空格的 .github / workflows,其中 / 周围有空格。

GitHub workflow path

  • 我通过向 GitHub 请求从“Actions”选项卡为我初始化 Actions 工作流程来发现了这个问题,因此我注意到了我的错误,这是解决这个问题的好方法。

GitHub Actions UI


4
我当时犯的不是完全一样的错误,而是使用了“workflow”而不是“workflows”。这条评论帮助我发现了错误。 :D - Urvah Shabbir
1
谢谢,我遇到了这个问题,非常有帮助。 - David H

16

我想添加一个有趣的案例。当您添加新的工作流程时,有时候即使所有设置都正确,工作流程也可能无法进入运行阶段。 请确保在将操作添加到分支后,在该分支中进行一些更改。还要确保提交这些更改。 这将触发操作并显示在仪表板上。


15

工作流程中可能发生的另一种情况是pull_request类型。

如果您的分支和基本分支存在冲突,则工作流将不会被触发。 这并不总是显而易见,因为您可能仅与工作流程存在冲突。

以下只是一个示例,但主要问题是必须先解决冲突。

on:
  pull_request:
    types: [labeled, reopened, synchronize, ready_for_review]

天啊...谢谢您先生!有任何来源吗? - Igor Gonak
1
@IgorGonak 只是一整天的故障排除。 :) - tjg184
这对我来说是个问题,我希望 Github 会说“存在合并冲突,因此不会执行任何操作”,而不是令人困惑的“工作流程已完成但没有作业运行”。 - Wong Jia Hau

13

注意另一个陷阱:如果你 fork 了另一个具有 Github 工作流的代码库,工作流将默认禁用。

这一特性的目的是防止你意外运行具有未知行为的导入工作流,这可能会构成安全风险(例如访问秘密信息)。

要重新启用工作流,请前往代码库的“Actions”标签,并确认你理解即将启用的工作流。


10

我发现我的问题在GitHub actions文档中有描述:

如果您使用!字符定义分支,则还必须定义至少一个不带!字符的分支。 如果您只想排除某些分支,请改用branches-ignore。

最初,我的工作流程如下(未触发操作):

on:
  push:
    branches:
      - "!main"

为了修复它:
on:
  push:
    branches-ignore:
      - main

我很好奇,推送除主分支以外的所有分支有什么用途? - Hashim Aziz
@HashimAziz 我不太记得了,可能是运行一些测试。 - David
这个东西正是我的问题所在。谢谢! - kfm2000

8

还有一点需要注意的是,触发操作的提交中可能包含跳过关键词。

如果您推送或者PR的HEAD提交信息包含以下字符串之一:[skip ci]、[ci skip]、[no ci]、[skip actions] 或 [actions skip],那么将会跳过 push 或 pull_request 事件所触发的工作流程。

我在使用 Semantic Release 并将我的部署分支重置为发布提交时,遇到了这个问题。您可以重新编写发布提交并在部署分支上推送(至少这是我解决它的方法)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接