# Used for the job that is notified when the master chef repository is updated when # a cookbook, role, environment or data bag repository updates chef-repo. When # cookbook-dependency.py, cookbook-update.sh or other-buid.sh are run, they will # update chef-repo and push the changes, causing GitHub to trigger Jenkins to run # the job with this shell script as its build step. # Update the submodules to the proper revisions git submodule update --init --recursive # Knife configuration export KNIFE_CHEF_SERVER="YOUR_CHEF_SERVER" export KNIFE_CLIENT_KEY="$HOME/.chef/client.pem" export KNIFE_NODE_NAME="jenkins" export KNIFE_VALIDATION_CLIENT_NAME="chef-validator" export KNIFE_VALIDATION_CLIENT_KEY="$HOME/.chef/validation.pem" export KNIFE_COOKBOOK_PATH=$WORKSPACE/cookbooks OBJECT=`git log --pretty=oneline -n 1 | perl -n -e '/^(\w{40})\s+(Adding|Updating)\s(cookbook|dependency\scookbook|environments|data_bags|roles)/ && {print "$3"}'` if [ "$OBJECT" == "cookbook" ] || [ "$OBJECT" == "dependency cookbook" ]; then # Extract the cookbook to upload COOKBOOK=`git log --pretty=oneline -n 1 | perl -n -e '/^\w{40}\s+((Adding|Updating)\sdependency\scookbook\s([\w-]+)\sto.*$|(Adding|Updating)\scookbook\s([\w-_]+)\sto.*$)/m && {print "$3$5\n"}'` # Upload the cookbook knife cookbook upload $COOKBOOK elif [ "$OBJECT" == "data_bags" ]; then cd $WORKSPACE/data_bags FILES=`git log --pretty=oneline --name-only -n 1 | perl -n -e '/^([\w\-\_]+\/[\w\-\_]+\.json)$/m && {print "$1\n"}'` cd $WORKSPACE for data_bag in $FILES do knife data bag from file ${data_bag/\// } done elif [ "$OBJECT" == "environments" ]; then cd $WORKSPACE/environments FILES=`git log --pretty=oneline --name-only -n 1 | perl -n -e '/^([\w\-_]+\.json)$/m && {print "$1\n"}'` cd $WORKSPACE for environment in $FILES do knife environment from file $environment done elif [ "$OBJECT" == "roles" ]; then cd $WORKSPACE/roles FILES=`git log --pretty=oneline --name-only -n 1 | perl -n -e '/^([\w\-_]+\.json)$/m && {print "$1\n"}'` cd $WORKSPACE for role in FILES do knife role from file $f done fi