是否可以访问在Github Action中推送的当前标签?在CircleCI中,您可以使用$CIRCLE_TAG
变量来访问此值。
我的工作流程Yaml由这样的标记触发:
on:
push:
tags:
- 'v*.*.*'
并且我想在以后的工作流程中将该版本号用作文件路径。
我已将基于所选答案的最终解决方案作为下面的另一个答案:https://stackoverflow.com/a/58195087/756514
答案 0 :(得分:10)
据我所知,没有标签变量。但是,它可以从GITHUB_REF
中提取,其中包含检出的ref,例如refs/tags/v1.2.3
尝试此工作流程。它会使用提取的版本创建一个新的环境变量,您可以在以后的步骤中使用它。
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: 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@v1
- name: Set output
id: vars
run: echo ::set-output name=tag::$(echo ${GITHUB_REF:10})
- name: Check output
env:
RELEASE_VERSION: ${{ steps.vars.outputs.tag }}
run: |
echo $RELEASE_VERSION
echo ${{ steps.vars.outputs.tag }}
答案 1 :(得分:1)
这是一个工作流运行,显示GITHUB_REF
环境变量包含refs/tags/v0.0.2
:
https://github.com/rmunn/Testing/runs/242676390
我通过创建标签然后执行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'
由于该日志最终将被删除(我不知道Github Actions日志会保留多长时间,但肯定不会永远保留),因此以下是证据的屏幕截图。
答案 2 :(得分:0)
因此,感谢@peterevans的所有帮助,我设法实现了我想要的结果:
chrislennon/action-aws-cli
操作使用密钥秘密安装aws cli 以下是我使用克里斯·列侬的动作所运行的示例:
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
答案 3 :(得分:0)
对我有用的东西
run: echo "GIT_TAG=`echo $(git describe --tags --abbrev=0)`" >> $GITHUB_ENV