在 Github 个操作中获取当前推送的标签
Get the current pushed tag in Github Actions
有没有办法访问在 Github 操作中推送的当前标签?在 CircleCI 中,您可以使用 $CIRCLE_TAG
变量访问此值。
我的工作流 yaml 被如下标签触发:
on:
push:
tags:
- 'v*.*.*'
我想在稍后的工作流程中将该版本号用作文件路径。
据我所知没有标记变量。但是,它可以从 GITHUB_REF
中提取,其中包含已签出的引用,例如refs/tags/v1.2.3
试试这个工作流程。它使用您可以在后续步骤中使用的提取版本创建一个新环境变量。
on:
push:
tags:
- 'v*.*.*'
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set env
run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
- name: Test
run: |
echo $RELEASE_VERSION
echo ${{ env.RELEASE_VERSION }}
或者,使用 set-output
:
on:
push:
tags:
- 'v*.*.*'
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set output
id: vars
run: echo ::set-output name=tag::${GITHUB_REF#refs/*/}
- name: Check output
env:
RELEASE_VERSION: ${{ steps.vars.outputs.tag }}
run: |
echo $RELEASE_VERSION
echo ${{ steps.vars.outputs.tag }}
这里的工作流程 运行 显示 GITHUB_REF
环境变量包含 refs/tags/v0.0.2
:
我 运行 通过创建标签,然后执行 git push origin v0.0.2
。
这是您在该日志中看到的工作流片段:
steps:
- uses: actions/checkout@v1
- name: Dump GitHub context
env:
GITHUB_CONTEXT: ${{ toJson(github) }}
run: echo "$GITHUB_CONTEXT"
if: runner.os != 'Windows'
- name: Show GitHub ref
run: echo "$GITHUB_REF"
if: runner.os != 'Windows'
- name: Dump event JSON
env:
EVENT_JSON_FILENAME: ${{ github.event_path }}
run: cat "$EVENT_JSON_FILENAME"
if: runner.os != 'Windows'
由于日志已被删除,这里截图为证:
感谢@peterevans 的所有帮助,我设法实现了我想要的结果:
- 标记提交
- 推送标签以触发 github 操作
- git集线器操作将 git 标记设置为环境变量
- 运行 安装和构建
- 使用
chrislennon/action-aws-cli
操作使用密匙密钥安装 aws cli
- 运行 使用标签环境变量作为目录名称将构建同步到新 S3 存储桶的命令
这是我 运行 使用 Chris Lennon 的动作的示例:
on:
push:
tags:
- 'v*.*.*'
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Set env
run: echo ::set-env name=RELEASE_VERSION::$(echo ${GITHUB_REF:10})
- name: yarn install & build
run: |
yarn install
yarn build
- uses: chrislennon/action-aws-cli@v1.1
- name: Publish to AWS S3
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }}
run: aws s3 sync dist s3://$AWS_S3_BUCKET/$RELEASE_VERSION/ --acl public-read
对我有用的:
run: echo "GIT_TAG=`echo $(git describe --tags --abbrev=0)`" >> $GITHUB_ENV
GitHub Contexts 提供 github.ref_name
。你可以这样使用它:${{github.ref_name}}
.
下面是工件文件名中的这种用法示例,可能与您询问的文件路径用法类似:
- name: Create tag artifact
uses: actions/upload-artifact@v2
with:
name: ${{github.ref_name}}
path: Release
你可以使用shell扩展:
echo "${GITHUB_REF##*/}"
有没有办法访问在 Github 操作中推送的当前标签?在 CircleCI 中,您可以使用 $CIRCLE_TAG
变量访问此值。
我的工作流 yaml 被如下标签触发:
on:
push:
tags:
- 'v*.*.*'
我想在稍后的工作流程中将该版本号用作文件路径。
据我所知没有标记变量。但是,它可以从 GITHUB_REF
中提取,其中包含已签出的引用,例如refs/tags/v1.2.3
试试这个工作流程。它使用您可以在后续步骤中使用的提取版本创建一个新环境变量。
on:
push:
tags:
- 'v*.*.*'
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set env
run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
- name: Test
run: |
echo $RELEASE_VERSION
echo ${{ env.RELEASE_VERSION }}
或者,使用 set-output
:
on:
push:
tags:
- 'v*.*.*'
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set output
id: vars
run: echo ::set-output name=tag::${GITHUB_REF#refs/*/}
- name: Check output
env:
RELEASE_VERSION: ${{ steps.vars.outputs.tag }}
run: |
echo $RELEASE_VERSION
echo ${{ steps.vars.outputs.tag }}
这里的工作流程 运行 显示 GITHUB_REF
环境变量包含 refs/tags/v0.0.2
:
我 运行 通过创建标签,然后执行 git push origin v0.0.2
。
这是您在该日志中看到的工作流片段:
steps:
- uses: actions/checkout@v1
- name: Dump GitHub context
env:
GITHUB_CONTEXT: ${{ toJson(github) }}
run: echo "$GITHUB_CONTEXT"
if: runner.os != 'Windows'
- name: Show GitHub ref
run: echo "$GITHUB_REF"
if: runner.os != 'Windows'
- name: Dump event JSON
env:
EVENT_JSON_FILENAME: ${{ github.event_path }}
run: cat "$EVENT_JSON_FILENAME"
if: runner.os != 'Windows'
由于日志已被删除,这里截图为证:
感谢@peterevans 的所有帮助,我设法实现了我想要的结果:
- 标记提交
- 推送标签以触发 github 操作
- git集线器操作将 git 标记设置为环境变量
- 运行 安装和构建
- 使用
chrislennon/action-aws-cli
操作使用密匙密钥安装 aws cli - 运行 使用标签环境变量作为目录名称将构建同步到新 S3 存储桶的命令
这是我 运行 使用 Chris Lennon 的动作的示例:
on:
push:
tags:
- 'v*.*.*'
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Set env
run: echo ::set-env name=RELEASE_VERSION::$(echo ${GITHUB_REF:10})
- name: yarn install & build
run: |
yarn install
yarn build
- uses: chrislennon/action-aws-cli@v1.1
- name: Publish to AWS S3
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }}
run: aws s3 sync dist s3://$AWS_S3_BUCKET/$RELEASE_VERSION/ --acl public-read
对我有用的:
run: echo "GIT_TAG=`echo $(git describe --tags --abbrev=0)`" >> $GITHUB_ENV
GitHub Contexts 提供 github.ref_name
。你可以这样使用它:${{github.ref_name}}
.
下面是工件文件名中的这种用法示例,可能与您询问的文件路径用法类似:
- name: Create tag artifact
uses: actions/upload-artifact@v2
with:
name: ${{github.ref_name}}
path: Release
你可以使用shell扩展:
echo "${GITHUB_REF##*/}"