PyGithubを使って特定リポジトリにファイルをコミットする

PyGithubを使って特定リポジトリにファイルをコミットする

Category
Description
PyGithubを使用してファイルをコミットするコードを書いたので備忘録として書いておきます
Author
Published
Published July 8, 2020
Last Updated
Last Updated July 8, 2020
Writings
この記事は約4分で読めます

はじめに

PyGithubを使用してファイルをコミットするコードを書いたので備忘録として書いておきます

きっかけ

前回の記事でLambdaファンクションを作るときに使用したので記事にしました
notion image

内容

まずは pip install

pip install pygithub

特定のファイルをコミットするコード

PyGithubでは内部的にGitHub Data API v3 を使用しています。なのでこちらの記事の中のRefs, Tree, Commit周りの関係性を理解しておくと良いです。
import os from github import Github from github import InputGitTreeElement token = os.environ.get("GITHUB_TOKEN") repository = "yoshiki-0428/repository" def main(): commit_file("hoge-file.md", "hogehoge, hoge") print("complete") # Repository Info def get_repo(): repo = Github(token).get_repo(repository) refs = repo.get_git_ref(branch_name) return { "repo": repo, "refs": refs } def commit_file(commit_name, commit_file_text): if commit_name == "" or commit_file_text == "": return # Repository Info repo_info = get_repo() # Commit file (Create) element = InputGitTreeElement(commit_name, '100644', 'base64', commit_file_text) # 最新版のCommit情報を取得 commit = repo_info['repo'].get_commit(repo_info['refs'].object.sha).commit base_tree = commit.tree # 新しくCommitを作成 new_tree = repo_info['repo'].create_git_tree([element], base_tree) new_commit = repo_info['repo'].create_git_commit("Create file: " + commit_name, new_tree, [commit]) repo_info['refs'].edit(new_commit.sha)

まとめ

たったこれだけのコードでGitHub APIを使用してファイルのコミットが簡単にできてしまいます!ライブラリ様様ですね。。

参考URL