【问题标题】:Github action to lint after commit in previous stepGithub 操作在上一步提交后进行 lint
【发布时间】:2021-10-03 13:35:38
【问题描述】:

我正在设置 Github 操作以使用 Spectral 对 OpenAPI 规范进行 lint。在 linting 之前,我想生成单个文件规范并提交它。

我已经设置了一个工作流程,首先构建然后 lint。但问题是,lint 没有考虑上一步中 Github 操作所做的提交。它总是对触发此操作的提交进行 lint。有什么方法可以对作为 Github 操作的一部分的提交进行 lint?

从上图中可以看出,Github 工作流并未针对 Github 操作所做的提交运行。

工作流程文件:

name: Run Spectral

on:
  - pull_request

jobs:
  build:
    name: Build Spec
    runs-on: ubuntu-latest

    steps:
      - name: Checkout Repository
        uses: actions/checkout@v2
      - name: Set up Node.js
        uses: actions/setup-node@v1
        with:
          node-version: 12.x
      - name: Install dependencies
        run: npm install
      - name: Build spec file
        run: npm run build
      - name: Commit build changes
        uses: EndBug/add-and-commit@v7
        with:
          default_author: github_actions
          message: 'Compiled spec file'
          add: '_build/oas.yaml'

  lint:
    name: Lint
    runs-on: ubuntu-latest
    needs: build
    steps:
      - name: Checkout Repository
        uses: actions/checkout@v2
      - name: Spectral Linting
        uses: stoplightio/spectral-action@v0.7.3
        with:
          file_glob: '_build/oas.yaml'

【问题讨论】:

    标签: github-actions building-github-actions


    【解决方案1】:

    这是因为提交使用标准 GITHUB_TOKEN aren't triggering workflows;您必须为应该启动另一个工作流程的自动化工作流程使用个人访问令牌。

    引用文档(上面链接):

    当您使用存储库的 GITHUB_TOKEN 代表 GitHub Actions 应用执行任务时,GITHUB_TOKEN 触发的事件不会创建新的工作流运行。这可以防止您意外创建递归工作流运行。 [...]

    如果您想从工作流运行中触发工作流,您可以使用个人访问令牌触发事件。 [...]

    【讨论】:

    • 谢谢本杰明。 PAT 解决方法不适用于我的用例。将有 100 名开发人员为这个 repo 做出贡献。还有其他选择吗?
    • @Ibrahim 他们不需要使用自己的令牌。如果经常这样做,方法是创建一个机器人用户,然后使用该机器人用户的 PAT 作为存储库或组织级别的机密。
    猜你喜欢
    • 2022-08-17
    • 1970-01-01
    • 2015-02-22
    • 1970-01-01
    • 2021-09-04
    • 2013-08-19
    • 1970-01-01
    • 1970-01-01
    • 2021-12-05
    相关资源
    最近更新 更多