2021年5月8日土曜日

独自の Pypi パッケージを Gitlab で公開する方法

独自の Pypi パッケージを Gitlab で公開する方法

概要

前回 Pypi パッケージを TestPypi で公開する方法を紹介しました
Pypi の場合パブリックに公開されてしまうのでプライベートなパッケージを配布したい場合には向きません
Gitlab には Pypi のパッケージを公開する機能がありますが
今回は Gitlab で Pypi のパッケージを公開する方法を紹介します

環境

  • macOS 11.2.3
  • Python 3.8.7
  • Gitlab 13.9.4

パッケージの作成

前回のパッケージを流用します
簡単なパッケージ作成のチュートリアルなのでまだパッケージがない場合はこちらの記事を参考に作成してください

Gitlab の準備

何でも OK です
自分で Omnibus インストールを使って Ubuntu 上に構築しても OK です (参考)

また適当のプロジェクトを作成しておいてください
そして ProjectID を確認しておいてください
ProjectID はプロジェクトのトップ画面で確認できます

パーソナルアクセストークンの入手

Gitlab にパッケージをアップロードするためのアクセストークンを取得します

User Settings -> Access Tokens から取得できます
トークンの名前を設定します
この名前はあとでユーザ名として使用します
トークンのスコープに「api」を設定します

.pypirc の作成

pypirc はパッケージをアップロードするリポジトリの情報を記載する認証メタファイルです
デフォルトでは Gitlab に関するリポジトリ情報がないので手動で記載します

  • touch ~/.pypirc
  • vim ~/.pypirc
[distutils]
index-servers =
    gitlab

[gitlab]
repository = https://gitlab.example.com/api/v4/projects/2/packages/pypi
username = upload_package
password = xxxx

repository は Gitlab の package API のエンドポイントを記載します
プロジェクトの ID を記載する部分があるので事前に確認した ID を記載します
username は先程作成した API トークンの名前を記載します
password は取得した API トークンを記載します

公開する

これで準備 OK です
あとは Pypi 同様コマンドで公開できます

  • python3 -m twine upload --repository gitlab dist/*

--repository オプションで先程 .pypirc に記載した [gitlab] のディレクティブ名を指定します
ちゃんと公開されると以下のように Gitlab の「Package Registry」にファイルがアップロードされているのが確認できると思います

動作確認

使う場合は以下のようにします

  • python3 -m pip install --index-url https://upload_package:xxxx@gitlab.example.com/api/v4/projects/2/packages/pypi/simple --no-deps echo-test-hawksnowlog

これでパッケージをインストールできます

参考サイト

0 件のコメント:

コメントを投稿