Vielleicht wurde in jüngerer Zeit eine Funktion namens GitHub Actions hinzugefügt. Dies ist diejenige, die die angegebenen Aktionen (Ausführung des Shell-Skripts) für das angegebene Ereignis auslösen kann. Wenn beispielsweise der PR zum Dev-Zweig zusammengeführt wird, wird er erstellt und in den Dev-Pages-Zweig verschoben, der eine Funktion für sogenannte CI / CD ist.
Dieses Mal nahm ich an der Hokkaido-Version der COVID-19-Gegenmaßnahmen-Website teil, die derzeit ein großer Schritt ist, und entwickelte sie mit dieser Funktion. Ist es am Beispiel möglich, GitHub zu einem Pseudo-API-Server zu machen, wie der Titel schon sagt? Ich werde in diesem Artikel einen Vorschlag machen.
https://github.com/Kanahiro/covid19hokkaido_scraping Dies ist ein Skript, das erstellt wurde, um die Daten im JSON-Format zu unterstützen, die die Quelle der Visualisierung bei der Entwicklung der oben genannten Website für Gegenmaßnahmen darstellen. Bei der Ausführung (in der damaligen Version) hat es die Funktion, die Website der Straße zu patrouillieren, die statische CSV-Datei im Zweig zu lesen und die JSON-Datei auszugeben (derzeit die externe CSV-Datei zu lesen). ). Zuerst musste ich main.py mit dem Skript, das ich vorerst geschrieben hatte, manuell ausführen. Zu diesem Zeitpunkt schlug ein Mitglied von JUST Road IT vor: "Können Sie eine Planung durchführen?" Zu diesem Zeitpunkt wusste ich nicht, ob ich es schaffen könnte, also antwortete ich vorerst nicht, aber als ich die Implementierungsmethode heimlich untersuchte, war es überraschend einfach, also implementierte ich sie (Actions is God).
Referenzseite: GitHub-Aktionen als Scheduler verwenden
Aktionen werden in der yaml-Datei definiert. Definiert das Timing "Ein", um zuerst zu feuern. Bei normaler CI / CD-Verwendung kann dies durch Drücken auf einen bestimmten Zweig ausgelöst werden. Wenn Sie jedoch wie folgt schreiben, kann es alle 15 Minuten ausgeführt werden.
on:
schedule:
- cron: '*/15 * * * *'
#(Es ist ein Geheimnis, dass Cron? Was ist das?)
Die Planung ist jetzt abgeschlossen. Führen Sie dann das obige Skript alle 15 Minuten aus und übertragen Sie die in einem anderen Zweig generierten JSON-Daten! Also entschied ich mich, mit der folgenden Yaml-Datei zu planen.
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 #Führen Sie das Hauptskript aus
- name: deploy
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./data
publish_branch: gh-pages
Ich habe es mit Bezug auf die Yaml-Datei einer anderen Person geschrieben, also weine ich, wenn ich gebeten werde, mit vollem Kratzer zu schreiben. Ich fand es erstaunlich, dass man die Abhängigkeit mit pip installieren konnte. Wenn main.py ausgeführt wird, werden JSON-Dateien im Datenverzeichnis im selben Verzeichnis ausgegeben. Verschieben Sie nach der Verarbeitung des Skripts die Dateien im Datenverzeichnis auf gh-pages (autorisiert von secrets.GITHUB_TOKEN). Gh-Seiten enthalten jetzt JSON-Dateien, die alle 15 Minuten generiert werden.
Ich halte den Titel für betrügerisch, aber der von mir vorgeschlagene Pseudo-API-Server ist vollständig. https://raw.githubusercontent.com/Kanahiro/covid19hokkaido_scraping/gh-pages/patients.json Dies ist eine JSON-Datei, die Actions automatisch alle 15 Minuten im obigen Skript-Repository generiert. Diese Datei scheint keinen CORS-Beschränkungen zu unterliegen (obwohl ich sie selbst noch nicht überprüft habe), sodass sie direkt an der Rezeption gelesen werden kann. Mit anderen Worten, wenn Sie diese Datei erhalten und die Elemente auf der Vorderseite "färben", können Sie sie tatsächlich als API-Server behandeln!
Es war ein Vorschlag. Ich denke, dass es effektiv ist, wenn es keine Ressource zum Erstellen eines separaten API-Servers gibt, es redundant ist oder Probleme verursacht. Ich denke auch, dass es gut ist, einen besseren Ausblick zu haben und alles auf GitHub zu vervollständigen, ohne andere Dienste einzuschalten.
Das Ziel der oben erwähnten Ausgabe json war der Zweig gh-pages, aber aus irgendeinem Grund konnte ich nicht über github.io darauf zugreifen, sodass ich direkt auf den oben genannten raw.githubusercontent.com zugegriffen habe. In den Kommentaren wurde jedoch der folgende Austausch durchgeführt.
Hmm ...? Ich fühle mich wie ein Kontoname, mit dem ich vertraut bin ...
Das Actions-Skript von früher
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./data
publish_branch: gh-pages
(Diese Person (@peaceiris) ist die Person, die die Aktion ausgeführt hat, um auf die im Skript verwendeten Gh-Seiten zu pushen ...) Also habe ich mich entschieden, die Einstellungen wieder auf gh-Seiten auszugeben ...
https://kanahiro.github.io/covid19hokkaido_scraping/patients.json
Ich konnte es sicher auf Gh-Seiten hosten, es tut mir leid (und danke). Nachdem Sie Aktionen festgelegt haben, müssen Sie die Einstellungen überprüfen, um Gh-Seiten erneut zu hosten. Seien Sie also vorsichtig.
Recommended Posts