gpt4 book ai didi

git - 如何在每次推送时在GitHub工作流中运行commitlint

转载 作者:行者123 更新时间:2023-12-03 17:08:04 25 4
gpt4 key购买 nike

我有一个Github存储库,在本地安装了commitlint and husky,并希望在验证请求请求时设置在每次提交时运行commitlint的工作流。 在主分支上,较早的提交不遵循常规的提交规则。
我根据此评论创建了一个单独的分支
https://github.com/conventional-changelog/commitlint/issues/586#issuecomment-657226800
我从这个工作流程开始

name: Run commitlint on pull request

on: pull_request

jobs:
run-commitlint-on-pull-request:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0

- name: Setup Node
uses: actions/setup-node@v2
with:
node-version: 14.x

- name: Install dependencies
run: npm install

- name: Validate all commits from PR
run: npx commitlint --from HEAD~${{ github.event.pull_request.commits }} --to HEAD --verbose
我按照常规的提交规则又进行了两次提交,并开始了请求请求
  • 我希望工作流不会运行,因为我还不存在于主分支上。
  • 实际上它运行

  • 我保护工作流仅检查PR提交
  • 工作流失败,因为它开始验证主分支中的每个提交。而且由于我知道较早的提交不遵循规则,所以这永远不会过去。


  • 我想到的第一个解决方案是重新设置所有内容并重命名每个提交以遵循规则,但这将需要付出巨大的努力。
    我不确定是否需要在这里改进这条线 npx commitlint --from HEAD~${{ github.event.pull_request.commits }} --to HEAD --verbose仅检查来自PR的提交(不幸的是,我不知道在那里需要解决的问题)。
    您有什么想法吗,或者是重新设计和重命名唯一的解决方案?

    最佳答案

    解决方案
    简单的解决方案是将commitlint的--to--from参数与 SHA-1值一起使用,而不是分支名称或相对引用。一方面,这可靠地解决了工作树中未知修订或路径的问题。另一方面,仅检查PR范围内的提交。附带说明:GitHub对已 checkout 的临时 merge 使用相同的引用(SHA-1)。
    我们需要基本 -SHA以及 -SHA。在GitHub Action 中,这些值在github -context中的事件的pull-request对象中可用。
    因此,您可以使用下面经过测试并可以正常工作的行:

    npx commitlint --from ${{ github.event.pull_request.base.sha }} --to ${{ github.event.pull_request.head.sha }} --verbose
    演示版
    这是带有3个测试用例( pull 请求)的 POC repository on GitHub
    完整的工作流程
    name: Run Commitlint on PR

    on:
    pull_request:

    jobs:

    run-commitlint-on-pr:
    runs-on: ubuntu-latest

    steps:

    - uses: actions/checkout@v2
    with:
    fetch-depth: 0

    - name: Setup Node
    uses: actions/setup-node@v2
    with:
    node-version: 14.x

    - name: Install dependencies
    run: npm install

    - name: Validate all commits from PR
    run: npx commitlint --from ${{ github.event.pull_request.base.sha }} --to ${{ github.event.pull_request.head.sha }} --verbose

    关于git - 如何在每次推送时在GitHub工作流中运行commitlint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67307001/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com