Closed8
GitHub ActionsでAtCoder Problemsのバーチャルコンテストを自動で作成したい
AtCoder ProblemsのAPIを叩いてバーチャルコンテストを作成するスクリプト(既存のもの)をGitHub Actionsから呼び出して、自動化したい。
ディレクトリ構造
+ .github
+ └ workflows
+ └ build_virtual_contest.yml
config.py # 環境のセットアップを行う
main.py # APIを叩く
problems.sqlite3 # 過去に出題した問題を保存するデータベース
requirements.txt
標準入力で入力していたパラメータを、コマンドライン引数で渡してあげる必要がある
設定用のアクセストークンはGitHubActionsのsecretを使えば良さそう
build_virtual_contest.yml
の中身
(ミスがあったので削除)正しいものについてはスレッドを参照
↑このままだとコンテストを立てたあとのsqlの変更がブランチに反映されない
実行後にプッシュしてやる必要がある
- 2023/11/27: 変更後のデータベースが反映されない問題を修正
- 2023/12/04: タイムゾーンの問題を修正
name: build_virtual_contest
on:
# 手動実行
workflow_dispatch:
# 定期実行
schedule:
# 分 時 日 月 曜日
- cron: '0 1 * * 1' # 毎週月曜日の朝10時に実行
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: build virtual contest
env:
TZ: 'Asia/Tokyo'
run: |
# パッケージのインストール
python -m pip install -r requirements.txt
# 出題データの読み込み
python config.py
# コンテストを立てる
python main-for-actions.py ${{ secrets.ATCODER_PROBLEMS_TOKEN }} >> log.txt
# ログの表示
cat log.txt
- name: push to main branch
run: |
# ユーザー情報の設定
git config user.name github-actions
git config user.email github-actions@github.com
# 変更の追加
git add problems.sqlite3
git commit -F log.txt
git push
✅上のコードで正しく動作することが確認できました
このスクラップは2023/12/11にクローズされました