Add basic Makefile

There are a couple of targets in here that some might find useful in
doing DevStack testing in multiple remote VMs.

There are some of the usual boring targets too, like stack and unstack,
that do exactly what you would expect.

Change-Id: I7974cac4cc527bacf6f183ac1f344428b05f2fdc
This commit is contained in:
Dean Troyer 2015-03-28 10:14:47 -05:00
parent 2914118d69
commit f3d52335e7

104
Makefile Normal file
View File

@ -0,0 +1,104 @@
# DevStack Makefile of Sanity
# Interesting targets:
# ds-remote - Create a Git remote for use by ds-push and ds-pull targets
# DS_REMOTE_URL must be set on the command line
#
# ds-push - Merge a list of branches taken from .ds-test and push them
# to the ds-remote repo in ds-test branch
#
# ds-pull - Pull the remote ds-test branch into a fresh local branch
#
# refresh - Performs a sequence of unstack, refresh and stack
# Duplicated from stackrc for now
DEST=/opt/stack
WHEELHOUSE=$(DEST)/.wheelhouse
all:
echo "This just saved you from a terrible mistake!"
# Do Some Work
stack:
./stack.sh
unstack:
./unstack.sh
wheels:
WHEELHOUSE=$(WHEELHOUSE) tools/build-wheels.sh
docs:
tox -edocs
# Just run the shocco source formatting build
docs-build:
INSTALL_SHOCCO=True tools/build_docs.sh
# Just run the Sphinx docs build
docs-rst:
python setup.py build_sphinx
# Run the bashate test
bashate:
tox -ebashate
# Run the function tests
test:
tests/test_ini_config.sh
tests/test_meta_config.sh
tests/test_ip.sh
tests/test_refs.sh
# Spiff up the place a bit
clean:
./clean.sh
rm -rf accrc doc/build test*-e *.egg-info
# Clean out the cache too
realclean: clean
rm -rf files/cirros*.tar.gz files/Fedora*.qcow2 $(WHEELHOUSE)
# Repo stuffs
pull:
git pull
# These repo targets are used to maintain a branch in a remote repo that
# consists of one or more local branches merged and pushed to the remote.
# This is most useful for iterative testing on multiple or remote servers
# while keeping the working repo local.
#
# It requires:
# * a remote pointing to a remote repo, often GitHub is used for this
# * a branch name to be used on the remote
# * a local file containing the list of local branches to be merged into
# the remote branch
GIT_REMOTE_NAME=ds-test
GIT_REMOTE_BRANCH=ds-test
# Push the current branch to a remote named ds-test
ds-push:
git checkout master
git branch -D $(GIT_REMOTE_BRANCH) || true
git checkout -b $(GIT_REMOTE_BRANCH)
for i in $(shell cat .$(GIT_REMOTE_BRANCH) | grep -v "^#" | grep "[^ ]"); do \
git merge --no-edit $$i; \
done
git push -f $(GIT_REMOTE_NAME) HEAD:$(GIT_REMOTE_BRANCH)
# Pull the ds-test branch
ds-pull:
git checkout master
git branch -D $(GIT_REMOTE_BRANCH) || true
git pull $(GIT_REMOTE_NAME) $(GIT_REMOTE_BRANCH)
git checkout $(GIT_REMOTE_BRANCH)
# Add the remote - set DS_REMOTE_URL=htps://example.com/ on the command line
ds-remote:
git remote add $(GIT_REMOTE_NAME) $(DS_REMOTE_URL)
# Refresh the current DevStack checkout nd re-initialize
refresh: unstack ds-pull stack