Traffine I/O

Bahasa Indonesia

2023-02-03

PyGithub

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:

bash
$ 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:

  1. Masuk ke akun GitHub Anda
  2. Klik gambar profil Anda di pojok kanan atas layar, dan pilih "Settings" dari menu dropdown
  3. Klik "Developer settings" di sidebar sebelah kiri, dan kemudian pilih "Personal access tokens"
  4. Klik tombol "Generate new token"
  5. 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.
  6. 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:

python
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:

python
# 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:

python
# 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:

python
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:

python
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:

python
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:

python
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:

python
# 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:

python
# 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:

python
# 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:

python
# 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:

  1. Buat instance dari kelas Github dan autentikasi dengan API Github.
  2. Dapatkan objek repositori menggunakan instance Github dan nama repositori.
  3. Dapatkan objek branch menggunakan metode get_branch dari objek Repository.
  4. Dapatkan objek tree menggunakan metode get_git_tree dari objek Repository dan lewatkan SHA dari branch.
  5. Dapatkan objek blob dari berkas menggunakan metode get_contents dari objek Repository dan lewatkan path berkas.
  6. Sunting isi berkas.
  7. Buat objek blob baru menggunakan metode create_git_blob dari objek Repository dan lewatkan isi berkas yang baru.
  8. Perbarui path berkas dan blob SHA pada objek tree.
  9. Buat objek tree baru menggunakan metode create_git_tree dari objek Repository dan lewatkan path berkas dan blob SHA yang telah diperbarui.
  10. Buat objek commit baru menggunakan metode create_git_commit dari objek Repository dan lewatkan pesan commit, SHA tree yang telah diperbarui, dan SHA commit induk.
  11. Buat cabang baru menggunakan metode create_git_ref dari objek Repository dan lewatkan nama cabang baru dan SHA commit baru.

Berikut adalah contoh potongan kode untuk mengedit beberapa berkas di repositori:

python
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

https://github.com/PyGithub/PyGithub

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!