Skip to content

Creating Cdeep3M Release

Chris Churas edited this page Oct 19, 2018 · 16 revisions

This page describes deployment process for CDeep3M

NOTE: THESE INSTRUCTIONS ARE FOR DOING A RELEASE ONLY AND NOT FOR REGULAR COMMITS

NOTE: Releases should be done from master branch.

Release requirements

To build and create releases of CDeep3M the following is required

On Ubuntu 16 the following commands should install needed tools run as superuser:

apt-get -y install octave octave-image octave-pkg-dev git python-pip unzip parallel python-opencv python-mpi4py libtiff-dev libjpeg62 time
cd /tmp
wget https://github.com/stegro/hdf5oct/archive/b047e6e611e874b02740e7465f5d139e74f9765f.zip
unzip b047e6e611e874b02740e7465f5d139e74f9765f.zip
cd hdf5oct-*
make 
make install
cd /tmp
/bin/rm -rf hdf5oct-*
wget https://github.com/bats-core/bats-core/archive/v0.4.0.tar.gz
tar -zxf v0.4.0.tar.gz
/bin/rm v0.4.0.tar.gz
cd bats-core-0.4.0
./install.sh /usr/local
cd /tmp
/bin/rm -rf bats-core-0.4.0

NOTE: Releases should be done from master branch.

Testing

Cdeep3M uses Bats and Octave for testing.

Testing

Before deploy verify code is working by invoking:

make test

All tests should pass and output should look something like this:

$ make test
bats tests
 ✓ test octave scripts
 ✓ run_all_predict.sh no args empty dir
 ✓ run_all_predict.sh success no args and no packages to process
 ✓ run_all_predict.sh success --1fmonly and no packages to process
 ✓ run_all_predict.sh success no args all packages done
 ✓ run_all_predict.sh success no args 1 package in each model dir
 ✓ run_all_predict.sh success --gpu 1 set
 ✓ run_all_predict.sh caffe_predict.sh fails
 ✓ run_all_train.sh no args empty dir
 ✓ run_all_train.sh success no args
 ✓ run_all_train.sh caffe_train.sh fail
 ✓ run_all_train.sh success custom iterations and gpu
 ✓ run_all_train.sh success --1fmonly
 ✓ runprediction.sh no args
 ✓ runprediction.sh verify correct input to CreatePredictJob.m
 ✓ runprediction.sh success
 ✓ runprediction.sh success --1fmonly set
 ✓ runprediction.sh run_all_predict.sh fails
 ✓ runtraining.sh no args
 ✓ runtraining.sh verify correct input to CreateTrainJob.m
 ✓ runtraining.sh success
 ✓ runtraining.sh run_all_train.sh fails
 ✓ runtraining.sh success custom --numiterations
 ✓ runtraining.sh success --1fmonly set

24 tests, 0 failures

Updating version

Before doing a release, the code must be assigned a new version, committed to github.

To update version run make updateversion as seen below and increment the version. For test releases append rc# such as rc1 to version to denote its a release candidate. This Makefile target simply updates the VERSION file.

$ make updateversion
Current (3.1.4) enter new version: 3.1.5rc1
Updating VERSION with new version: 3.1.5rc1

Commit and push the changed VERSION file

git commit -m 'updated to version 3.1.5rc1' VERSION
git push origin <branch name or master>

Create distribution

Run make dist which creates a distribution locally that can be examined by looking in dist/ directory

make dist

Output:

rm -fr dist/
ls -l dist
total 35968
drwxrwxr-x 6 foo foo     4096 Jul 16 17:29 cdeep3m-3.1.5rc1
-rw-rw-r-- 1 foo foo    11189 Jul 16 17:29 cdeep3m_3.1.5rc1_basic_cloudformation.json
-rw-rw-r-- 1 foo foo 36812769 Jul 16 17:29 cdeep3m-3.1.5rc1.tar.gz

Create release

WARNING: To run a release one must be able to commit, tag, and push. In addition, write access to S3 bucket is needed.

NOTE: For more information on the make targets click here

NOTE: Releases should be done from master branch.

make release

Document release on github

  1. From https://github.com/CRBS/cdeep3m click on releases link.
  2. Click on the Draft a new release button.
  3. In the Tag version field select the version set above.
  4. Attach source tree and CloudFormation template created above to release via the Attach binaries link on the page.
  5. Click publish release.
Clone this wiki locally