6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

TravisCIを使用して、タグ付きコミットのバージョン番号を付けたPythonパッケージをPyPIに自動的にリリースする

Posted at

この記事では、TravisCIを使用して、タグ付きコミットのバージョン番号を付けたPythonパッケージをPyPIに自動的にリリースする方法について紹介します。パッケージのバージョンはコミットのタグによって自動的に決定されるため、setup.pyのパッケージのバージョンを書き換える手間を省くことができます。

必要なものは以下の通りです。

  • pythonパッケージを含むGitHubリポジトリ
  • Travisのコマンドラインツール
  • PyPIアカウント

設定ファイルを用意する

まず、Travis CIに何をすべきかを指示するために、リポジトリにTravisの設定ファイル(.travis.yml)を追加します。以下では、リポジトリをPython 3.6でビルドし、タグ付きコミットでのみデプロイするように設定します。userにはPyPIのユーザ名を設定しましょう。

language: python

python:
  - '3.6'

script: true

deploy:
  provider: pypi
  user: "Your username"
  on:
    tags: true

PyPIのパスワードを暗号化して設定ファイルに含める

次に、PyPIのパスワードを暗号化して設定ファイルに追加します。そのためには、Travisのコマンドラインツールを使うことができます。インストールしていない場合は、https://github.com/travis-ci/travis.rbを参考にしてインストールしてください。

まず、設定ファイルを置いてあるディレクトリに移動します。その後、次のコマンドを実行します。your-password-hereはPyPIのパスワードに置き換えてください。

travis encrypt your-password-here --add deploy.password

実行後、暗号化されたパスワードが設定ファイルに含まれていることを確認できます。

language: python

python:
  - '3.6'

script: true

deploy:
  provider: pypi
  user: "Your username"
  password:
    secure: "Your encrypted password"
  on:
    tags: true

タグ付きコミットから自動的にパッケージバージョンを設定

最後に、タグ付けされたコミットから自動的にパッケージのバージョンを設定します。こうすることで、パッケージのバージョンをsetup.pyにハードコーディングする必要がなくなります。

パッケージのバージョンをタグから自動的に設定するためにはsetuptools_scmを使うことができます。まずは、以下のようにしてsetuptools_scmをインストールします。

pip install setuptools-scm

次に、setup.pyを以下のように変更します。こうすることで、パッケージのバージョンを自動的にタグのバージョンから取得することができます。

from setuptools import setup
setup(
    ...,
    use_scm_version=True,
    setup_requires=['setuptools_scm'],
    ...,
)

これで終わりです。

あとはタグを付けることで、パッケージを自動的にPyPIにリリースすることができます。

image.png

以下のリポジトリに設定を書いてあるので参考にしてください。

6
4
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?