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

Gast #6728131
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.
Gast #6728302
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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.