No description
auth | ||
avatars | ||
buildman | ||
buildstatus | ||
buildtrigger | ||
conf | ||
data | ||
digest | ||
emails | ||
endpoints | ||
events | ||
features | ||
formats | ||
grunt | ||
health | ||
screenshots | ||
static | ||
storage | ||
templates | ||
test | ||
tools | ||
util | ||
workers | ||
.dockerignore | ||
.gitignore | ||
alembic.ini | ||
app.py | ||
application.py | ||
Bobfile | ||
boot.py | ||
build.sh | ||
CHANGELOG.md | ||
config.py | ||
dev.df | ||
Dockerfile | ||
external_libraries.py | ||
initdb.py | ||
local-docker.sh | ||
local-run.sh | ||
local-test.sh | ||
MAINTAINERS | ||
pylintrc | ||
README.md | ||
registry.py | ||
release.py | ||
requirements-dev.txt | ||
requirements-nover.txt | ||
requirements.txt | ||
ROADMAP.md | ||
secscan.py | ||
verbs.py | ||
web.py |
quay
Note: The master
branch may be in an unstable or even broken state during development.
Please use releases instead of the master
branch in order to get stable binaries.
Quay is project to build, store, and distribute container images.
High-level features include:
- Docker Registry Protocol v1, v2.1
- AppC Image Discovery
- Authentication provided by LDAP, Keystone, Dex, Google, GitHub
- ACLs, team management, and auditability logs
- Geo-replicated storage provided by local filesystems, S3, GCS, Swift, Ceph
- Continuous Integration integrated with GitHub, Bitbucket, GitLab, and git
- Security Vulnerability Analysis via Clair
- Swagger-compliant HTTP API
Getting Started
macOS
macOS developers will need:
# Download the code
git clone git@github.com:coreos-inc/quay.git && cd quay
# Install the system dependencies
brew install libevent libmagic postgresql gpgme
# Some installs don't have /usr/include, required for finding SASL header files
if [ ! -e /usr/include ]; then sudo ln -s `xcrun --show-sdk-path`/usr/include /usr/include; fi
# Install the Python dependencies
pyenv virtualenv 2.7.11 quay
pyenv activate quay
pip install -r requirements.txt
pip install -r requirements-dev.txt
# Setup a local config
git clone git@github.com:coreos-inc/quay-config.git ../quay-config
ln -s ../../quay-config/local conf/stack
clang errors
Some packages may fail to build with clang (which now defaults to C11).
They can be installed with C99 with:
CFLAGS='-std=c99' pip install --no-cache --no-binary :all: gevent
CFLAGS='-std=c99' pip install --no-cache --no-binary :all: cffi
CFLAGS='-std=c99' pip install --no-cache --no-binary :all: cryptography
Linux
TODO
Running and Testing
Test Data
A SQLite database full of test data is committed to this git repository at test/data/test.db
.
This database is generated by executing python initdb.py
.
The username and password of the admin test account is devtable
and password
, respectively.
Local Scripts
local-run
runs the web server for testinglocal-test
runs the unit test suite
Development inside Docker
To build and run a development container, pass one argument to local-docker.sh:
buildman
: run the buildmanagerdev
: run web server on port 5000initdb
: clear and initialize the test databasenotifications
: run the notification workertest
: run the unit test suite
Adding a Python Dependency
# Create a new virtualenv and activate it
pyenv virtualenv 2.7.11 quay-deps
pyenv activate quay-deps
# Install unversioned dependencies with your changes
pip install -r requirements-nover.txt
# Run the unit test suite
./local-test.sh
# Freeze the versions of all of the dependencies
pip freeze > requirements.txt
Running the Build System
TODO
# Run an instance of redis
docker run -d -p 6379:6379 quay.io/quay/redis
Documentation
Architecture at a Glance
TODO
Terminology
TODO