Apa itu PyGithub
PyGithub adalah sebuah pustaka Python yang memungkinkan pengembang untuk berinteraksi dengan API GitHub secara mudah. Dengan PyGithub, para pengembang dapat mengotomatisasi banyak tugas yang biasanya dilakukan secara manual melalui antarmuka web GitHub, seperti membuat dan menghapus repositori, mengelola pull request, dan mengakses data pengguna dan organisasi.
Pustaka ini menyediakan antarmuka tingkat tinggi yang menyembunyikan banyak detail dari bekerja dengan API GitHub, membuatnya mudah digunakan baik oleh pemula maupun pengembang berpengalaman. PyGithub adalah sumber terbuka, dengan lisensi yang memungkinkan penggunaan dan modifikasi gratis.
Memulai dengan PyGitHub
Untuk memulai dengan PyGithub, Anda perlu mengikuti beberapa langkah dasar:
Menginstal PyGithub
Langkah pertama adalah menginstal pustaka PyGithub pada sistem Anda. Hal ini dapat dilakukan menggunakan pip, manajer paket Python. Untuk menginstal PyGithub, cukup buka command prompt atau jendela terminal dan ketik perintah berikut:
$ pip install PyGitHub
Ini akan menginstal versi terbaru PyGithub pada sistem Anda, bersama dengan semua dependensi yang diperlukan.
Membuat Token Akses API GitHub
Selanjutnya, Anda perlu membuat token akses pribadi di platform GitHub. Token ini akan digunakan untuk mengautentikasi script PyGithub Anda dan memungkinkan mereka berinteraksi dengan API GitHub atas nama Anda.
Untuk membuat token akses pribadi baru, ikuti langkah-langkah berikut:
- Masuk ke akun GitHub Anda
- Klik gambar profil Anda di pojok kanan atas layar, dan pilih "Settings" dari menu dropdown
- Klik "Developer settings" di sidebar sebelah kiri, dan kemudian pilih "Personal access tokens"
- Klik tombol "Generate new token"
- Beri nama token Anda, dan kemudian pilih izin yang ingin Anda berikan. Untuk sebagian besar skrip PyGithub, Anda perlu memilih izin "repo" dan "user", tetapi Anda mungkin juga perlu memilih izin tambahan tergantung pada kasus penggunaan spesifik Anda.
- Klik tombol "Generate token" untuk membuat token baru Anda.
Setelah Anda membuat token akses pribadi Anda, pastikan untuk menyalinnya ke lokasi yang aman, karena Anda tidak akan dapat melihatnya lagi setelah Anda meninggalkan layar pembuatan token.
Dasar-dasar PyGithub
PyGithub adalah sebuah pustaka Python yang memungkinkan pengembang untuk berinteraksi dengan API GitHub secara mudah. Dalam artikel ini, saya akan menjelajahi dasar-dasar PyGithub, termasuk cara mengautentikasi dengan API GitHub, membuat repositori, issue, pull request, comment, dan bekerja dengan branch.
Mengautentikasi dengan PyGithub
Untuk mengautentikasi dengan API GitHub menggunakan PyGithub, Anda perlu menyediakan token akses pribadi Anda. Anda dapat melakukannya dengan membuat sebuah instance kelas Github dan menyertakan token akses Anda sebagai parameter:
from github import Github
# Create an instance of the Github class
g = Github("<personal-access-token>")
Setelah terotentikasi, Anda dapat menggunakan objek g
untuk berinteraksi dengan API GitHub.
Membuat Repository
Untuk membuat repository baru di GitHub menggunakan PyGithub, Anda dapat menggunakan metode create_repo
dari objek Github
:
# Create a new repository
repo = g.get_user().create_repo("new-repo")
Ini akan membuat repository baru di GitHub dengan nama "new-repo".
Membuat Issue
Untuk membuat issue baru di repository menggunakan PyGithub, Anda dapat menggunakan metode create_issue
dari objek Repository
:
# Create a new issue on the repository
issue = repo.create_issue("Issue title", "Issue body")
Ini akan membuat issue baru di repository dengan judul dan isi yang diberikan.
Membuat File
Untuk membuat file baru di repository dengan PyGithub, Anda dapat menggunakan metode create_file
dari objek Repository:
from github import Github
# Authenticate to GitHub using a personal access token
g = Github("<personal-access-token>")
# Get the repository
repo = g.get_repo("<username>/<repository>")
# Create a new file
file_content = "Hello, world!"
file_path = "example.txt"
file_message = "Add example.txt"
repo.create_file(file_path, file_message, file_content)
Kode ini akan membuat file baru yang disebut example.txt
dengan isi "Hello, world!" di direktori root dari repository.
Memperbarui Berkas
Untuk memperbarui file yang sudah ada di repository menggunakan PyGithub, Anda dapat menggunakan metode update_file
dari objek Repository
:
from github import Github
# Authenticate to GitHub using a personal access token
g = Github("<personal-access-token>")
# Get the repository
repo = g.get_repo("<username>/<repository>")
# Get the existing file
file = repo.get_contents("example.txt")
# Update the file
file_content = "Hello, PyGithub!"
file_path = "example.txt"
file_message = "Update example.txt"
repo.update_file(file_path, file_message, file_content, file.sha)
Kode ini akan memperbarui file yang sudah ada example.txt
dengan konten "Hello, PyGithub!".
Menghapus Berkas
Untuk menghapus file yang sudah ada di repository menggunakan PyGithub, Anda dapat menggunakan metode delete_file
dari objek Repository
:
from github import Github
# Authenticate to GitHub using a personal access token
g = Github("<personal-access-token>")
# Get the repository
repo = g.get_repo("<username>/<repository>")
# Get the existing file
file = repo.get_contents("example.txt")
# Delete the file
file_message = "Delete example.txt"
repo.delete_file(file.path, file_message, file.sha)
Kode berikut akan menghapus file yang sudah ada example.txt
dari repositori.
Committing Changes
Untuk melakukan commit pada perubahan ke repositori dengan PyGithub, Anda dapat menggunakan metode commit
pada objek GitAuthor
:
from github import Github
from github import InputGitAuthor
# Authenticate to GitHub using a personal access token
g = Github("<personal-access-token>")
# Get the repository
repo = g.get_repo("<username>/<repository>")
# Create a new file
file_content = "Hello, world!"
file_path = "example.txt"
file_message = "Add example.txt"
repo.create_file(file_path, file_message, file_content)
# Commit the changes
author = InputGitAuthor("<Your Name>", "<your.email@example.com>")
repo.get_git_ref("heads/master").commit(
"New commit",
repo.get_contents(file_path).sha,
author=author,
committer=author,
tree=repo.get_git_tree("master").sha
)
Kode ini akan membuat commit baru dengan pesan "Commit baru" dan informasi penulis dan komiter diatur sebagai <Nama Anda>
dan <email@contoh.com>
. Perubahan yang dilakukan pada file example.txt
akan disertakan dalam commit ini.
Membuat Pull Request
Untuk membuat pull request baru pada sebuah repositori menggunakan PyGitHub, Anda dapat menggunakan metode create_pull
dari objek Repository
:
# Create a new pull request
pull_request = repo.create_pull(
title="Pull Request Title",
body="Pull Request Body",
head="my-feature-branch",
base="master"
)
Ini akan membuat pull request baru pada repositori dengan judul, isi, dan informasi cabang yang diberikan.
Membuat Komentar
Untuk membuat komentar baru pada sebuah isu atau pull request menggunakan PyGitHub, Anda dapat menggunakan metode create_comment
dari objek Issue
atau PullRequest
:
# Create a new comment on an issue
comment = issue.create_comment("Comment text")
# Create a new comment on a pull request
comment = pull_request.create_comment("Comment text")
Ini akan membuat komentar baru pada isu atau pull request yang diberikan dengan teks yang diberikan.
Bekerja dengan Cabang
Untuk bekerja dengan cabang pada PyGitHub, Anda dapat menggunakan metode create_git_ref
dari objek Repository
:
# Create a new branch
ref = repo.create_git_ref("refs/heads/my-feature-branch", "master")
Ini akan membuat cabang baru bernama "my-feature-branch" yang berbasis pada cabang "master".
Menggabungkan Pull Request
Untuk menggabungkan pull request menggunakan PyGitHub, Anda dapat menggunakan metode merge
dari objek PullRequest
:
# Merge the pull request
pull_request.merge()
Ini akan menggabungkan pull request ke dalam cabang target.
Mengedit Beberapa Berkas
Mengedit beberapa file di repositori Github adalah tugas yang umum dalam proyek pengembangan perangkat lunak. PyGithub adalah sebuah perpustakaan Python yang dapat digunakan untuk berinteraksi dengan API Github, sehingga memudahkan untuk melakukan tugas ini. Dalam artikel ini, saya akan membahas cara mengedit beberapa berkas menggunakan PyGithub dan melakukan commit perubahan ke cabang baru di repositori Github.
Untuk mengedit beberapa berkas di repositori Github menggunakan PyGithub, kita perlu melakukan langkah-langkah berikut:
- Buat instance dari kelas
Github
dan autentikasi dengan API Github. - Dapatkan objek repositori menggunakan instance
Github
dan nama repositori. - Dapatkan objek branch menggunakan metode
get_branch
dari objekRepository
. - Dapatkan objek tree menggunakan metode
get_git_tree
dari objekRepository
dan lewatkan SHA dari branch. - Dapatkan objek blob dari berkas menggunakan metode
get_contents
dari objekRepository
dan lewatkan path berkas. - Sunting isi berkas.
- Buat objek blob baru menggunakan metode
create_git_blob
dari objek Repository dan lewatkan isi berkas yang baru. - Perbarui path berkas dan blob SHA pada objek tree.
- Buat objek tree baru menggunakan metode
create_git_tree
dari objek Repository dan lewatkan path berkas dan blob SHA yang telah diperbarui. - Buat objek commit baru menggunakan metode
create_git_commit
dari objekRepository
dan lewatkan pesan commit, SHA tree yang telah diperbarui, dan SHA commit induk. - Buat cabang baru menggunakan metode
create_git_ref
dari objekRepository
dan lewatkan nama cabang baru dan SHA commit baru.
Berikut adalah contoh potongan kode untuk mengedit beberapa berkas di repositori:
from github import Github
import base64
# authenticate with Github API
g = Github('<GITHUB_ACCESS_TOKEN>')
# retrieve the repository object
repo = g.get_repo('<OWNER>/<REPO>')
# retrieve the branch object
branch = repo.get_branch('master')
# retrieve the tree object
tree = repo.get_git_tree(branch.commit.sha)
# retrieve the blob objects of the files
file1 = repo.get_contents('file1.txt')
file2 = repo.get_contents('file2.txt')
# edit the file contents
file1_content = "This is a new content for file1"
file2_content = "This is a new content for file2"
# create new blob objects
blob1 = repo.create_git_blob(file1_content, 'utf-8')
blob2 = repo.create_git_blob(file2_content, 'utf-8')
# update the file paths and blob SHAs in the tree object
tree_new = []
for item in tree.tree:
if item.path == 'file1.txt':
tree_new.append({'path': 'file1.txt', 'mode': item.mode, 'type': item.type, 'sha': blob1.sha})
elif item.path == 'file2.txt':
tree_new.append({'path': 'file2.txt', 'mode': item.mode, 'type': item.type, 'sha': blob2.sha})
else:
tree_new.append({'path': item.path, 'mode': item.mode, 'type': item.type, 'sha': item.sha})
# create new tree object
new_tree = repo.create_git_tree(tree_new)
# create new commit object
commit_message = 'Updated multiple files'
commit = repo.create_git_commit(commit_message, new_tree.sha, [branch.commit.sha])
# create new branch
new_branch = repo.create_git_ref(f'refs/heads/new-branch', commit.sha)
Potongan kode ini memperbarui isi dari dua file ('file1.txt' dan 'file2.txt') dan membuat commit baru dengan file yang telah diperbarui pada branch baru bernama 'new-branch'. File-file yang diperbarui disimpan sebagai objek blob baru menggunakan metode create_git_blob
, dan objek tree diperbarui dengan SHA blob yang baru. Akhirnya, objek tree baru dan objek commit dibuat, dan branch baru dibuat menggunakan metode create_git_ref
.
Referensi