使用 Hydra 构建 Nix 项目时是否可以获得当前的 git SHA?
Is it possible to get the current git SHA when building a Nix project with Hydra?
我正在使用 Nix 构建一个 Haskell 项目,CI 由 Hydra 服务器完成。我想做的一件事是将 git SHA 嵌入应用程序本身,这样 SHA 就可以包含在我们的异常报告中,并作为 HTTP 响应中的 header(以检查最新的服务器是 运行).
使用 https://hackage.haskell.org/package/gitrev 之类的软件包很容易从我的开发环境中的 .git
目录中提取 SHA,但似乎 Hydra 在克隆后不存在该目录(我添加了一些模板 Haskell 日志记录确认 doesDirectoryExist <PWD>.git
是错误的)。
有没有办法从 Hydra 中获取 git SHA?是通过包含 git 目录以便我自己获取 SHA,还是通过其他方式?
Hydra 版本:SNAPSHOT-b11789f39993c614e53da39c29711b63cd266291(使用 nix-2.0.4)
编辑:我还通过 sshed 进入工作服务器并确认没有 .git
目录存在,其中正在完成构建:
[maximiliantagher@ip-10-0-2-46:/tmp]$ sudo ls -a nix-build-mercury-web-backend-0.0.0.drv-0/szjq4m1zklbydw7wrz7dbbxl9ndw0d0f-source
. app db Dockerfile Gemfile.lock .ghcid Makefile one-off-task README.md shell.nix stack.yaml
.. config .dir-locals.el docs gemset.nix .gitignore mercury-web-backend.cabal package.yaml release.nix sql-scripts templates
API-Spec data dist Gemfile .ghci .hlint.yaml .nix Rakefile Setup src test
默认情况下,Hydra 将删除 .git
文件夹,阻止您读取 git SHA。您可以通过将 NIX_PREFETCH_GIT_LEAVE_DOT_GIT
设置为 "1"
来告诉它不要这样做。
如果您使用其回购中的 release.nix 文件构建 Hydra,您将在文件中的其他 --set
之后添加 --set NIX_PREFETCH_GIT_LEAVE_DOT_GIT "1"
:https://github.com/NixOS/hydra/blob/1c44de1779d0e315615b072049fb2d2ce333fb32/release.nix#L155-L157
我正在使用 Nix 构建一个 Haskell 项目,CI 由 Hydra 服务器完成。我想做的一件事是将 git SHA 嵌入应用程序本身,这样 SHA 就可以包含在我们的异常报告中,并作为 HTTP 响应中的 header(以检查最新的服务器是 运行).
使用 https://hackage.haskell.org/package/gitrev 之类的软件包很容易从我的开发环境中的 .git
目录中提取 SHA,但似乎 Hydra 在克隆后不存在该目录(我添加了一些模板 Haskell 日志记录确认 doesDirectoryExist <PWD>.git
是错误的)。
有没有办法从 Hydra 中获取 git SHA?是通过包含 git 目录以便我自己获取 SHA,还是通过其他方式?
Hydra 版本:SNAPSHOT-b11789f39993c614e53da39c29711b63cd266291(使用 nix-2.0.4)
编辑:我还通过 sshed 进入工作服务器并确认没有 .git
目录存在,其中正在完成构建:
[maximiliantagher@ip-10-0-2-46:/tmp]$ sudo ls -a nix-build-mercury-web-backend-0.0.0.drv-0/szjq4m1zklbydw7wrz7dbbxl9ndw0d0f-source
. app db Dockerfile Gemfile.lock .ghcid Makefile one-off-task README.md shell.nix stack.yaml
.. config .dir-locals.el docs gemset.nix .gitignore mercury-web-backend.cabal package.yaml release.nix sql-scripts templates
API-Spec data dist Gemfile .ghci .hlint.yaml .nix Rakefile Setup src test
默认情况下,Hydra 将删除 .git
文件夹,阻止您读取 git SHA。您可以通过将 NIX_PREFETCH_GIT_LEAVE_DOT_GIT
设置为 "1"
来告诉它不要这样做。
如果您使用其回购中的 release.nix 文件构建 Hydra,您将在文件中的其他 --set
之后添加 --set NIX_PREFETCH_GIT_LEAVE_DOT_GIT "1"
:https://github.com/NixOS/hydra/blob/1c44de1779d0e315615b072049fb2d2ce333fb32/release.nix#L155-L157