如果标记是在v被推到分支的情况下启动的,那么就会发布一个版本。问题是:在发布之前,人们可能会忘记使用这个版本。因此,需要检查标记版本与代码中的版本之间的相等性。
代码中的版本可以由poetry version -s获取,然后需要在版本字符串的前面添加一个字母v (请参见下面)
VERSION_CODE = "v""$(poetry version -s)"
git标记的版本可以访问,如下所示
VERSION_TAG = $(git describe --exact-match --tags $(git log -n1 --pretty='%h'))
问题:如何检查VERSION_CODE和VERSION_TAG的相等性,以便如果它们的值被分配,管道就会释放?
我现在拥有的代码如下所示。步骤if: VERSION_CODE != VERSION_TAG有一条错误消息,即是一个未识别的命名值:“VERSION_CODE”。位于表达式中的位置1: VERSION_CODE
name: Release By Tag
on:
push:
tags:
- "v*" # Push events to matching v*, i.e. v1.0, v20.15.10
jobs:
version-check:
name: check version
runs-on: ubuntu-latest
steps:
... set up environment, ex install poetry
- name: try to fail version check
run: |
VERSION_CODE = "v""$(poetry version -s)"
VERSION_TAG = $(git describe --exact-match --tags $(git log -n1 --pretty='%h')
if: VERSION_CODE != VERSION_TAG
run: exit 1
- name: version is correct
run: echo "version tag is alined"
... make a release发布于 2022-02-08 20:42:34
您只能将变量传递到下一步--在执行步骤之前进行if检查,因此无法在发布时访问它。另外,exit 1不是正确的模式,您需要生成变量,传递它们并在接下来的步骤中使用它们。
解决办法之一是:
name: Release By Tag
on:
push:
tags:
- "v*" # Push events to matching v*, i.e. v1.0, v20.15.10
jobs:
version-check:
name: check version
runs-on: ubuntu-latest
steps:
... set up environment, ex install poetry
- name: try to fail version check
id: version_info
run: |
VERSION_CODE="v""$(poetry version -s)"
VERSION_TAG=$(git describe --exact-match --tags $(git log -n1 --pretty='%h')
echo "::set-output name=VERSION_CODE::$VERSION_CODE"
echo "::set-output name=VERSION_TAG::$VERSION_TAG"
- name: version is correct
if: ${{ steps.version_info.outputs.VERSION_CODE == steps.version_info.outputs.VERSION_TAG }}
run: echo "version tag is alined"
... make a release您还可以检查这些值在第一步中是否匹配,并将布尔值传递到下一步--这取决于您的需要。
https://stackoverflow.com/questions/71038610
复制相似问题