我有一个包含
.github
、src
目录和 README.md
文件的存储库。
我希望能够对
.github
文件夹或 README.md
文件中的任何内容进行更改,而无需拉取请求。但是,对于 src
文件夹中的任何更改都应该需要拉取请求。我在分支规则集中找不到允许这样做的设置。
举个例子,处理
.github
文件夹中的操作,并且每次都创建拉取请求是不必要的,而且很烦人。
如果这是 GitHub Action 的一部分,它会有这样的内容:
on:
workflow_dispatch:
pull_request:
branches:
- main
- dev
paths:
- 'src/**'
我如何为规则集做这样的事情?
在其他workds中,如何使规则集应用于存储库的
src
目录而不是整个存储库?
或者我需要采取不同的方法吗?
我使用了很多不同的分支:
我认为只有在将功能推送或合并到主分支时才会触发管道。当我要在开发环境中工作时,我会使用开发分支。我正在使用这个模板。
我针对您的问题更新了此模板。
name: CI
# the placeholder `$default-branch` will be automatically replaced with
# the name of the repository's default branch, e.g. main
on:
push:
branches: [$default-branch]
pull_request:
branches: [$default-branch]
jobs:
enforce-pr:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Check for changes in src directory
id: check_changes
run: |
git fetch origin main
CHANGED_FILES=$(git diff --name-only HEAD origin/main)
echo "Changed files: $CHANGED_FILES"
if echo "$CHANGED_FILES" | grep -q '^src/'; then
echo "::set-output name=changes_in_src::true"
else
echo "::set-output name=changes_in_src::false"
fi
- name: Fail if changes in src directory
if: steps.check_changes.outputs.changes_in_src == 'true'
run: |
echo "Changes detected in src directory. Please create a pull request."
exit 1