Skip to content

Instantly share code, notes, and snippets.

@sts
Last active December 16, 2015 14:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sts/5447023 to your computer and use it in GitHub Desktop.
Save sts/5447023 to your computer and use it in GitHub Desktop.
automunki-release.sh -- Build a munki release of build artifacts.
#!/usr/bin/env bash
#
# Copyright 2013, Stefan Schlesinger - http://sts.ono.at
#
set -e
set -x
checks_and_defaults()
{
if [ -z "${JOB_NAME:-}" ] ; then
echo "*** ERROR: No JOB_NAME defined, please run it in jenkins. ***"
exit 1
fi
if [ -z "${RELEASE:-}" ] ; then
RELEASE=distribution-$(date +%Y%m%d%H%M%S)
echo "*** No release name given. Using autogenerated release name ${RELEASE}. ***"
fi
if [ -z "${MUNKI_CURRENT_POINTER:-}" ] ; then
MUNKI_CURRENT_POINTER=/Library/WebServer/Documents/munki
fi
if [ -z "${MUNKI_RELEASE_BASE:-}" ] ; then
MUNKI_RELEASE_BASE=/Library/WebServer/Documents/munki-releases
fi
if [ -z "${AUTOMUNKI_BASE:-}" ] ; then
AUTOMUNKI_BASE=/automunki
fi
if [ -z "${THIS_RELEASE:-}" ] ; then
THIS_RELEASE=$MUNKI_RELEASE_BASE/$RELEASE
fi
if [ -z "${PREV_RELEASE:-}" ] ; then
if [ -L "${PREV_RELEASE}" ] ; then
pushd $MUNKI_CURRENT_POINTER
PREV_RELEASE=`pwd -P`
popd
else
PREV_RELEASE=$THIS_RELEASE
fi
fi
}
copy_old_release()
{
[ ! -d $THIS_RELEASE ] && mkdir -p $THIS_RELEASE
rsync -avz --delete $PREV_RELEASE/ $THIS_RELEASE/
}
create_release_structure()
{
echo "*** Creating release directory structure for $RELEASE in $THIS_RELEASE. ***"
[ ! -d $THIS_RELEASE/catalogs ] && mkdir -p $THIS_RELEASE/catalogs
[ ! -d $THIS_RELEASE/manifests ] && mkdir -p $THIS_RELEASE/manifests
[ ! -d $THIS_RELEASE/pkgs/jenkins ] && mkdir -p $THIS_RELEASE/pkgs/jenkins
[ ! -d $THIS_RELEASE/pkgsinfo ] && mkdir -p $THIS_RELEASE/pkgsinfo
}
copy_artifacts()
{
for plist in $(find $AUTOMUNKI_BASE -depth 2 -name '*.plist') ; do
cp $plist $THIS_RELEASE/pkgsinfo
done
for dmg in $(find $AUTOMUNKI_BASE -depth 2 -name '*.dmg') ; do
cp $dmg $THIS_RELEASE/pkgs/jenkins
done
}
make_catalog() {
pushd $THIS_RELEASE
/usr/local/munki/makecatalogs .
popd
}
release()
{
ln -s $THIS_RELEASE $MUNKI_CURRENT_POINTER
}
checks_and_defaults
copy_old_release
create_release_structure
copy_artifacts
make_catalog
release
/Library/WebServer/Documents/munki -> /Library/WebServer/Documents/munki-releases/distribution-20130423195006
/Library/WebServer/Documents/munki-releases
/Library/WebServer/Documents/munki-releases/distribution-20130423195006/catalogs
/Library/WebServer/Documents/munki-releases/distribution-20130423195006/catalogs/all
/Library/WebServer/Documents/munki-releases/distribution-20130423195006/catalogs/testing
/Library/WebServer/Documents/munki-releases/distribution-20130423195006/manifests
/Library/WebServer/Documents/munki-releases/distribution-20130423195006/pkgs
/Library/WebServer/Documents/munki-releases/distribution-20130423195006/pkgs/jenkins
/Library/WebServer/Documents/munki-releases/distribution-20130423195006/pkgs/jenkins/Adium-1.5.6.dmg
/Library/WebServer/Documents/munki-releases/distribution-20130423195006/pkgs/jenkins/AdobeAIR-3.7.0.1530.dmg
/Library/WebServer/Documents/munki-releases/distribution-20130423195006/pkgs/jenkins/AdobeFlashPlayer-11.7.700.169.dmg
/Library/WebServer/Documents/munki-releases/distribution-20130423195006/pkgs/jenkins/Firefox-10.0.12esr.dmg
/Library/WebServer/Documents/munki-releases/distribution-20130423195006/pkgs/jenkins/Flip4Mac-3.0.dmg
/Library/WebServer/Documents/munki-releases/distribution-20130423195006/pkgs/jenkins/Google-Chrome-26.0.1410.65.dmg
/Library/WebServer/Documents/munki-releases/distribution-20130423195006/pkgs/jenkins/HewlettPackardPrinterDrivers.dmg
/Library/WebServer/Documents/munki-releases/distribution-20130423195006/pkgs/jenkins/Homebrew-20130423.dmg
/Library/WebServer/Documents/munki-releases/distribution-20130423195006/pkgs/jenkins/munkitools-0.8.4.1770.0.dmg
/Library/WebServer/Documents/munki-releases/distribution-20130423195006/pkgs/jenkins/the_unarchiver-3.7.dmg
/Library/WebServer/Documents/munki-releases/distribution-20130423195006/pkgs/jenkins/Thunderbird-17.0.5esr.dmg
/Library/WebServer/Documents/munki-releases/distribution-20130423195006/pkgs/jenkins/VLC-2.0.6.dmg
/Library/WebServer/Documents/munki-releases/distribution-20130423195006/pkgsinfo
/Library/WebServer/Documents/munki-releases/distribution-20130423195006/pkgsinfo/Adium-1.5.6.plist
/Library/WebServer/Documents/munki-releases/distribution-20130423195006/pkgsinfo/AdobeFlashPlayer-11.7.700.169.plist
/Library/WebServer/Documents/munki-releases/distribution-20130423195006/pkgsinfo/Firefox-10.0.12esr.plist
/Library/WebServer/Documents/munki-releases/distribution-20130423195006/pkgsinfo/Flip4Mac-3.0.plist
/Library/WebServer/Documents/munki-releases/distribution-20130423195006/pkgsinfo/Google-Chrome-26.0.1410.65.plist
/Library/WebServer/Documents/munki-releases/distribution-20130423195006/pkgsinfo/Homebrew-20130423.plist
/Library/WebServer/Documents/munki-releases/distribution-20130423195006/pkgsinfo/the_unarchiver-3.7.plist
/Library/WebServer/Documents/munki-releases/distribution-20130423195006/pkgsinfo/Thunderbird-17.0.5esr.plist
/Library/WebServer/Documents/munki-releases/distribution-20130423195006/pkgsinfo/version-info.plist
/Library/WebServer/Documents/munki-releases/distribution-20130423195006/pkgsinfo/VLC-2.0.6.plist
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment