Возможно ли получить текущий git SHA при сборке проекта Nix с Hydra? - PullRequest
0 голосов
/ 03 ноября 2018

Я строю проект на Haskell с Nix, с CI, выполняемым сервером Hydra. Одна вещь, которую я хотел бы сделать, это встроить git SHA в само приложение, чтобы SHA можно было включить в наши отчеты об исключениях и в качестве заголовка в HTTP-ответах (чтобы убедиться, что работает последний сервер).

В моем окружении разработчика легко извлечь SHA из каталога .git, используя пакет типа https://hackage.haskell.org/package/gitrev,, но похоже, что у Hydra нет этого каталога после клонирования (я добавил несколько шаблонов в журнал Haskell) это подтвердило, что doesDirectoryExist <PWD>.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

1 Ответ

0 голосов
/ 07 ноября 2018

По умолчанию Hydra удалит папку .git, мешая вам читать git SHA. Вы можете запретить это делать, установив NIX_PREFETCH_GIT_LEAVE_DOT_GIT на "1".

Если вы строите Hydra, используя файл release.nix в своем репо, вы добавите --set NIX_PREFETCH_GIT_LEAVE_DOT_GIT "1" после других --set s в файле: https://github.com/NixOS/hydra/blob/1c44de1779d0e315615b072049fb2d2ce333fb32/release.nix#L155-L157

...