Nehmen wir an, Sie sind Golang-Entwickler und möchten einfach eine CICD-Aufgabe schreiben:
cat task.go
package main import "fmt" func main() { fmt.Println("Hello, pipeline") }
Go ist cool, aber es gibt eine Sache, die die Verwendung in High-Level-Szenarien erschwert – seine Ausführlichkeit. Die Übergabe von Parametern an Go-Aufgaben und deren Rückkehr zum Hauptszenario erfordert einige Anstrengungen und viel Boilerplate-Code. Es wäre gut, den Hauptcode prägnant und leicht lesbar zu halten.
Rakulang hingegen ist aufgrund seiner extremen Flexibilität und Ausdruckskraft die perfekte Sprache, wenn es darum geht, Daten ein- und auszulesen.
In diesem Beitrag werde ich zeigen, wie man Golang-Aufgaben mit ein wenig Hilfe des Sparrow-Frameworks in CICD-Pipelines einbettet.
Ändern wir zunächst unseren Golang-Aufgabencode, die neue Version wird sein:
cat task.go
package main import ( "fmt" "github.com/melezhik/sparrowgo" ) func main() { type Params struct { Message string } type Result struct { Message string } var params Params // sparrowgo takes care about passing // input parameters from Raku to Go sparrowgo.Config(¶ms) // read params from pipeline fmt.Printf("Task params: %s\n", params.Message) // return results back to pipeline sparrowgo.UpdateState(&Results{Message : "Hello from Go"}) }
Alles, was wir hier getan haben, ist die Verwendung des Sparrowgo-Pakets, das Golang-Aufgaben in Sparrow-Aufgaben „umwandelt“, mit den Vorteilen der Weitergabe und Rückgabe von Daten von und an Rakulang.
Endlich so wird unsere Pipeline aussehen, jetzt kommt der Raku-Teil:
#!raku my $s = task-run ".", %( :message<Hello from Raku> ); say "Result: ", $s<Message>;
Hochwertiges Design.
Sobald wir nun einen Proof-of-Concept-Code haben, können wir uns ein allgemeines Bild davon machen, wie unser Pipeline-System aussehen könnte:
[ Raku scenario to pass and handle data in and out ] \ \ \ task.go -> result -> task.go -> result -> task.go -> ...
Wir haben also das Beste aus zwei Welten – Raku, um Szenarien mit weniger Code zu schreiben, und Golang, um alle wichtigen Aufgaben zu erledigen, bei denen Leistung und strenge Typprüfung erforderlich sind.
Das obige ist der detaillierte Inhalt vonGo-Pipelines mit Raku-Schnittstellen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!