All Projects → ml2grow → GAEPyPI

ml2grow / GAEPyPI

Licence: GPL-3.0 license
PyPI private package index on Google App Engine

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to GAEPyPI

appengine-plugins-core
A client Java library to manage App Engine Java applications for any project that performs App Engine Java application management. For example, the Maven, Gradle and Eclipse App Engine plugins, custom user tools, etc.
Stars: ✭ 23 (-25.81%)
Mutual labels:  appengine, gcloud
Golang Samples
Sample apps and code written for Google Cloud in the Go programming language.
Stars: ✭ 3,088 (+9861.29%)
Mutual labels:  appengine
Gradle Gae Plugin
Gradle plugin that provides tasks for uploading, running and managing Google App Engine projects
Stars: ✭ 62 (+100%)
Mutual labels:  appengine
Elixir Runtime
The community-supported runtime for Elixir on Google App Engine.
Stars: ✭ 158 (+409.68%)
Mutual labels:  appengine
Runtimes Common
Common tools used by the GCP runtimes.
Stars: ✭ 86 (+177.42%)
Mutual labels:  appengine
Bots Framework
Golang framework to build multilingual bots for messengers (Telegram, FB Messenger, Skype, Line, Kik, WeChat) hosted on AppEngine, Amazon, Azure, Heroku or standalone
Stars: ✭ 189 (+509.68%)
Mutual labels:  appengine
Wtforms Appengine
WTForms integration for Google App Engine
Stars: ✭ 39 (+25.81%)
Mutual labels:  appengine
deploy-appengine
A GitHub Action that deploys source code to Google App Engine.
Stars: ✭ 184 (+493.55%)
Mutual labels:  appengine
Rooms
Ephemeral conference rooms powered by Twilio and Google App Engine
Stars: ✭ 234 (+654.84%)
Mutual labels:  appengine
Fluentular
Fluentular is a Fluentd regular expression editor
Stars: ✭ 154 (+396.77%)
Mutual labels:  appengine
Nds
A Go (golang) Google App Engine datastore package with strongly consistent caching.
Stars: ✭ 154 (+396.77%)
Mutual labels:  appengine
Drone Gae
Drone plugin for managing deployments and services on Google App Engine (GAE)
Stars: ✭ 96 (+209.68%)
Mutual labels:  appengine
Datastore
(AE|Cloud) Datastore Wrapper
Stars: ✭ 198 (+538.71%)
Mutual labels:  appengine
Java Docs Samples
Java and Kotlin Code samples used on cloud.google.com
Stars: ✭ 1,259 (+3961.29%)
Mutual labels:  appengine
compojure-appengine-sample
Sample Compojure app with deployment to Google App Engine
Stars: ✭ 12 (-61.29%)
Mutual labels:  appengine
Search
A wrapper around Google's full text search API for App Engine
Stars: ✭ 52 (+67.74%)
Mutual labels:  appengine
Yawp
Kotlin/Java API framework for Google Appengine
Stars: ✭ 136 (+338.71%)
Mutual labels:  appengine
Marvin
A go-kit HTTP server for the App Engine Standard Environment
Stars: ✭ 164 (+429.03%)
Mutual labels:  appengine
gcloud-login-action
A Github Action which can be used to authenticate with Google Cloud Container Registry
Stars: ✭ 21 (-32.26%)
Mutual labels:  gcloud
roller
Dice roller written in Go and Javascript to run on Google Appengine
Stars: ✭ 26 (-16.13%)
Mutual labels:  appengine

Private package index on Google App Engine

Intended to be used for companies or organizations that need a private PyPi. Originally based on simplepypi, however this solution requires a compute engine instance which is quite expensive for the task.

This application runs on Google App Engine (and uses webapp2 instead of tornado) and stores the uploaded packages on Google Cloud Storage. It supports

  1. Uploading of packages
  2. Downloading by package (or package and version)
  3. A / page that is navigatable with a web browser
  4. /pypi/ listing
  5. Basic ACL through http auth with optional account roles (read/write)
  6. Prevent overwriting a package with the same name & version

Unsupported are:

  1. Package registration

Deploy service

Before deploying, install the required dependencies to the libs folder:

pip install -t libs -r requirements-app.txt

Next, have a look at config.json, you can set up multiple accounts for the http auth. The passwords are assumed to be hashed with sha1, you can obtain the hash as follows:

from webapp2_extras import security
security.hash_password('password', method='sha1')

Or by using tools like openssl or shasum:

# openssl
echo -n "password" | openssl sha1

# shasum
echo -n "password" | shasum

Now, you are ready to deploy to google app engine. Depending on how you set up your projects, this may require adjusting app.yaml, or setting the right project for gcloud. Then:

gcloud app deploy app.yaml

will launch your package index

Uploading packages to the package index

Uploading a python package is quite straightforward. First, add your private package index to ~/.pypirc:

[distutils]
index-servers =
        pypi
        local

[local]
username = username
password = password
repository = https://project.appspot.com

[pypi]
repository=https://pypi.python.org/pypi
username=your_pypi_username
password=your_pypi_password

The later reflects a configuration for uploading on the public pypi. Now go to the directory containing setup.py and upload your package to the private package index by specifying the local configuration:

python setup.py sdist upload -r local

Installing from the package index

When installing a package (e.g. dummy), specify the url to the package index:

pip install -i https://username:[email protected]/pypi dummy

Running tests

To run the testsuite, we recommend to use the nox tool:

pip install nox-automation

Next, to run the tests:

nox
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].