LoginSignup
2
2
お題は不問!Qiita Engineer Festa 2024で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

GitHubプロフィールにKaggleのバッジを表示するGitHub Actionsを作成しました

Last updated at Posted at 2024-06-23

はじめに

こんにちは、@Takayoshi_maです。最近は専ら遠ざかっていますが、以前までは精力的に Kaggle に取り組んでいました。

本日ですが、GitHub のプロフィールに Kaggle のバッジを表示する GitHub Actions を作成しましたので、その紹介をさせていただきます。もしこのプロジェクトにご興味あれば是非とも GitHub でスターをお願いします ⭐️

作成した GitHub Actions

README にも記載していますが、この GitHub Actions は Kaggle のユーザー名を指定すると、Kaggle ランクに応じたバッジを自動スケジューリングで生成してくれるものです。生成されたバッジはレポジトリ直下に push されるので、その URL を使って README などに貼り付けることで、Kaggle の称号を GitHub のプロフィールに表示することができます。

(生成されるバッジの例)

以下はコンペティション用のバッジのリストです。同様のスタイルのバッジがデータセット、ノートブック、ディスカッションでも自動生成されます。添付画像だと分かりづらいですが、下段のプレートはアニメーション付きです。

badges.png

(GitHub のプロフィールに表示される例)

my-github-profile.png

使い方

READMEにも記載していますが、使い方は以下の通りです。

1. 専用リポジトリを作成する

GitHub では自身の GitHub アカウント名と同じリポジトリを作成すると、そのリポジトリが GitHub のプロフィールに表示される機能があります。

このリポジトリ直下にREADME.mdを作成すると、その内容がプロフィールに表示されます。今後のステップでこのリポジトリに Kaggle のバッジを表示するためのバッジを生成する GitHub Actions を設定します。

2. ワークフローの権限設定

上記で作成したリポジトリにワークフローを設定していきますが、その前に権限設定を行います。
Settings > Actions > General > Workflow Permissions > Read and write access から設定を変更してください。

workflow-permissions.png

作成したワークフローでは生成したバッジをリポジトリに 直接 push するため、この設定が必要です。

3. ワークフローの設定

リポジトリ直下に.github/workflowsディレクトリを作成します。その中に自身の好きなファイル名で良いので YAML ファイルを作成します。

name: Kaggle Badges

on:
  schedule:
    # You can change the cron expression to suit your needs
    - cron: "11 11 1 * *" # 11:11 AM on the 1st of every month
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: "20"

      - name: Install Puppeteer browser
        run: npx puppeteer browsers install chrome@126.0.6478.63

      - name: Use Kaggle Badges Action
        uses: spider-man-tm/kaggle-badges@v1.0.0
        with:
          # ex. user_name: spidermandance
          user_name: { Your Kaggle Username }
          # example of using GitHub Secrets
          # user_name: ${{ secrets.KAGGLE_USERNAME }}

      - name: Commit and Push SVG files
        run: |
          git config --local user.email "action@github.com"
          git config --local user.name "GitHub Action"
          git add ./kaggle-badges/*
          git commit -m "Add generated SVG files" || echo "No changes to commit"
          git push

ここではワークフローの細かな説明は省きますが、Use Kaggle Badges Actionステップで作成した GitHub Actions を使用しています。user_nameに自身の Kaggle のユーザー名を指定することで、そのユーザーのバッジを生成します。
ファイルに直接ユーザー名を書くことに抵抗がある場合は、GitHub Secrets を使用することもできます。(そこまでセキュアな情報でもないと思うので、上の例では直書きしてます。)

4. ワークフローの実行

上記のワークフローはスケジューリングされているので、指定したタイミングでバッジが生成されます。また、workflow_dispatchを指定しているので手動で実行することも可能です。すぐにでもバッジを生成したい場合は、手動で実行してください。

5. プロフィールにバッジを表示

ワークフローが正常に終了すると、リポジトリ直下にkaggle-badgesディレクトリが作成され、その中に各種バッジが生成されています。その URL を使って README などに貼り付けることで、Kaggle のスコアを GitHub のプロフィールに表示することができます。

images.png

# Markdown

![](./kaggle-badges/CompetitionsRank/plastic-black.svg)
![](./kaggle-plates/Competitions/white.svg)
<!-- HTML -->
<img src="./kaggle-badges/CompetitionsRank/plastic-black.svg" />
<img src="./kaggle-plates/Competitions/white.svg" />

何をしているのかについて軽く

この GitHub Actions は Puppeteer を使用して Kaggle のユーザーページをスクレイピングし、その情報をもとにバッジを生成しています。
また本機能とは別のテーマですが、 一応 test(jest)に関するワークフローを用意しており、main branch への PR 発行タイミングで test が走ります。GitHub Repository Protection により、main ブランチへの直接 push を禁止しているので、この test に通らないとマージできないようにしています。
あとは.github/dependabot.ymlを設定しているので、依存パッケージのアップデートをメジャー・マイナー・パッチそれぞれ別の PR に分けて定期的に提案してくれるようにしています。

今後

こちらの GitHub Actions はまだ初期バージョンですが、今後もし使っていただくことがありそうならよりスタイリッシュなデザインのバッジも追加したいなと思っています。(JavaScript 周りの知識が浅いので、あまり自信はありませんが、、、)

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2