Forum: PC-Programmierung Frage zu gitlab-ci.yml: Hintergrundprozess startbar mit "&"?


von Isabella (Gast)


Lesenswert?

Ich versuche eine .gitlab-cy.yml Datei zu erweitern.
Ich möchte eine Logging-Möglichkeit einbauen:
1
  script:
2
    - tail -f /dev/ttyUSB0 > serial.log &
3
    - echo "I am here"

Wenn ich dies (mit allen anderem rund herum) laufen lassen,
dann gibt mir gitlab "I am here" aus, aber der das Script kommt
nicht zum Ende. Ich bekomme endlos 3 "laufende Punkte" (Sanduhr).

Ich hatte es bereits mir einem after_script:
und kill-Befehl versucht, aber bringt auch nichts, vielleicht auch gar 
nicht nötig.

Hat schon mal jemand au gitlab einen Hintergrundprozess erfolgreich 
laufen lassen? Muss ich obiges irgendwie anders realisieren?
Oder geht so etwas grundsätzlich nicht?

Im Endeffekt würde ich das Logging am Anfang einschalten wollen
und am Ende wieder aus.

von Heiner (Gast)


Lesenswert?

Isabella schrieb:
> Wenn ich dies (mit allen anderem rund herum) laufen lassen,
> dann gibt mir gitlab "I am here" aus, aber der das Script kommt
> nicht zum Ende. Ich bekomme endlos 3 "laufende Punkte" (Sanduhr).

... weil die shell weiterläuft.

Isabella schrieb:
> Ich hatte es bereits mir einem after_script:
> und kill-Befehl versucht, aber bringt auch nichts

... weil after_script erstens in einer eigenen shell ausgeführt wird und 
zweitens weder bei einem Timeout noch bei Abbruch aufgerufen wird. RTFM:

https://docs.gitlab.com/ee/ci/yaml/#after_script

Isabella schrieb:
> Muss ich obiges irgendwie anders realisieren?
> Oder geht so etwas grundsätzlich nicht?

Soll das Logging direkt nach dem echo wieder abgeschaltet werden? Dann 
einfach
1
- kill $!
als dritte Zeile in den script-block.

Ob man in dieser Situation ein richtiges detachment hinbekommt oder ob 
der runner das nicht zulässt, weiß ich nicht. Es käme aber auf einen 
Versuch an: Entweder heißt es dann
1
- tail -f /dev/ttyUSB0 > serial.log & disown
oder
1
- (tail -f /dev/ttyUSB0 > serial.log &)
oder
1
- setsid tail -f /dev/ttyUSB0 > serial.log
oder ähnliches.

Allgemeiner Tipp: Mach' das, was du gerne hättest, erst nur in der 
shell. Wenn es da klappt und du verstanden hast, wie und warum das so 
funktioniert, kann man darüber nachdenken, wie man das gitlab erklärt. 
Eigentlich sind daemons dort nämlich nicht vorgesehen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.