Josh Hagins
9 years ago
8 changed files with 230 additions and 45 deletions
@ -0,0 +1,5 @@ |
|||
## Travis-CI Scripts |
|||
|
|||
The bash scripts in this directory are run only in Travis-CI, and are placed here to help simplify the [`.travis.yml`](../../.travis.yml) configuration file. |
|||
|
|||
These scripts are not meant to be run locally by users or developers of Homebrew-Cask. |
@ -0,0 +1,67 @@ |
|||
#!/usr/bin/env bash |
|||
# |
|||
# before_install.sh |
|||
# |
|||
# This file is meant to be sourced during the `before_install` phase of the |
|||
# Travis build. Do not attempt to source or run it locally. |
|||
# |
|||
# shellcheck disable=SC1090 |
|||
. "${TRAVIS_BUILD_DIR}/ci/travis/helpers.sh" |
|||
|
|||
enter_build_step |
|||
|
|||
header 'Running before_install.sh...' |
|||
|
|||
# unset rvm hook functions |
|||
run unset -f cd gem |
|||
|
|||
# print all travis-defined environment variables |
|||
run 'env | sort' |
|||
|
|||
# see https://github.com/travis-ci/travis-ci/issues/2666 |
|||
run export BRANCH_COMMIT="${TRAVIS_COMMIT_RANGE##*.}" |
|||
run export TARGET_COMMIT="${TRAVIS_COMMIT_RANGE%%.*}" |
|||
# shellcheck disable=SC2016 |
|||
run 'MERGE_BASE="$(git merge-base "${BRANCH_COMMIT}" "${TARGET_COMMIT}")"' |
|||
run export MERGE_BASE="${MERGE_BASE}" |
|||
run export TRAVIS_COMMIT_RANGE="${MERGE_BASE}...${BRANCH_COMMIT}" |
|||
|
|||
# print detailed OSX version info |
|||
run sw_vers |
|||
|
|||
# capture system ruby and gem locations |
|||
run export SYSTEM_RUBY_HOME="/System/Library/Frameworks/Ruby.framework/Versions/${HOMEBREW_RUBY%.*}" |
|||
run export SYSTEM_RUBY_BINDIR="${SYSTEM_RUBY_HOME}/usr/bin" |
|||
run export SYSTEM_GEM_HOME="${SYSTEM_RUBY_HOME}/usr/lib/ruby/gems/${HOMEBREW_RUBY}" |
|||
run export SYSTEM_GEM_BINDIR="${SYSTEM_GEM_HOME}/bin" |
|||
|
|||
# capture user gem locations |
|||
run export GEM_HOME="$HOME/.gem/ruby/${HOMEBREW_RUBY}" |
|||
run export GEM_BINDIR="${GEM_HOME}/bin" |
|||
|
|||
# ensure that the gems we install are used before system gems |
|||
run export GEM_PATH="${GEM_HOME}:${SYSTEM_GEM_HOME}" |
|||
run export PATH="${GEM_BINDIR}:${SYSTEM_GEM_BINDIR}:${SYSTEM_RUBY_BINDIR}:$PATH" |
|||
|
|||
# ensure that brew uses the ruby we want it to |
|||
run export HOMEBREW_RUBY_PATH="${SYSTEM_RUBY_BINDIR}/ruby" |
|||
|
|||
run which ruby |
|||
run ruby --version |
|||
|
|||
run which gem |
|||
run gem --version |
|||
|
|||
run brew update |
|||
|
|||
# ensure that we are the only brew-cask available |
|||
run brew uninstall --force brew-cask |
|||
|
|||
# mirror the repo as a tap, then run the build from there |
|||
run export CASK_TAP_DIR='/usr/local/Library/Taps/caskroom/homebrew-versions' |
|||
run mkdir -p "${CASK_TAP_DIR}" |
|||
run rsync -az --delete "${TRAVIS_BUILD_DIR}/" "${CASK_TAP_DIR}/" |
|||
run export TRAVIS_BUILD_DIR="${CASK_TAP_DIR}" |
|||
run cd "${CASK_TAP_DIR}" || exit 1 |
|||
|
|||
exit_build_step |
@ -0,0 +1,21 @@ |
|||
#!/usr/bin/env bash |
|||
# |
|||
# before_script.sh |
|||
# |
|||
# This file is meant to be sourced during the `before_script` phase of the |
|||
# Travis build. Do not attempt to source or run it locally. |
|||
# |
|||
# shellcheck disable=SC1090 |
|||
. "${TRAVIS_BUILD_DIR}/ci/travis/helpers.sh" |
|||
|
|||
enter_build_step |
|||
|
|||
header 'Running before_script.sh...' |
|||
|
|||
run which bundle |
|||
run bundle --version |
|||
|
|||
run which rake |
|||
run rake --version |
|||
|
|||
exit_build_step |
@ -0,0 +1,55 @@ |
|||
#!/usr/bin/env bash |
|||
# |
|||
# helpers.sh |
|||
# |
|||
# Helper functions for Travis build scripts. |
|||
# |
|||
|
|||
# force strict error checking |
|||
set -o errexit |
|||
set -o pipefail |
|||
|
|||
# enable extended globbing syntax |
|||
shopt -s extglob |
|||
|
|||
CYAN='\033[0;36m' |
|||
MAGENTA='\033[1;35m' |
|||
NC='\033[0m' # no color |
|||
|
|||
# log command before running and add a blank line |
|||
run () { |
|||
echo -e "${MAGENTA}>>>${NC} $*" |
|||
eval "$*" |
|||
local retval=$? |
|||
echo |
|||
return $retval |
|||
} |
|||
|
|||
# print args as a cyan header |
|||
header () { |
|||
echo |
|||
echo -e "${CYAN}$*${NC}" |
|||
echo |
|||
} |
|||
|
|||
# disallow unbound variables during build step |
|||
enter_build_step () { |
|||
set -o nounset |
|||
} |
|||
|
|||
# allow unbound variables so Travis doesn't get mad at us |
|||
exit_build_step () { |
|||
set +o nounset |
|||
} |
|||
|
|||
modified_cask_files () { |
|||
if [[ -z "${MODIFIED_CASK_FILES+defined}" ]]; then |
|||
MODIFIED_CASK_FILES="$(git diff --name-only --diff-filter=AM "${TRAVIS_COMMIT_RANGE}" -- Casks/*.rb)" |
|||
export MODIFIED_CASK_FILES |
|||
fi |
|||
echo "${MODIFIED_CASK_FILES}" |
|||
} |
|||
|
|||
any_casks_modified () { |
|||
[[ -n "$(modified_cask_files)" ]] |
|||
} |
@ -0,0 +1,21 @@ |
|||
#!/usr/bin/env bash |
|||
# |
|||
# install.sh |
|||
# |
|||
# This file is meant to be sourced during the `install` phase of the Travis |
|||
# build. Do not attempt to source or run it locally. |
|||
# |
|||
# shellcheck disable=SC1090 |
|||
. "${TRAVIS_BUILD_DIR}/ci/travis/helpers.sh" |
|||
|
|||
enter_build_step |
|||
|
|||
header 'Running install.sh...' |
|||
|
|||
# install bundler and project dependencies in $GEM_HOME |
|||
run gem install --no-ri --no-rdoc bundler |
|||
run which bundle |
|||
run bundle --version |
|||
run bundle install --path="${GEM_HOME%/*/*}" |
|||
|
|||
exit_build_step |
@ -0,0 +1,22 @@ |
|||
#!/usr/bin/env bash |
|||
# |
|||
# script.sh |
|||
# |
|||
# This file is meant to be sourced during the `script` phase of the Travis |
|||
# build. Do not attempt to source or run it locally. |
|||
# |
|||
# shellcheck disable=SC1090 |
|||
. "${TRAVIS_BUILD_DIR}/ci/travis/helpers.sh" |
|||
|
|||
enter_build_step |
|||
|
|||
header 'Running script.sh...' |
|||
|
|||
if any_casks_modified; then |
|||
modified_casks=($(modified_cask_files)) |
|||
run brew cask style "${modified_casks[@]}" |
|||
fi |
|||
|
|||
run bundle exec rake test |
|||
|
|||
exit_build_step |
Loading…
Reference in new issue