Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PyPIデビュー手前の人のための地下活動手法 -PyPICloudを使ったプライベートレジストリの構築- / Using PyPICloud as private registry for pre-debut to PyPI

attakei
October 16, 2021

PyPIデビュー手前の人のための地下活動手法 -PyPICloudを使ったプライベートレジストリの構築- / Using PyPICloud as private registry for pre-debut to PyPI

PyCon JP 2021で発表した同タイトルの登壇で使用した時点のスライドのPDF版です。

このファイルはReveal.jsで制作したプレゼンテーションをPDF化したものとなっています。
誤字などの理由で元のHTMLを修正・編集することがあります。
最新の内容を参照したい場合はこちらのHTML版を閲覧してください。

attakei

October 16, 2021
Tweet

More Decks by attakei

Other Decks in Programming

Transcript

  1. PyPICloudとは 意訳すると: S ,GCS,Azure Blobでパッケージファイルを管 理できるPyramid製のPyPIサーバー https://pypi.org/project/pypicloud/ This package is

    a Pyramid web app that provides a PyPI server where the packages are stored on Amazon’s Simple Storage Service (S ), Google’s Cloud Storage (GCS) or Azure’s Blob Storage. ※README序文より引用
  2. ちょっと使ってみる ターミナル1 ターミナル2 $ python -m venv .venv $ .

    .venv/bin/activate (.venv) $ pip install 'pypicloud[server]' (.venv) $ pypicloud-make-config config.ini (.venv) $ pserve config.ini $ python -m venv .venv $ . .venv/bin/activate (.venv) $ pip install --index-url bottle
  3. 設定ファイルの中身紹介 [app:main] ; PyPICloudに指定パッケージがないときどうするか pypi.fallback = cache ; everyone =

    誰でも、 authenticated = 認証済みユーザーのみ ; 読み取り(パッケージ情報の取得・検索など)の権限 pypi.default_read = everyone ; 書き込み(パッケージの登録など)の権限 pypi.default_write = authenticated ; キャッシュ関連の更新の権限 pypi.cache_update = everyone
  4. 設定ファイルの中身紹介 ; Storageに何を使うか pypi.storage = s3 storage.XXXXX = XXX ;

    Cacheに何を使うか pypi.db = dynamo db.region_name = ap-northeast-1 db.namespace = mypypicloud ; 管理者(パッケージをアップロードする人) auth.admins = admin user.admin = $6$rounds=20500$Nooooooooooooooooooooooooooooooooo
  5. 組織用プライベートレジストリ 構成 PyPICloud PyPI Client Webアプリケーション(heroku, EC , docker services)

    アクセス制限はあったほうが良い(なくても一応平 気) Storage, Cacheにはローカル以外を使う(ことが良 い)
  6. PyPICloudを外部公開する Readmeのインストールガイドが pip install --extra- index-url https://pypi.attakei.net/simple/ ~~ といっ たように、

    PyPICloudのURLを指定している状態で記述で きる。 As python packege ----------------- 1. Run ``pip install --extra-index-url https://pypi.attakei.net/simple/ errbot-slack-bo 2. | Import function to get plugin directory from ``errbot_slack_bolt_backend``. | example: ``from errbot_slack_bolt_backend import get_plugin_dir``
  7. 構成 StorageはGCS(標準提供) CacheはFirestore用の実装(自 作) ※ PyPICloudはCloud Runで動作 Firebase Hostingをフロントにし て強キャッシュ

    Firebase(CDN) Cloud Run(PyPICloud) Firestore(Cache) GCS(Storage) ※需要がわからないので、これ自体もPyPICloudで公開