【发布时间】:2021-11-01 16:43:49
【问题描述】:
我有 npm publish github 动作,如果我的提交有标签,我想运行这个动作,否则我不想运行我的动作,因为如果我不添加任何标签我的提交然后动作运行并失败因为它尝试发布已经发布的具有相同标签的 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 文件中需要类似的东西
if(git_commit has tag) continue job else stop job;
编辑版本
我根据@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
【问题讨论】:
标签: github github-actions