Можно ли получить текущий git SHA при создании проекта Nix с помощью Hydra?

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

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

Есть ли способ как-то получить git SHA от Hydra? Либо включив каталог git, чтобы я мог сам получить SHA, либо каким-то другим способом?

Версия Hydra: SNAPSHOT-b11789f39993c614e53da39c29711b63cd266291 (с использованием nix-2.0.4)

Редактировать: я также подключился к рабочему серверу и подтвердил, что нет каталога .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

person MaxGabriel    schedule 03.11.2018    source источник


Ответы (1)


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

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

person MaxGabriel    schedule 07.11.2018
comment
Хм, я хотел бы выяснить, как это сделать, не перестраивая Гидру. Я пытался добавить extraEnv = { NIX_PREFETCH_GIT_LEAVE_DOT_GIT = "1"; };, но это не сработало. - person MaxGabriel; 04.03.2019