Peut-être plus récemment, une fonctionnalité appelée Actions GitHub a été ajoutée. C'est celui qui peut déclencher les actions spécifiées (exécution du script shell) pour l'événement spécifié. Par exemple, lorsque le PR vers la branche dev est fusionné, il est construit et poussé vers la branche dev-pages, qui est une fonction pour ce que l'on appelle CI / CD.
Cette fois, nous avons participé à la version Hokkaido du site de contre-mesures COVID-19, qui est actuellement un grand pas, et développé en utilisant cette fonction. En prenant cela comme exemple, est-il possible de faire de GitHub un pseudo serveur API comme le titre l'indique? Je ferai une proposition dans cet article.
https://github.com/Kanahiro/covid19hokkaido_scraping Il s'agit d'un script créé pour prendre en charge les données au format JSON qui sont la source de visualisation lors du développement du site de contre-mesures mentionné ci-dessus. Lorsqu'il est exécuté (dans la version à ce moment-là), il a pour fonction de patrouiller sur le site Web de la route, de lire le fichier CSV statique contenu dans la branche et de sortir le fichier json (en cours de lecture du fichier CSV externe). ). Au départ, pour le moment, je devais exécuter manuellement main.py avec le script que j'avais écrit. À ce moment-là, un membre de JUST Road IT a suggéré "Pouvez-vous faire la planification?" À ce stade, je ne savais pas si je pouvais le faire, donc je n'ai pas répondu pour le moment, mais quand j'ai secrètement enquêté sur la méthode de mise en œuvre, c'était étonnamment facile, alors je l'ai implémentée (Actions is God).
Site de référence: Utiliser les actions GitHub comme planificateur
Les actions sont définies dans le fichier yaml. Définit le moment «activé» pour tirer en premier. Pour une utilisation CI / CD normale, il peut être déclenché en poussant vers une branche spécifique. Cependant, en écrivant comme suit, il peut être exécuté toutes les 15 minutes.
on:
schedule:
- cron: '*/15 * * * *'
#(C'est un secret ce cron? Qu'est-ce que c'est?)
Vous pouvez maintenant planifier. Ensuite, exécutez le script ci-dessus toutes les 15 minutes et poussez les données json générées dans une autre branche! J'ai donc décidé de planifier avec le fichier yaml suivant.
name: Python application
on:
schedule:
- cron: '*/15 * * * *'
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python 3.8
uses: actions/setup-python@v1
with:
python-version: 3.8
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Run script
run: |
python main.py #Exécutez le script principal
- name: deploy
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./data
publish_branch: gh-pages
Je l'ai écrit en référence au fichier yaml d'une autre personne, alors j'ai pleuré quand on m'a dit de l'écrire avec une gratte complète. J'ai trouvé incroyable que vous puissiez installer la dépendance avec pip. Lorsque main.py est exécuté, il génère des fichiers json dans le répertoire de données du même répertoire. Après avoir traité le script, transférez les fichiers du répertoire data vers gh-pages (autorisé par secrets.GITHUB_TOKEN) Ainsi, gh-pages contient désormais des fichiers json qui sont générés une fois toutes les 15 minutes.
J'ai l'impression que le titre est frauduleux, mais le pseudo serveur d'API que je propose est complet. https://raw.githubusercontent.com/Kanahiro/covid19hokkaido_scraping/gh-pages/patients.json Il s'agit d'un fichier json que Actions génère automatiquement toutes les 15 minutes sur le référentiel de scripts ci-dessus. Ce fichier ne semble pas être soumis aux limites CORS (bien que je ne l'ai pas encore vérifié moi-même), il peut donc être lu directement à la réception. En d'autres termes, si vous obtenez ce fichier et "colorez" les éléments du recto, vous pouvez en fait le traiter comme un serveur API!
C'était une proposition. Je pense que c'est efficace quand il n'y a pas de ressource pour construire un serveur API séparé, c'est redondant ou c'est gênant. De plus, je pense qu'il est bon d'avoir de meilleures perspectives et de tout terminer sur GitHub sans interposer d'autres services.
La destination du json de sortie mentionné ci-dessus était la branche gh-pages, mais pour une raison quelconque, je ne pouvais pas y accéder via github.io, donc j'accédais directement au raw.githubusercontent.com ci-dessus. Cependant, dans les commentaires, les échanges suivants ont été faits.
Hmm…? Je me sens comme un nom de compte que je connais bien ...
Le script Actions de plus tôt
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./data
publish_branch: gh-pages
(Cette personne (@peaceiris) est la personne qui a fait l'action de pousser vers les pages gh utilisées dans le script ...) Donc, j'ai choisi de sortir à nouveau sur gh-pages à partir des paramètres ...
https://kanahiro.github.io/covid19hokkaido_scraping/patients.json
J'ai pu l'héberger en toute sécurité sur gh-pages, je suis désolé (et merci). Donc, après avoir défini les Actions, vous devez à nouveau modifier les paramètres pour héberger les pages gh, alors soyez prudent.
Recommended Posts