Maison >développement back-end >Golang >Passez aux pipelines avec les interfaces Raku

Passez aux pipelines avec les interfaces Raku

Linda Hamilton
Linda Hamiltonoriginal
2024-11-07 13:52:03267parcourir

Go pipelines with Raku interfaces

Alors, disons que vous êtes un développeur Golang et que vous voulez que Go pur écrive une tâche CICD :

tâche de chat.go

package main

import "fmt"

func main() {
    fmt.Println("Hello, pipeline")
}

Go, c'est cool, mais il y a une chose qui le rend difficile à utiliser dans des scénarios de haut niveau : sa verbosité. Passer des paramètres pour exécuter des tâches et les renvoyer au scénario principal demande quelques efforts et beaucoup de code passe-partout. Ce serait bien de garder le code principal concis et facile à lire.

Le Rakulang, en revanche, est un langage parfait lorsqu'il s'agit d'entrer et de sortir des données, en raison de son extrême flexibilité et de son expressivité.

Dans cet article, je vais montrer comment intégrer des tâches Golang dans des pipelines CICD, avec un peu d'aide du framework Sparrow.


Tout d'abord, modifions notre code de tâche golang, la nouvelle version sera :

tâche de chat.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"})

}

Tout ce que nous avons fait ici, c'est utiliser le package Sparrowgo qui "convertit" la tâche Golang en tâche Sparrow avec l'avantage de transmettre et de renvoyer des données depuis et vers Rakulang.


Enfin, voici à quoi ressemblera notre pipeline, maintenant c'est la partie Raku :

#!raku

my $s = task-run ".", %(
  :message<Hello from Raku>
);

say "Result: ", $s<Message>;

Conception de haut niveau.

Maintenant, une fois que nous avons mis en place un code de validation de principe, nous pouvons avoir une idée générale de ce à quoi pourrait ressembler notre système de pipeline :

      [ Raku scenario to pass and handle data in and out ]
        \                    \                     \          
      task.go -> result -> task.go -> result -> task.go -> ...

Nous avons donc le meilleur des deux mondes : Raku pour écrire des scénarios avec moins de code et Golang pour faire tout le travail fastidieux là où des performances et une vérification de type stricte sont requises.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn