如何在GitHub Actions的env指令中生成每次运行(含重跑)唯一的字符串
你不需要使用第三方Action或在steps中额外处理,GitHub Actions内置的表达式函数和上下文可以直接在env指令中使用,以下是3种可行实现:
方案1:使用内置运行标识(最稳定,无重复风险)
github.run_id是当前工作流运行的全局唯一ID,同一工作流重跑时github.run_attempt会自动递增,两者拼接可保证每次运行(含重跑)的唯一性。
jobs: build-test-deploy: runs-on: ubuntu-latest env: FOO : foobar-${{ github.run_id }}-${{ github.run_attempt }} BAR : BAZ
方案2:使用Unix时间戳
直接调用内置toUnixTime()和now()函数获取当前时间的秒级时间戳,只要两次运行间隔不小于1秒就不会重复,符合绝大多数场景需求。
jobs: build-test-deploy: runs-on: ubuntu-latest env: FOO : foobar-${{ toUnixTime(now()) }} BAR : BAZ
方案3:使用随机UUID
调用内置randomUUID()函数直接生成UUIDv4随机字符串,全局唯一性极高,不需要依赖运行标识或时间。
jobs: build-test-deploy: runs-on: ubuntu-latest env: FOO : foobar-${{ randomUUID() }} BAR : BAZ
以上三个方案的表达式都是在Job初始化阶段直接计算,完全不需要额外步骤或第三方依赖。
内容的提问来源于stack exchange,提问作者Jivan
相关产品推荐
相关产品推荐

