在 GitHub Actions 中添加基于日期的标签
Posted
技术标签:
【中文标题】在 GitHub Actions 中添加基于日期的标签【英文标题】:Bump date-based tag in GitHub Actions 【发布时间】:2022-01-17 09:08:00 【问题描述】:我正在尝试使用发布标签基于日期的 GitHub Actions 创建 project 的自动发布。我不想使用标准语义版本控制,因为这个项目是另一个使用基于日期的版本控制的项目的分支。我发现了有关在工作流程中获取日期的帖子,并且到目前为止:
name: Publish
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
publish:
name: Publish release of font files
runs-on: ubuntu-latest
steps:
- name: Create foo file
run: |
mkdir cascadios
> cascadios/foo.txt
- name: Get tag name from date
id: tag_name
run: echo "::set-output name=date::$(date +'%y%m.%d')"
- name: Zip font files
run: |
cd cascadios
zip ../cascadios-$ steps.tag_name.outputs.date .zip *
cd ..
- name: Create tag
uses: mathieudutour/github-tag-action@v6.0
id: tag_version
with:
github_token: $ github.token
custom_tag: $ steps.tag_name.outputs.date
注意:我让它创建一个空白文件来释放以节省 15 分钟的构建时间。
这很好用,直到我在一天内发布了两个版本(例如今天我正在大量测试此工作流程)。我怎样才能得到它,这样我就可以在标签中添加一个动态补丁号,这样就不会引起冲突?一个示例可能类似于 v2112.13.0
。
【问题讨论】:
【参考方案1】:您可以使用我们的版本控制库 - https://github.com/relizaio/versioning
然后您可以将版本模式声明为:YYYY.0M.0D.Micro
然后以下命令将生成一个基本版本:
docker run --rm relizaio/versioning -s YYYY.0M.0D.Micro
现在,如果您已经有一个版本,比如 2021.12.14.1
并且想要升级它,您可以这样做
docker run --rm relizaio/versioning -s YYYY.0M.0D.Micro -v 2021.12.14.1 -a bump
如果您在 12 月 14 日调用它,这将产生 2021.12.14.2
,如果您在 12 月 15 日调用此命令,则会产生 2021.12.15.0
。
【讨论】:
太酷了!我不知道“CalVer”有一个名字,所以以后要坚持下去。有没有办法格式化使得年月之间没有分隔符?即,YY0M
代表 2112
?尝试使用 YY0M
时出现 RuntimeException。
谢谢!该库目前主要依赖于分隔符,我们在自述文件中列出了支持的选项,但我想我可以添加YY0M
和YYYY0M
- 应该是微不足道的,今天晚些时候会尝试提交。
那太棒了!谢谢!
此外,虽然这可能是一个重大更改,但可能值得添加一个“静默”分隔符(不显示在输出中)或基于%
进行变量替换,就像使用 Linux date
.
现在应该支持 YYOM - 请试一试。关于静音分隔符,我会考虑,但这将是一个很大的变化。因为当我们固定版本时,目前正在积极使用分隔符 - 即您可以将一个 pin 设置为 2112.12.Micro - 它只会在不更改日期的情况下碰撞 Micro(例如 Ubuntu 版本控制,例如当他们发布补丁时)。顺便说一句,如果你想保持联系 - 随时加入 DevOps 社区 Discord - devopscommunity.org - 你总是可以在那里找到我。以上是关于在 GitHub Actions 中添加基于日期的标签的主要内容,如果未能解决你的问题,请参考以下文章
在 GitHub Actions 中使用 docker 文件