【问题标题】:Let a .NET Docker image know its version using docker/build-push-action使用 docker/build-push-action 让 .NET Docker 映像知道其版本
【发布时间】:2022-08-24 19:30:46
【问题描述】:

我有一个 .NET 6.0 Web API 并希望它知道它的版本。为了发布 Docker 镜像,我使用 Github Actions docker/build-push-action@v3.1.0。我尝试使用MinVer,这完全符合我的需求,因为它使用了最新的 git 版本标签,并将自该版本以来的提交数添加为最后一位。但由于docker/build-push-action@v3.1.0 没有完整的Git 环境,Minver 无法在构建镜像时提取Git 标签的版本号。在创建 Docker 映像之前,可以使用 CLI 工具提取版本:

    - name: install minver-cli
      run: dotnet tool install --global minver-cli

    - name: get version
      run: echo \"MINVERBUILDMETADATA=$(minver --tag-prefix v --verbosity e)\" >> $GITHUB_ENV 

    - name: echo environementvariable
      run: echo ${{ env.MINVERBUILDMETADATA }}

如果 MINVERBUILDMETADATA 在构建时确实作为环境变量存在,MinVer 不会尝试提取 git 历史记录的版本,而只是使用该版本。但看起来docker/build-push-action@v3.1.0 中不存在此环境变量。

在创建 Docker 映像时,还有其他方法可以使用基于 git 标签的版本号吗?

    标签: .net docker github-actions versioning minver


    【解决方案1】:

    您的问题是 Github Actions checkout action 使用 1 作为 fetch-depth 参数的默认值,这意味着您的工作流只有最新的提交可用。如果最新标签不在此提交上,minver 将找不到它。

    解决方案是将fetch-depth 设置为0(用于获取repo 中的所有提交)或任何其他适当的值。有关详细信息,请参阅here

    【讨论】:

      猜你喜欢
      • 2021-01-01
      • 2019-07-05
      • 2022-11-11
      • 2021-12-23
      • 2019-06-26
      • 1970-01-01
      • 2021-02-26
      • 2021-08-24
      • 1970-01-01
      相关资源
      最近更新 更多