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

Passez aux pipelines avec les interfaces Raku

Linda Hamilton
Libérer: 2024-11-07 13:52:03
original
290 Les gens l'ont consulté

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

Copier après la connexion

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

}
Copier après la connexion

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>;
Copier après la connexion

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 -> ...
Copier après la connexion

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!

source:dev.to
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal