使用环境变量的标签名称

时间:2021-05-07 13:06:22

标签: github release github-actions release-management

我想使用 actions/create-release@v1 从带有 GitHub 操作的工作流创建发布标签。我为标记名称和发布名称指定了相同的值,即 v${MAJOR}.${MINOR}.${PATCH},其中 MAJORMINORPATCHenv 下定义在所有作业之前的 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

如何让标签名称使用环境变量的值?

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
相关问题