These explanatory scripts, videos and slideshows, will start your Meteor development infrastructure immediately with: package development, testing, documenting, logging, code style linting all on a platform of continuous integration, delivery and deployment.
Learning new tools is exciting.
Meeting deadlines with them is hard.
Having to integrate, at the same time, the tools to automate the development workflow is a nightmare, yet ... retrofitting those tools to a developed project isn't much better.
If this is your situation, then these tutorials are for you.
Starting your development from the tools in this tutorial, you will immediately comply with the first four criteria of the Joel Test.
You'll be closer to meeting #5 & #10 as well. But it goes beyond that, to stuff that ought to be on the "Test" but isn't, like, um . . . generating documentation from code annotations?
The Joel Test
The goal of this tutorial series is to help Meteor developers put together a complete continuous deployment work environment from which to build out :
The focus is on 'wiring', with very little discussion of what more one can do with each of the various elements once they're wired together -- there are plenty of tutorials about all of that, and I link to some good ones. 'Wiring' refers to the challenge of connecting a variety of different tools together into an integrated whole -- even if the whole doesn't actually do much to begin with.
Here's the complete "wiring diagram"...
Another goal is to help developers begin building Meteor applications as though they were working in multiple teams on multiple projects! In particular, this means going beyond "normal" configuration of ssh and git, to handle multiple user aliases and GitHub deploy keys. The end result will be fractionally more difficult in your daily routine, but much more flexible and "future proof".
I try to be very succinct, with every word dedicated to helping you get the most out of the tutorial in the least time.
In fact, to save you even more time, I generate code fragments, "on-the-fly", employing a naming scheme you choose, so you're getting more than a tutorial -- it's also a toolkit of boilerplate snippets. The end result is a complete work environment designed to elevate you quickly into a high-velocity developer with very low "maintenance drag".
Skim it to see if it's what you need, but to avoid problems later -- please do -- carefully follow all the instructions.
I hope to raise the bar on developer tutorials.
Please let me know if I have succeeded . . . or failed!
I've found few tutorials that make it easy to jump directly to what I need, so I try to avoid that mistake here.
Most likely you'll want to flip through the slides to get an overview, then watch the videos, then spin up a fresh virtual machine and execute the scripts. Since the scripts are semi-automatic, you'll have very little typing to do, and so the whole thing shouldn't cost you more than a few hours.
In fact, grouped as it is, into spoon-sized doses, you can step through it a little bit at a time, when you have time.
You will NOT be able to complete this tutorial without these things :
This is not strictly part of the tutorial, but I created a Docker image that should make this step very easy for you.
We start off with a fresh Ubuntu 14.04 LTS virtual machine and install all the platform dependencies. These are global installs requiring 'sudo'. Subsequent sections should not require 'sudo'. The script shown can run to completion without intervention, or stop at intermediate steps to view explanations.
Towards the goal of "packages-only-apps", we are mainly interested in version control of each distinct package, but we still need a 'do-nothing' app in which to instantiate the packages.
So, we'll prepare a Meteor project and store it in GitHub.
This section shows the steps needed to begin testing a Meteor package.
We'll prepare a package, secure it in GitHub and run preliminary tests with TinyTest in the browser and on the command line.
If you want reusable components, especially if you are working with one or several teams, it's very important to ensure consistent styles and documentation standards from all contributors to all your projects. In this and the next section we'll set up an environment where standards conformance is easy.
The first element is linting with esLint, run in the editor for instant feedback as well as on the command line so conformance can be published and monitored as part of continuous deployment.
The second part about code quality exploits two powerful tools: jsDoc and "GitHub Pages".
We'll put together a mechanism for easily documenting code files and then publishing them as a browsable manual, automatically, and hosted, free of charge, on GitHub.
This section expands on your workstation toolbox to include working with continuous deployment in the cloud. It covers everything involved in setting up linting, automated documentation, unit testing, version control, end-to-end testing and continuous delivery in-the-cloud. So, while a working system is integrated and delivered continuously, it is not yet continuously deployed.
A vital piece of application architecture is scaleable logging: run-time logs that track critical server-side activity at appropriate levels of detail. We "require" Bunyan, a toolkit for NodeJS that focuses on very flexible logging with JSON output, that can be readily archived and subsequently "mined", for example, for usage patterns.
Here we create a complete working, tested, documented Meteor package from a pre-exising NodeJS module. This step also introduces the "impedance mis-match" between the synchronous layer that Meteor builds on top of the asynchronous substrate of NodeJS.
To close the loop on all the preceding development stage parts we now bring the online documentation up-to-date and automate end-to-end testing of our package in-the-cloud; such that interested users can quickly get started using it.
We build our project as an Android app, place it into our project as a download link, then deploy it to Meteor's servers. We use our understanding of that to complete our CI script so we can do it all automatically in CircleCI, every time we push a commit to GitHub.
You cannot run the Android emulator in the Docker machine we created earlier. It's very slow anyway. In this video I show how to install Android KitKat x86 in a Qemu/KVM virtual machine and then connect to it from Meteor in order to "run android-device". You get most of the advantages of the emulator and most of the advantages of connected physical devices, with the downside of neither.
To begin, you will need to obtain the tutorial.
Open up a terminal window, then copy'n paste these commands into it:
export BRANCH="master" # modularize
export URI=
export TUT=
export FILE=
echo "Downloading : \n${URI}/
echo " as : ${TUT}.zip"
cd ${HOME}
wget -O ${TUT}.zip ${URI}/
unzip ${TUT}.zip
mv ${TUT}-
cd ${TUT}
# Ready to run the first script :
# ./Tutorial01_
The result should look like this.
Then you can run the first script with:
./Tutorial01_
After some preparatory steps, you will see a plain text version of the first slide of the "executable slideshow" in your terminal.
My idea, however, is it that you should follow the terminal action while viewing the slides in a browser in any one of the following ways:
echo Your Python version is : $(python -c "import sys;
export TUT=
cd ${HOME}/${TUT}
python -m
echo -e "\n\n Please open your browser to http://localhost:8080/toc.html?part=A#1 \n\n";
fg
Ⓒ Copyright 2016, Martin Bramwell, Warehouseman Last edits : 2016/02/09
This tutorial series is released under the MIT license. Please respect its conditions.
HTML5 Template, Ⓒ "Corporal" 2014 (All right reserved), designed & developed by GrayGrids