fix(ci): wyrocznia domów — wbuduj pliki w obraz zamiast montować #61
Reference in New Issue
Block a user
Delete Branch "fix/oracle-ci-mount"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Krok padał na
python: can't open file '/oracle/run.py'.Przyczyna
Ta sama pułapka, którą złapano już wcześniej przy
-pi localhoście (jest o niejkomentarz w tym samym pliku): job Gitea Actions sam działa w kontenerze, więc
docker run -v $PWD/...demon rozwiązuje na hoście, gdzie tej ścieżki nie ma.Docker nie zgłasza wtedy błędu — po cichu tworzy pusty katalog, przez co skrypt
„znika".
Poprawka
Zamiast montowania wbudowujemy pliki w pomocniczy obraz (
FROM engine-swisseph:ci+COPY). Kontekst builda jest strumieniowany do demona,więc działa niezależnie od tego, gdzie ten demon stoi. Obraz kasujemy po użyciu.
Przy okazji:
.dockerignoreDocker nie czyta
.gitignore, więc do demona poleciałby cały korzeń repo —z lokalnym wirtualenvem (344 MB) i jądrami efemeryd włącznie. Kontekst spada
z 382 MB do 5,9 MB, co na runnerze z historią „no space left on device" nie jest
kosmetyką. Plik dotyczy tylko buildów z korzenia repo — obrazy usług mają własne
konteksty i go nie widzą.
Weryfikacja bez dockera
Nie mam tu demona, więc sprawdziłem to, co się da, zamiast zgadywać drugi raz:
dokładny tekst, jaki dostanie powłoka po dedentacji YAML (terminator heredoca
w kolumnie 0 — krytyczne), istnienie ścieżek
COPYi to, że reguły.dockerignorenie wycinają plików potrzebnych do uruchomienia. Wzorzec(
<<'…'wrun: |) jest ten sam, co w działającym smoke teście obok.