我正在尝试编写一个 GitHub 操作,该操作应在更新提供的路径时触发并且推送标签。
Github 文档建议,如果提供
tags
和 paths
,则标签优先。
我试图用逻辑AND来完成这项工作,如下所示:
name: ci
on:
push:
paths:
- 'dir1'
tags:
- 'v*'
...
使用上面的代码,即使其他目录有更新并且推送了标签,该操作也会被触发。
我也尝试了以下方法,但没有按预期工作。
name: ci
on:
push:
paths:
- 'dir1'
...
jobs:
push-artifacts:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: push
if: "startsWith(github.ref, 'refs.tags/v')"
<Push artifact>
并通过使用
dorny/paths-filter
行动:
name: ci
on:
push:
tags:
- 'v*'
...
jobs:
push-artifacts:
runs-on: ubuntu-latest
steps:
- name: Check paths
id: filter
uses: dorny/paths-filter@v3
with:
filters: |
src:
- 'dir1'
- uses: actions/checkout@v3
- name: push
if: steps.filter.outputs.src == 'true'
...
<Push artifact>
有人可以帮我实现这个目标吗?
使用路径过滤时,您需要注意
dir1
文件夹内的任何更改:
name: ci
on:
push:
tags:
- 'v*'
...
jobs:
push-artifacts:
runs-on: ubuntu-latest
steps:
- name: Check paths
id: filter
uses: dorny/paths-filter@v3
with:
filters: |
src:
- 'dir1/**'
- uses: actions/checkout@v3
- name: push
if: steps.filter.outputs.src == 'true'
...
<Push artifact>
否则它将直接寻找对文件夹
dir1
的更改,我认为这不是您想要实现的目标。