我想使用 actions/create-release@v1
从带有 GitHub 操作的工作流创建发布标签。我为标记名称和发布名称指定了相同的值,即 v${MAJOR}.${MINOR}.${PATCH}
,其中 MAJOR
、MINOR
和 PATCH
在 env
下定义在所有作业之前的 yaml 文件开头,如下所示:
env:
MAJOR: $(cat VERSION.txt | cut -d . -f 1)
MINOR: $(cat VERSION.txt | cut -d . -f 2)
PATCH: $(cat VERSION.txt | cut -d . -f 3)
这是我调用 create-release 操作的部分:
- name: Create Release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # this token is created by Actions, no need to set it up ourselves
with:
tag_name: "v${MAJOR}.${MINOR}.${PATCH}" #THIS DOESN'T CAST MAJOR, MINOR, PATCH
release_name: "v${MAJOR}.${MINOR}.${PATCH}"
这会创建一个显式为 v${MAJOR}.${MINOR}.${PATCH}
的标记名称。环境变量不会转换为其值。当我使用 v${{ env.MAJOR }}.${{ env.MINOR }}.${{ env.PATCH }}
时,我得到一个格式不正确的标签名称。
当我回显 v${MAJOR}.${MINOR}.${PATCH}
时,我得到所需的输出,类似于 v5.9.1
。
如何让标签名称使用环境变量的值?
答案 0 :(得分:0)
感谢其中一条评论,我设法让 tag_name 接收到值 v5.9.1
。我删除了 yaml 文件开头的 env
键,并使用以下内容创建了一个步骤 get_version
:
- name: Get version
id: get_version
run: |
MAJOR=$(cat VERSION.txt | cut -d . -f 1)
MINOR=$(cat VERSION.txt | cut -d . -f 2)
PATCH=$(cat VERSION.txt | cut -d . -f 3)
VERSION="v${MAJOR}.${MINOR}.${PATCH}"
echo "::set-output name=version::${VERSION}"
然后我修改了创建发布步骤:
- name: Create release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
tag_name: ${{ needs.get_version.outputs.version }}
release_name: ${{ needs.get_version.outputs.version }}
draft: false
prerelease: false