データファイルの更新、コミット対プルリクエスト
9332 ワード
一度は、このポストが他の誰かに役立つことができるならば、私は少し疑問に思います.私のコンテキストはかなり具体的だと思います.とにかく、それがケースであるならば、ここにあります.
マイJet Train プロジェクトはGTFS . GTFSは一般的なトランジットフィード仕様を表します.これは、公共交通機関のスケジュールと関連する地理情報をモデル化します.
gtfsは2種類のデータ,静的データ,動的データに基づいている.静的データは、変更されるかもしれないが、例えば、輸送機関とバスステーションをめったにしない.彼らは静的なファイルとしてダウンロードする必要があるとして利用可能です.前に、デモを実行するたびに、ダウンロードして上書きしなければなりませんでした.
開発者として、怠惰であり、このタスクを自動化したい.そのためにgithubアクションを使いました.
毎週実行する リポジトリのチェックアウト 静的データファイルアーカイブを取得する アーカイブからファイルを展開する 使用するgit-auto-commit アクション 直接コミットすることは問題ではない.実際、それはコードではなくデータです.コードは、ランタイムで例外を発生させることから予期しないデータを防ぐために、すべてのビルトインガードを持っている必要があります.私は既にいくつかの驚きを以前に持っていて、多くの防御プログラミング技術を適用しました.
しかし、上記の自動化に満足できませんでした. 私はデモを実行する必要があるかどうかに関係なく、毎週、コミットが発生します.それは不必要なコミットの多くを作成します.それは私が毎週頻繁に行動をスケジュールした理由です. 行動は月曜日に予定されている.私が金曜日にデモを実行するならば、私はとにかくデータファイルをアップデートする必要があります. したがって、私は別のアプローチに切り替えることを決めた.コミットの代わりに、スクリプトを更新してプルリクエストを開きました.デモを実行する必要がある場合は、私はそれをマージします(ローカルプル);そうでなければ、それは開いたままでいます.オープンされたPRが既に存在するならば、アクションはそれを上書きします.今、私はより頻繁に行動をスケジュールすることができます.
毎日行動する
リポジトリのチェックアウト 静的データファイルアーカイブを取得する アーカイブから必要なファイルのみを抽出する クリーンアップ用のアーカイブファイルを削除する 使用するcreate-pull-request アクション.アクションは、自動的にすべての新しい更新ファイルを含むPRを作成しますそれが私がいくつかのファイルを抽出し、アーカイブを削除する理由です. 私が紹介で言及したように、私はこのポストが多くの人々を助けることができると確信しません.それがするならば、どうか私にあなたのユースケースについて知らせさせてくださいとコメントすることを躊躇しないでください.
この投稿の完全なソースコードはGithubにあります.
ジェット列車
Hazelcast Jet
Hazelcast IMDG
Kotlin コード用
Spring Boot webappの場合
Maven ビルドシステム用
プロジェクトには、いくつかのモジュールが含まれています.
名称
説明
…
View on GitHub
当初公開A Java Geek 2021年8月15日
マイJet Train プロジェクトはGTFS . GTFSは一般的なトランジットフィード仕様を表します.これは、公共交通機関のスケジュールと関連する地理情報をモデル化します.
gtfsは2種類のデータ,静的データ,動的データに基づいている.静的データは、変更されるかもしれないが、例えば、輸送機関とバスステーションをめったにしない.彼らは静的なファイルとしてダウンロードする必要があるとして利用可能です.前に、デモを実行するたびに、ダウンロードして上書きしなければなりませんでした.
開発者として、怠惰であり、このタスクを自動化したい.そのためにgithubアクションを使いました.
name: Refresh Dataset
on:
schedule:
- cron: '12 2 * * 1' # 1
jobs:
build:
name: Refresh Dataset
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2 # 2
- name: Fetch dataset archive
un: curl -o archive.zip https://api.511.org/transit/datafeeds\?api_key\=${ {secrets.FIVEONEONE_API_KEY} }\&operator_id\=RG # 3
- name: Extract archive
run: unzip -o -d ./infrastructure/data/current/ archive.zip # 4
- name: Add & commit
uses: stefanzweifel/git-auto-commit-action@v4 # 5
with:
commit_message: Update to latest data files
add_options: '-u'
しかし、上記の自動化に満足できませんでした.
name: Refresh Dataset
on:
schedule:
- cron: '12 2 * * *' # 1
jobs:
build:
name: Refresh Dataset
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2 # 2
- name: Fetch dataset archive
run: curl -o archive.zip https://api.511.org/transit/datafeeds\?api_key\=${ {secrets.FIVEONEONE_API_KEY} }\&operator_id\=RG # 3
- name: Extract files of interest from the archive
run: unzip -o -j archive.zip agency.txt routes.txt stop_times.txt stops.txt trips.txt -d ./infrastructure/data/current # 4
- name: Remove archive
run: rm archive.zip # 5
- name: Create PR
uses: peter-evans/create-pull-request@v3 # 6
with:
commit-message: Update to latest data files
branch: data/refresh
delete-branch: true
title: Refresh data files to latest version
body: ""
この投稿の完全なソースコードはGithubにあります.
ヘーゼルキャスト / ジェットトレイン
ジェット列車
このプロジェクトはHazelcast Jet , データストリーミングエンジンHazelcast IMDG .
これは、ほぼリアルタイムでベイエリアの公共交通機関の位置が表示されます.
ノート
スイスの公共交通機関を展示するために使用された
残念ながら、スイスのデータプロバイダはGTFS - RT
図1.デモスクリーンショット
テクノロジスタックは以下の通りである.
Hazelcast Jet
Hazelcast IMDG
Kotlin コード用
Spring Boot webappの場合
Maven ビルドシステム用
全体構造
プロジェクトには、いくつかのモジュールが含まれています.
名称
説明
common
モジュール間で共有されるコードinfrastructure
静的データファイルを含みます.また、Dockerlocal-jet
前のモジュールの代替として、IDEの内部でデバッグできるローカルジェットインスタンスを起動しますload-static
メモリ内のファイルから静的データを読み込む…
View on GitHub
当初公開A Java Geek 2021年8月15日
Reference
この問題について(データファイルの更新、コミット対プルリクエスト), 我々は、より多くの情報をここで見つけました https://dev.to/nfrankel/updating-data-files-commits-vs-pull-requests-593oテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol