Déploiement automatique de fonctions sans serveur depuis Git

image

En utilisant le bot gitlab comme exemple, je montrerai comment automatiser le processus de publication des fonctions sans serveur en les mettant automatiquement à jour à partir du référentiel git. On passe des jeux au développement pratique sur serveur sans serveur.

Qu'est-ce qu'un bot gitlab?


Imaginez que vous ayez besoin d'automatiser le processus de rĂ©action pour crĂ©er des tĂąches / bugs dans votre tracker, par exemple Gitlab (Issues) ou Jira. Vous devrez peut-ĂȘtre ajouter automatiquement un artiste en fonction des balises, dĂ©placer la tĂąche vers un jalon spĂ©cifique, ajouter un commentaire ou simplement fermer un bug indĂ©sirable. Tout cela se fait trĂšs facilement en utilisant des fonctions sans serveur. Par exemple, nous ajouterons un commentaire (note dans la terminologie Gitlab) Ă  une tĂąche nouvellement créée (problĂšme).

Et comme le bot peut changer frĂ©quemment, nous automatiserons sa publication en synchronisant automatiquement la fonction avec le rĂ©fĂ©rentiel git oĂč il se trouve.

Réglage de l'environnement


Nous devons d'abord créer un projet sur Gitlab. Si vous n'avez pas de compte Gitlab, vous pouvez en créer un ici . Vous pouvez créer un nouveau projet public, par exemple, en forçant mon projet https://gitlab.com/bbelky/gitbotswf en cliquant sur le bouton Fork dans le coin supérieur droit.

image

Pour pouvoir modifier le code du bot, vous devez le cloner localement. En fait, pour les besoins de ce guide, nous pouvons le faire en ligne, mais nous serons plus proches de la vie réelle. Ouvrez votre terminal et clonez le référentiel git. Le lien se trouve dans le coin supérieur droit de votre projet Clone > Clone with HTTPS . Enregistrez-le comme URL Gitlab , il nous sera toujours utile.

git clone <link to your repo> cd gitbotswf/ ls README.md main.go 

Il existe un fichier main.go dans le référentiel cloné. Ceci est notre bot écrit en golang. Le bot est trÚs simple: il reçoit un webhook de Gitlab sur l'événement de la création d'une nouvelle tùche (Issue) et ajoute un commentaire (note dans la terminologie Gitlab) à la tùche créée. Il y a des commentaires dans main.go pour vous aider à comprendre comment fonctionne le bot. Nous n'y reviendrons pas plus en détail.

Ne fermez pas le terminal - un peu plus tard, nous devrons modifier le fichier main.go.

Nous devons également créer l'API Gitlab Token pour accéder à l'API hitlab.

  1. Accédez à votre profil Gitlab> ParamÚtres > Jetons d'accÚs.
  2. Créez un nouveau jeton avec une portée API.
  3. Copiez-le et enregistrez-le sous GITLABTOKEN .

Le bot


Il est temps de crĂ©er le bot lui-mĂȘme. CrĂ©ons une fonction sans serveur avec le code de notre bot basĂ© sur la plateforme sans serveur Swifty . Si vous n'avez pas encore de compte sur Rusonyx Swifty, il est temps d'en crĂ©er un . Nous voulons automatiser le processus de dĂ©ploiement d'une nouvelle fonction, alors faisons la sĂ©quence suivante: connectez notre rĂ©fĂ©rentiel git, crĂ©ez une fonction basĂ©e sur le code du git, et placez le token api gitlab dans un magasin sĂ©curisĂ©.

image

  1. Connectez-vous à Swifty et sélectionnez Référentiels
  2. Cliquez sur Attach Repo , sélectionnez le type d' URL Git et collez votre URL Gitlab .
  3. N'oubliez pas de sélectionner automatiquement l'option Référentiel miroir et cliquez sur Terminé.

image

Maintenant, Swifty se synchronisera automatiquement avec votre rĂ©fĂ©rentiel (faites git pull) toutes les 30 minutes. CrĂ©ez maintenant la fonction elle-mĂȘme:

  1. Accédez à l'onglet Fonctions > Nouvelle fonction > Du référentiel (modÚles) .
  2. Sélectionnez le référentiel nouvellement ajouté, par exemple, gitlab.com/bbelky/gitbotswf.git . Vous voyez maintenant les fichiers de votre référentiel.
  3. Sélectionnez le fichier main.go , cliquez sur Suivant.
  4. Sélectionnez l'option Synchroniser avec le référentiel , entrez le nom de la fonction gitbotswf et cliquez sur Créer .

image

Maintenant, nous avons besoin d'un déclencheur API HTTP, lorsqu'elle est appelée, la fonction se déclenche:

  1. Accédez à l'onglet Déclencheurs > Ajouter un déclencheur > API REST (URL) .
  2. Copiez l'URL résultante et enregistrez-la sous BOT_URL .

image

TrÚs bien, nous avons maintenant un référentiel et une fonction qui se synchronise automatiquement avec lui. Ajoutez maintenant notre jeton API Gitlab aux comptes Swifty - un référentiel sécurisé et crypté pour les mots de passe et les jetons.

  1. Accédez à Comptes > Créer un compte .
  2. Sélectionnez un type générique .
  3. Nommez GITLABTOKEN et copiez votre jeton. Enregistrez.

image

Ajoutez maintenant le jeton Ă  la fonction:

  1. Accédez à Fonctions > Fonction gitbotswf > AccÚs et cliquez sur Ajouter .
  2. Sélectionnez le type Comptes , GITLABTOKEN et cliquez sur Ajouter .

Activer le webhook


À la derniĂšre Ă©tape, nous devons crĂ©er un webhook sur Gitlab qui se dĂ©clenchera chaque fois qu'un nouveau problĂšme est créé. Passons Ă  Gitlab.

  1. Sélectionnez votre projet> ParamÚtres > Intégrations .
  2. Ajoutez le BOT_URL précédemment enregistré dans le champ URL .
  3. Cochez la case en regard des événements de problÚmes et cliquez sur Ajouter un webhook .

Test


Passons au projet sur Gitlab, dans l'onglet ProblÚmes et créons un nouveau problÚme . Vérifiez les commentaires. Ouais! Si tout a bien fonctionné, nous verrons le commentaire "Merci d'avoir signalé un nouveau problÚme!" . Si une erreur s'est produite quelque part, demandez-nous ici ou posez une question dans un emplacement .

Mise à jour et libération automatique du bot


Et si nous devons mettre à jour notre bot? Grùce à l'intégration avec git, il vous suffit de mettre à jour votre code (changez le texte de la note par exemple), lancez le code dans Gitlab et Swifty mettra automatiquement à jour votre fonction!

Alors, ouvrez le fichier main.go dans le terminal et changez la variable note :

 note := "Comments%20changed!" 

Mettre Ă  jour git:

 git add * git commit -m "changes" git push origin master 

Allez sans serveur!

Source: https://habr.com/ru/post/fr439920/


All Articles