1

我正在设置 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'
4

1 回答 1

3

那是因为使用标准进行的提交GITHUB_TOKEN 不会触发工作流;您必须将个人访问令牌用于应该启动另一个工作流程的自动化工作流程。

引用文档(上面链接):

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

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

于 2021-07-27T18:10:45.373 回答