Go-Pipelines mit Raku-Schnittstellen

Linda Hamilton
Freigeben: 2024-11-07 13:52:03
Original
194 Leute haben es durchsucht

Go pipelines with Raku interfaces

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")
}

Nach dem Login kopieren

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(&params)

  // read params from pipeline
  fmt.Printf("Task params: %s\n", params.Message)

  // return results back to pipeline 
  sparrowgo.UpdateState(&Results{Message : "Hello from Go"})

}
Nach dem Login kopieren

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>;
Nach dem Login kopieren

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 -> ...
Nach dem Login kopieren

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!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!