[Hackason] À propos de la création d'un outil pouvant être imprimé sur Raspberry Pi [Outil pratique]

introduction

Dans le développement récent d'applications Web, CI (intégration continue) et CD (livraison continue) sont importants, et si vous poussez vers un référentiel distant, l'environnement de production sera mis à jour automatiquement, ce qui est pratique.

Cependant, si l'environnement de production est un terminal local, il n'est pas possible d'avoir l'outil CI sur CD, et vous devez retirer la modification à distance à chaque fois, donc c'est ** gênant **

En l'absence de temps comme un hackathon Si l'environnement de production est RaspberryPi, je souhaite réduire le temps et l'effort de saisie des commandes, et encore moins le développement avec RaspberryPi.

J'ai donc créé ** CanDyPi **, un outil de CD qui tire à chaque fois que le référentiel distant est mis à jour si vous le mettez dans RaspberryPi!

GitHub PyPI

~~ Cela vous donnera certainement la plus haute distinction l'année prochaine ~~

CanDyPi

CanDyPi is a Continuous Delivery tool for raspberry Pi.

candypi_structure.png.001.png

Facile à faire. Utilisez la fonction webhook de GitHub pour accrocher un webhook à un point de terminaison ngrok transféré depuis un Raspberry Pi. Lorsque CanDyPi reçoit le message de mise à jour du référentiel, exécutez la commande pull pour mettre à jour vers la dernière source.

CanDyPi est écrit en python et utilise flask pour le serveur et git python pour les opérations git.

Comment utiliser

Préparation préalable

--python 3 série

procédure

Peut être utilisé en 4 étapes

1. Raspeye, connexion SSH git

Si vous ne le définissez pas sur SSH, vous devrez entrer le mot de passe à chaque fois que vous tirez, de sorte que vous ne serez pas libéré de l'opération de tarte à la râpe ...

Les articles ici seront utiles. Procédure de connexion ssh avec GitHub ~ À partir de la génération de clé publique / clé privée ~

2. Installez et exécutez CanDyPi avec Raspeye

Vous pouvez l'installer avec pip. ㊟ Veuillez installer et exécuter avec la série python3

$ pip install candypi

Facile à exécuter! Donnez le chemin du référentiel que vous voulez CD comme argument. (Par défaut, il démarre sur le port 50000)

$ candypi /Users/tiwasa/sample_project

3. Commencez ngrok avec une tarte à la râpe

Spécifiez le port sur lequel candypi a été démarré et démarrez ngrok.

$ ngrok http 50000

ngrok by                                      (Ctrl+C to quit)

Session Status                online                                            
Account                       XXXXXXXX (Plan: Free)                             
Version                       2.2.8                                             
Region                        United States (us)                                
Web Interface                 http://127.0.0.1:4040                             
Forwarding                    http://XXXXXXXX.ngrok.io -> localhost:50000        
Forwarding                    https://XXXXXXXX.ngrok.io -> localhost:50000 

4. Dans GitHub, les paramètres des webHooks

Enregistrez le webhook dans le référentiel que vous souhaitez CD. Dans Paramètres-> Webhooks sur GitHub, ajoutez Forwarding https: //XXXXXXXX.ngrok.io-> localhost: 50000 de ngrok à l'URL de charge utile de add webhook et ajoutez webhook.

(D'autres éléments peuvent être laissés par défaut.)

5. Achèvement

Lorsqu'une mise à jour se produit dans la branche principale du référentiel que vous souhaitez CD, la commande pull s'exécutera dans le référentiel local de Raspai pour la mettre à jour.

à la fin

Je l'ai fait à la fin de l'année, donc je ne l'ai pas encore mis en pratique. N'y a-t-il pas un hackathon abordable?

Si vous vous trouvez en train de l'utiliser, veuillez l'écrire dans le numéro GitHub ou dans la section commentaires de cette page.

Au fait, si vous pouvez placer votre PC de développement sur le même réseau local que Raspai, je pense que le développement à distance vscode est plus pratique. De plus, selon le lieu, il peut être placé sur un autre LAN, donc la valeur d'existence de CanDyPi en vaut également la peine.

···Quand

... je veux penser

Recommended Posts

[Hackason] À propos de la création d'un outil pouvant être imprimé sur Raspberry Pi [Outil pratique]
[Django] À propos des utilisateurs pouvant être utilisés sur un modèle
Présentation de la commande "Glances", un outil de surveillance compréhensible en un coup d'œil, sur Mac
Notes pour créer des figures pouvant être publiées dans des revues avec matplotlib
Déplacement de Raspberry Pi à distance afin qu'il puisse être connecté à une LED avec Python
J'ai essayé de créer un chargeur de démarrage x86 qui peut démarrer vmlinux avec Rust
Construire un environnement Django sur Raspai (MySQL)
Essayez d'utiliser le code QR avec Raspberry Pi
Construire un environnement de développement Python sur Raspberry Pi
Serveur de partage de fichiers réalisé avec Raspberry Pi pouvant être utilisé pour le travail à distance
Cours de Deep Learning pouvant être écrasé sur place
Un mémorandum lors de la réalisation d'une caméra de surveillance avec Raspeye
[Atcoder] [C ++] J'ai fait un outil d'automatisation de test qui peut être utilisé pendant le concours
pigpio sur Raspberry pi
Cython sur Raspberry Pi
À partir d'un livre que les programmeurs peuvent apprendre ... (Python): À propos du tri
Utilisez python sur Raspberry Pi 3 pour détecter la "température (en utilisant un convertisseur A / N)"!
SSD 1306 OLED peut être utilisé avec Raspeye + python (Remarque)
Écoutez un roman qui sera sur Amazon Polly
Implémentez un thread qui peut être suspendu en exploitant le rendement
Faisons un diagramme sur lequel on peut cliquer avec IPython
[Python] Dessinez des données d'altitude sur une surface sphérique avec Plotly et dessinez un globe qui peut être tourné en rond et en rond
À propos du fait que le résumé de la torche peut être vraiment utilisé lors de la construction d'un modèle avec Pytorch
Utilisez l'écran LCD graphique comme un écran LCD de caractères pouvant également afficher des caractères chinois sur le Rasberry Pi
L'histoire de la création d'un outil qui fonctionne sur Mac et Windows sur le site de développement de jeux
À propos de l'erreur que j'ai rencontrée en essayant d'utiliser Adafruit_DHT à partir de Python sur Raspberry Pi