Zaczynam od phantomjs z określonymi argumentami jako częścią mojej pracy.Zatrzymywanie usługi uruchomionej w tle (phantomjs) w gitlab-ci
To działa na niestandardowym serwerze gitlab/gitlab-ci, obecnie nie używam kontenerów, chyba to by to uprościło.
Zaczynam phantomjs tak:
- "timeout 300 phantomjs --ssl-protocol=any --ignore-ssl-errors=true vendor/jcalderonzumba/gastonjs/src/Client/main.js 8510 1024 768 2>&1 >> /tmp/gastonjs.log &"
Potem biegnę moich testów behat, a następnie ja znowu zatrzymanie tego procesu:
- "pkill -f 'src/Client/main.js' || true"
Problem jest wtedy, gdy test behat nie powiedzie się, to nie wykona pkill i test-run utknął czekając na phantomjs, aby zakończyć. Dodałem już limit czasu 300, ale oznacza to, że wciąż oczekuję około 2 minut po niepowodzeniu i w końcu go zatrzymam, dopóki test będzie nadal działał, gdy będą wystarczająco powolne.
Nie znalazłem sposobu uruchomienia jakiegoś polecenia po uruchomieniu/czyszczenia, które również działa w przypadku niepowodzenia.
Czy jest lepszy sposób to zrobić? Czy mogę uruchomić phantomjs w taki sposób, że gitlab-ci nie dba o to, że nadal działa? nohup może?
Dzięki za odpowiedzi, ale jakoś to nie działa dla mnie, to nigdy nie rozpoczyna się po skrypcie, aż proces phantomjs biegnie. Próbowałem nohup, niczego nie zmieniłem. Natychmiast po przeprowadzeniu procesu, również ręcznie, kontynuuje, a następnie uruchamia skrypty końcowe, ale nie wcześniej. – Berdir
możesz uruchomić usługę w tle za pomocą nohup? –
właśnie odradza proces w nowym wątku z '&' zobacz https: //gist.github.com/rufinus/9ee8f04fc1f9248eeb0c73ad5360a006 # file-gitlab-ci-yml-L7 na przykład – Rufinus