Development (and devops) tools and processes we are using¶
Here’s a list of guidelines that are currently used. They are not set in stone, of course, and will evolve as new techniques and methodologies are explored by the team.
We like having a Makefile at the root of our projects.
It should at least support the following targets:
As already stated elsewhere in this document, we’re using setuptools to build Python packages. See the fine blog posts by Hynek and Ionel (referenced elsewhere in this doc).
For front-end packages: use npm and webpack (not gulp or grunt, they are probably fine but not needed). Investigate rollup.
Source code management¶
We’re using Git as our primary source code management system, and GitHub as our main repository.
For public projects, we have a public project account (https://github.com/abilian).
For private projects, I have a private personal account. We’ll move to a private group account later (it’s more expensive ;).
We’re using Travis for public projects, and Circle CI for both public and private projects.
We used to use Jenkins, and might use it again in the future. Or gitlab CI. But not ATM.
Tasks and issues management¶
See the “Process” chapter. [TODO: link].
Deployment to staging and production servers is currently managed by Fabric using the Fabtools add-ons.
Later, we’ll look into using Ansible or Salt, though at this point (for single server deployment), I believe Fabric is the best choice.
Our Fabric scripts, however, are both a bit simplistic and convoluted. For instance, they don’t deal with database migration, code rollback, etc.
We’re using Vagrant to run full deployment tests on pristine virtual machines. It should become most valuable when we will have actual projects in production, and will need to address issues such as upgrades.
Editors and IDEs¶
The best Python IDE is PyCharm, though its quality seems to be going down recently.
If you don’t like IDEs, use a regular text editor, such as Emacs, Vim, Atom, Sublime… But make sure you have installed the plugins that will make you more productive, such as:
- Syntax highlighting
- Dynamic code linting
Here are a few Chrome plugins that we find useful: