Skip to content
/ tds Public

Application deployment system (TDS Deploys Stuff)

License

Notifications You must be signed in to change notification settings

ifwe/tds

Repository files navigation

TDS

Build Status

Authors

Kenneth Lareau, Karandeep Nagra

Description

TDS is a deployment system developed at if(we) with a database backend and a command line frontend. The primary application is written in Python and integrates with several other applications. MySQL was used as the database engine, and SQLAlchemy as the object-relational mapper, with Alembic used for SQLAlchemy schema migrations.

WARNING: Consider this code EXPERIMENTAL. It has not been fully prepared for use outside If(we) though we will be working on this. If you have any questions or suggestions, please email [email protected]

License

Apache License, Version 2.0

Installation

To install all necessary dependencies and TDS:

$ ./setup.py install

Dependencies

Python

TDS requires python 2.7. Operation under python 3.x would be nice, but that is not attempted yet.

PyPI packages

See requirements.txt. To install (NOTE: setup.py will do this for you):

$ pip install -r requirements.txt

Other required packages

  • MySQL development library
    • Debian: sudo apt-get install libmysqlclient-dev
    • RHEL: sudo yum install mysql-devel
  • LDAP libraries:
    • Debian: sudo apt-get install libldap2-dev libsasl2-dev
    • RHEL: sudo yum install openldap-devel

Testing

First, install development requirements (again, setup.py automatically does this for you):

$ pip install -r requirements-dev.txt

Unit tests

Note: many unit tests currently fail; unit testing does not seem to have kept up with development.

The following command will run all unit tests:

$ ./run_tests.py

Feature tests

Note: feature tests depend on infrastructure that no longer exists. To run feature tests, the test environment needs to be modified to (at least) run a local mysql server on demand.

The following command will run all Behave tests:

$ behave

You may specify a set of tags to restrict which feature tests to run:

Tag Specification
no_db No database queries
email_server Set up and use an email server mimic
jenkins_server Set up and use a Jenkins server mimic
hipchat_server Set up and use a HipChat server mimic
wip Works in progress
delay Commands with timed delays

Navigation

Terminology

Definitions of terms used in this documentation and in source are listed below. Controller entries may be incomplete, as some functions related to object types are spread across the application.

Term Definition Examples Model - `tds.model.` Controller - `tds.commands.`
actor `actor.Actor`
application `application.Application`
app type
deploy target Anything on which software can be deployed The server SiteOps with IP 10.0.1.10; the servers SiteOps1, SiteOps2, and SiteOps3 `deploy_target.DeployTarget`
deployment A deployed instance of software TDS v1.5 installed on the server SiteOps `deployment.Deployment` `deploy.DeploymentController`
package A collection of software, commands for installation, dependencies, documentation, etc. Source and installation commands for Apache, mod_ssl, node.js, and MySQL client `package.Package` `package.PackageController`
project An ongoing or completed endeavor to create (or implement) new software A new project to efficiently manage software deployment, named TDS `project.Project` `project.ProjectController`
repository N/A `repository.RepositoryController`

Roadmap

See roadmap.md for details on the release history and planned development of TDS.


README.md: Copyright 2016 Ifwe Inc.

README.md is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

You should have received a copy of the license along with this work. If not, see http://creativecommons.org/licenses/by-sa/4.0/.

About

Application deployment system (TDS Deploys Stuff)

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages