😊
PythonでGitLab APIを操作する
PythonでGitLab APIを操作する方法について記載する。
業務においてGitLabを使うことがある。
その中で定型的な作業があり、自動化を行いたいと考えていた。
検討の結果、PythonでGitLab APIを操作するためのライブラリがあり、それを利用することになった。
python-gitlab
GitLab APIを操作するにあたって、python-gitlab を利用する。
参考サイト
python-gitlab’s documentation
Gitlab REST API
インストール
pip install --upgrade python-gitlab
アクセストークンの取得
GitLab でAPIを利用するにあたって、アクセストークンの取得が必要である。
自分のプロフィールからAccess Tokensのページを開き、アクセストークンを作成する。
python-gitlab による GitLab 操作の例
プロジェクトの取得
import gitlab
gitlab_url = "https://example.com/"
project_name = "example_project"
group_id = 1
access_token = "XXXXXXXXX" # gitlabのアクセストークン
gl = gitlab.Gitlab(
gitlab_url,
api_version=4,
private_token=access_token
)
project = gl.projects.create(
{'name': project_name, 'namespace_id': group_id}
)
※以降ではgl作成済みの前提で記載する。
プロジェクト一覧を取得
for project in gl.projects.list(all=True):
project = gl.projects.get(project.id)
print(project.name)
プロジェクト一覧を取得(ページング)
ページングを行う場合、page
, per_page
を指定する。
最初のページは page = 1
で始まる。
for project in gl.projects.list(page=1, per_page=10):
project = gl.projects.get(project.id)
print(project.name)
GitLab API のページングの仕様については、
に記載されている。ブランチ作成
project = gl.projects.create({'name': project_name, 'namespace_id': group_id})
branch_feature_example = project.branches.create(
{'branch': 'feature_example', 'ref': 'master'}
)
プロジェクトのサービス設定
Gitのリポジトリ部分だけではなく、プロジェクトのサービスも操作可能である。
Redmine issue trackerの設定を行う。
project = gl.projects.create(
{'name': project_name, 'namespace_id': group_id}
)
service = project.services.get('redmine')
service.description = "Redmine issue tracker"
service.push_events = False
service.active = True
service.save()
Discussion