この GitHub Action は GitHub のコントリビュートカレンダーの 3D 版を SVG で作成します。
このアクションは、GitHub プロファイルの3D 版のコントリビュートカレンダー(いわゆる芝生)の 3D 版の SVG を GitHub プロフィール用に作成し、リポジトリにコミットします。
このアクションを追加した後、自分でアクションをトリガーすることもできます。
ユーザー名と同じ名前で GitHub にリポジトリを作成してください。
- 例:ユーザー名が
octocat
の場合は、octocat/octocat
という名前のリポジトリを作成します。 - 参考:プロフィールの README を管理する
このリポジトリで、以降の手順を実行します。
以下のようなワークフローファイルを作成します。
.github/workflows/profile-3d.yml
スケジュールは1日1回開始するように設定されています。 起動時間を都合の良い時間に修正してください。
name: GitHub-Profile-3D-Contrib
on:
schedule: # 03:00 JST == 18:00 UTC
- cron: "0 18 * * *"
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
name: generate-github-profile-3d-contrib
steps:
- uses: actions/checkout@v4
- uses: yoshi389111/github-profile-3d-contrib@0.8.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
USERNAME: ${{ github.repository_owner }}
- name: Commit & Push
run: |
git config user.name github-actions
git config user.email github-actions@github.com
git add -A .
if git commit -m "generated"; then
git push
fi
注:プライベートリポジトリも集計対象とする場合は、「personal access token」をリポジトリに登録し、ワークフローファイルで指定されている GITHUB_TOKEN に設定します。
これにより、アクションがリポジトリに追加されます。
GITHUB_TOKEN
: (必須) アクセストークンUSERNAME
: (必須) 対象のユーザー名. (あるいは引数で指定する)MAX_REPOS
: (任意) 最大のリポジトリ数。デフォルトは100 - バージョン 0.2.0 で追加SETTING_JSON
: (任意) 設定JSONファイルパス。詳細はyoshi389111/github-profile-3d-contrib
リポジトリのsample-settings/*.json
やsrc/type.ts
を参照してください - バージョン 0.6.0 で追加GITHUB_ENDPOINT
: (任意) Github GraphQL エンドポイント。 例:https://github.mycompany.com/api/graphql
- バージョン 0.8.0 で追加YEAR
: (任意) 過去のカレンダーを出力する場合、年を指定 - バージョン 0.8.0 で追加
サンプルで GITHUB_TOKEN
環境変数に設定している secrets.GITHUB_TOKEN
は、github が自動で作成する特別なアクセストークンです。
- GitHub Docs: 自動トークン認証
パブリックリポジトリのみを対象にコントリビューションカレンダーを生成したい場合には、この値を登録してください。 手動でシークレットを作る必要はありません。
また、プライベートリポジトリでの活動状況をコントリビューションカレンダーに含めたい場合には、ユーザーの設定項目にある「Public profile」の「Profile settings」で「Include private contributions on my profile」にチェックを付けてください。
さらに、プライベートリポジトリでの言語情報も集計の対象にしたい場合などでは、適切な権限を持ったアクセストークンを作成してください。
そのアクセストークンを、シークレットとして任意の名前で登録してください(例えば、MY_PERSONAL_ACCESS_TOKEN
)。
ただし、ユーザ作成のシークレットは、GITHUB_
から始めることはできないので、注意してください。
- GitHub Docs: About secrets
そのシークレットを GITHUB_TOKEN
環境変数に指定してください。
env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ GITHUB_TOKEN: ${{ secrets.MY_PERSONAL_ACCESS_TOKEN }}
USERNAME: ${{ github.repository_owner }}
サンプルでは UTC の 18 時に起動するようにしています。 これは作者のローカルタイムである JST での深夜に動作させるためです。
実際に使用する場合には任意の時間に変更してもらって問題ありません。 ただし指定は UTC でする必要があるので、注意してください。
on:
schedule: # 03:00 JST == 18:00 UTC
- cron: "0 18 * * *"
追加したアクションを起動してください。
Actions
->GitHub-Profile-3D-Contrib
->Run workflow
プロフィール画像は以下のパスで生成されます。
profile-3d-contrib/profile-green-animate.svg
profile-3d-contrib/profile-green.svg
profile-3d-contrib/profile-season-animate.svg
profile-3d-contrib/profile-season.svg
profile-3d-contrib/profile-south-season-animate.svg
profile-3d-contrib/profile-south-season.svg
profile-3d-contrib/profile-night-view.svg
profile-3d-contrib/profile-night-green.svg
profile-3d-contrib/profile-night-rainbow.svg
あるいは、SETTING_JSON
を指定した場合は、以下のファイルが生成されます。
profile-3d-contrib/profile-customize.svg
例:green バージョン
例:season バージョン(北半球)
例:season バージョン(南半球)
例:night view バージョン
例:night green バージョン
例:night reinbow バージョン
example: git block バージョン
生成された画像のパスを readme ファイルに追加します。
例:

環境変数 GITHUB_TOKEN
には「personal access token」を指定してください。
export GITHUB_TOKEN=XXXXXXXXXXXXXXXXXXXXX
GitHubのユーザを指定して実行してください。
node_modules/.bin/ts-node src/index.ts USER_NAME
あるいは
npm run build
node . USER_NAME
MIT License
(C) 2021 SATO, Yoshiyuki