我已经通过npm发布了GitHub Actions,我希望只有当我的提交包含标签时才运行该操作,否则不运行操作,因为如果我没有给我的提交添加任何标签,那么操作将会运行失败,原因是它试图使用相同的标签发布已经发布的npm包。例如,对于我的最新提交,我有一个标签
感谢您的建议。
1.2.3
,并且我的npm包是使用1.2.3
版本发布的。当我在没有任何标签的情况下向我的分支添加新的提交时,操作将尝试使用1.2.3
版本标签发布我的软件包,从而导致操作失败。下面是我的操作代码,请问是否有解决方法。感谢您的建议。
name: NPM Publish
on:
push:
branches:
- master
tags:
- v*
jobs:
build:
name: Build & Publish
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: actions/setup-node@v2.4.0
with:
node-version: 12
registry-url: https://registry.npmjs.org/
- run: npm install
- run: npm publish --access public
env:
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
我需要在yml文件中添加类似以下的内容:
如果(git提交有标签)则继续任务,否则停止任务;
修改版本
根据@Enrico Campidoglio建议,我编辑了我的yml文件,但仍然不起作用。 我进行了两次提交,第一次没有标签,它取消了操作,但第二次有标签,它仍然取消了操作。是否有任何新的建议或解决方案?
name: NPM Publish
on:
push:
branches:
- master
jobs:
build:
name: Build & Publish
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: actions/setup-node@v2.4.0
with:
node-version: 12
registry-url: https://registry.npmjs.org/
- run: echo "GIT_COMMIT=`echo $(git rev-parse --short HEAD)`" >> $GITHUB_ENV
- run: echo "GIT_TAG=`echo $(git describe --tags --exact-match ${{ env.GIT_COMMIT }} || :)`" >> $GITHUB_ENV
- run: echo ${{ env.GIT_TAG }} != v*
- run: |
if [[ ${{ env.GIT_TAG }} == v* ]] ; then
echo "Tag found..."
else
echo "No git tag found, action cancelled..."
exit 1
fi
- uses: andymckay/cancel-action@0.2
if: ${{ env.GIT_TAG }} != v*
- run: npm install
- run: npm publish --access public
env:
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
我无法弄清楚问题的原因,这里有一个操作结果:
这是最新失败的操作: https://github.com/sametcelikbicak/enum2array/runs/3513521031?check_suite_focus=true
cancel-action
,但没有任何if
条件,这意味着它总是会取消构建。 - Enrico Campidoglio- uses: andymckay/cancel-action@0.2 if: ${{ env.GIT_TAG }} != v*
这几行代码有问题,我该如何处理这个控制? - Samet ÇELİKBIÇAKif
条件替换为if: startsWith(github.ref, 'refs/tags/v')
。 - Enrico Campidoglio