Co nie działało
Concourse to otwarty system CI/CD, w którym zadania opisuje się w plikach YAML. W takim pliku można używać zmiennych w zapisie ((nazwa)), na przykład po to, żeby limit pamięci kontenera przychodził z konfiguracji potoku zamiast być wpisany na sztywno.
Kłopot pojawiał się w polach, które nie są tekstem. Plik zadania był najpierw parsowany do struktury, a zmienne podstawiano dopiero później. Przy memory: ((container_mem_limit)) parser widział tekst tam, gdzie oczekiwał liczby, i zadanie kończyło się błędem „cpu/memory limit must be an integer”. Zgłoszenie #5765 opisujące ten problem było otwarte od czerwca 2020 roku.
Co zmieniliśmy
Źródło konfiguracji z pliku potrafi teraz oddać surową treść pliku, zanim zostanie sparsowana. Zmienne są podstawiane w tej treści, a parsowanie odbywa się raz, już na wyniku. Ten wczesny przebieg działa dla każdego zadania z pliku, a nie tylko wtedy, gdy w kroku jest ustawione vars:. Przy okazji komunikat błędu podaje nazwę pliku, którego nie udało się sparsować, także po podstawieniu zmiennych.
Jak to sprawdziliśmy
Nowe testy podają plik zadania z cpu: ((container_cpu_limit)) i memory: ((container_mem_limit)) oraz zmienne 512 i 5gb, a potem sprawdzają, że limity są ustawione na 512 i 5 GiB. Drugi przypadek sprawdza, że plik, który po podstawieniu wciąż jest niepoprawny, daje błąd z jego nazwą.
Efekt
Zmianę scalono 5 października 2026. Zmienne w container_limits i innych polach liczbowych pliku zadania działają tak, jak opisuje dokumentacja.