diff options
Diffstat (limited to 'CI/travis/lib.sh')
-rw-r--r-- | CI/travis/lib.sh | 304 |
1 files changed, 0 insertions, 304 deletions
diff --git a/CI/travis/lib.sh b/CI/travis/lib.sh deleted file mode 100644 index a071cfc..0000000 --- a/CI/travis/lib.sh +++ /dev/null @@ -1,304 +0,0 @@ -#!/bin/sh -e - -export TRAVIS_API_URL="https://api.travis-ci.org" -LOCAL_BUILD_DIR=${LOCAL_BUILD_DIR:-build} - -COMMON_SCRIPTS="jobs_running_cnt.py inside_docker.sh" - -echo_red() { printf "\033[1;31m$*\033[m\n"; } -echo_green() { printf "\033[1;32m$*\033[m\n"; } -echo_blue() { printf "\033[1;34m$*\033[m\n"; } - -get_script_path() { - local script="$1" - - [ -n "$script" ] || return 1 - - if [ -f "CI/travis/$script" ] ; then - echo "CI/travis/$script" - elif [ -f "ci/travis/$script" ] ; then - echo "ci/travis/$script" - elif [ -f "${LOCAL_BUILD_DIR}/$script" ] ; then - echo "${LOCAL_BUILD_DIR}/$script" - else - return 1 - fi -} - -pipeline_branch() { - local branch=$1 - - [ -n "$branch" ] || return 1 - - # master is a always a pipeline branch - [ "$branch" = "master" ] && return 0 - - set +x - # Check if branch name is 20XX_RY where: - # XX - 14 to 99 /* wooh, that's a lot of years */ - # Y - 1 to 9 /* wooh, that's a lot of releases per year */ - for year in $(seq 2014 2099) ; do - for rel_num in $(seq 1 9) ; do - [ "$branch" = "${year}_R${rel_num}" ] && \ - return 0 - done - done - - return 1 -} - -should_trigger_next_builds() { - local branch="$1" - - [ -z "${COVERITY_SCAN_PROJECT_NAME}" ] || return 1 - - # These Travis-CI vars have to be non-empty - [ -n "$TRAVIS_PULL_REQUEST" ] || return 1 - [ -n "$branch" ] || return 1 - set +x - [ -n "$TRAVIS_API_TOKEN" ] || return 1 - - # Has to be a non-pull-request - [ "$TRAVIS_PULL_REQUEST" = "false" ] || return 1 - - pipeline_branch "$branch" || return 1 - - local python_script="$(get_script_path jobs_running_cnt.py)" - if [ -z "$python_script" ] ; then - echo "Could not find 'jobs_running_cnt.py'" - return 1 - fi - - local jobs_cnt=$(python $python_script) - - # Trigger next job if we are the last job running - [ "$jobs_cnt" = "1" ] -} - -trigger_build() { - local repo_slug="$1" - local branch="$2" - - [ -n "$repo_slug" ] || return 1 - [ -n "$branch" ] || return 1 - - local body="{ - \"request\": { - \"branch\":\"$branch\" - } - }" - - # Turn off tracing here (shortly) - set +x - curl -s -X POST \ - -H "Content-Type: application/json" \ - -H "Accept: application/json" \ - -H "Travis-API-Version: 3" \ - -H "Authorization: token $TRAVIS_API_TOKEN" \ - -d "$body" \ - https://api.travis-ci.org/repo/$repo_slug/requests -} - -trigger_adi_build() { - local adi_repo="$1" - local branch="$2" - - [ -n "$adi_repo" ] || return 1 - trigger_build "analogdevicesinc%2F$adi_repo" "$branch" -} - -command_exists() { - local cmd=$1 - [ -n "$cmd" ] || return 1 - type "$cmd" >/dev/null 2>&1 -} - -get_ldist() { - case "$(uname)" in - Linux*) - if [ ! -f /etc/os-release ] ; then - if [ -f /etc/centos-release ] ; then - echo "centos-$(sed -e 's/CentOS release //' -e 's/(.*)$//' \ - -e 's/ //g' /etc/centos-release)-$(uname -m)" - return 0 - fi - ls /etc/*elease - [ -z "${OSTYPE}" ] || { - echo "${OSTYPE}-unknown" - return 0 - } - echo "linux-unknown" - return 0 - fi - . /etc/os-release - if ! command_exists dpkg ; then - echo $ID-$VERSION_ID-$(uname -m) - else - echo $ID-$VERSION_ID-$(dpkg --print-architecture) - fi - ;; - Darwin*) - echo "darwin-$(sw_vers -productVersion)" - ;; - *) - echo "$(uname)-unknown" - ;; - esac - return 0 -} - -__brew_install_or_upgrade() { - brew install $1 || \ - brew upgrade $1 || \ - brew ls --version $1 -} - -brew_install_or_upgrade() { - while [ -n "$1" ] ; do - __brew_install_or_upgrade "$1" || return 1 - shift - done -} - -sftp_cmd_pipe() { - sftp ${EXTRA_SSH} ${SSHUSER}@${SSHHOST} -} - -sftp_rm_artifact() { - local artifact="$1" - sftp_cmd_pipe <<-EOF - cd ${DEPLOY_TO} - rm ${artifact} - EOF -} - -sftp_upload() { - local FROM="$1" - local TO="$2" - local LATE="$3" - - sftp_cmd_pipe <<-EOF - cd ${DEPLOY_TO} - - put ${FROM} ${TO} - ls -l ${TO} - - symlink ${TO} ${LATE} - ls -l ${LATE} - bye - EOF -} - -upload_file_to_swdownloads() { - - if [ "$#" -ne 4 ] ; then - echo "skipping deployment of something" - echo "send called with $@" - return 0 - fi - - local LIBNAME=$1 - local FROM=$2 - local FNAME=$3 - local EXT=$4 - - if [ -z "$FROM" ] ; then - echo no file to send - return 1 - fi - - if [ ! -r "$FROM" ] ; then - echo "file $FROM is not readable" - return 1 - fi - - if [ -n "$TRAVIS_PULL_REQUEST_BRANCH" ] ; then - local branch="$TRAVIS_PULL_REQUEST_BRANCH" - else - local branch="$TRAVIS_BRANCH" - fi - - local TO=${branch}_${FNAME} - local LATE=${branch}_latest_${LIBNAME}${LDIST}${EXT} - local GLOB=${DEPLOY_TO}/${branch}_${LIBNAME}-* - - echo attemting to deploy $FROM to $TO - echo and ${branch}_${LIBNAME}${LDIST}${EXT} - ssh -V - - for rmf in ${TO} ${LATE} ; do - sftp_rm_artifact ${rmf} || \ - echo_blue "Could not delete ${rmf}" - done - - sftp_upload "${FROM}" "${TO}" "${LATE}" || { - echo_red "Failed to upload artifact from '${FROM}', to '${TO}', symlink '${LATE}'" - return 1 - } - - # limit things to a few files, so things don't grow forever - if [ "${EXT}" = ".deb" ] ; then - for files in $(ssh ${EXTRA_SSH} ${SSHUSER}@${SSHHOST} \ - "ls -lt ${GLOB}" | tail -n +100 | awk '{print $NF}') - do - ssh ${EXTRA_SSH} ${SSHUSER}@${SSHHOST} \ - "rm ${DEPLOY_TO}/${files}" || \ - return 1 - done - fi - - return 0 -} - -prepare_docker_image() { - local DOCKER_IMAGE="$1" - sudo apt-get -qq update - echo 'DOCKER_OPTS="-H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock -s devicemapper"' | sudo tee /etc/default/docker > /dev/null - sudo service docker restart - sudo docker pull "$DOCKER_IMAGE" -} - -run_docker_script() { - local DOCKER_SCRIPT="$(get_script_path $1)" - local DOCKER_IMAGE="$2" - local OS_TYPE="$3" - local MOUNTPOINT="${4:-docker_build_dir}" - sudo docker run --rm=true \ - -v "$(pwd):/${MOUNTPOINT}:rw" \ - $DOCKER_IMAGE \ - /bin/bash -e "/${MOUNTPOINT}/${DOCKER_SCRIPT}" "${MOUNTPOINT}" "${OS_TYPE}" -} - -ensure_command_exists() { - local cmd="$1" - local package="$2" - [ -n "$cmd" ] || return 1 - [ -n "$package" ] || package="$cmd" - ! command_exists "$cmd" || return 0 - # go through known package managers - for pacman in apt-get brew yum ; do - command_exists $pacman || continue - $pacman install -y $package || { - # Try an update if install doesn't work the first time - $pacman -y update && \ - $pacman install -y $package - } - return $? - done - return 1 -} - -ensure_command_exists sudo - -# Other scripts will download lib.sh [this script] and lib.sh will -# in turn download the other scripts it needs. -# This gives way more flexibility when changing things, as they propagate -for script in $COMMON_SCRIPTS ; do - [ ! -f "CI/travis/$script" ] || continue - [ ! -f "ci/travis/$script" ] || continue - [ ! -f "${LOCAL_BUILD_DIR}/$script" ] || continue - mkdir -p ${LOCAL_BUILD_DIR} - ensure_command_exists wget - wget https://raw.githubusercontent.com/analogdevicesinc/libiio/master/CI/travis/$script \ - -O $LOCAL_BUILD_DIR/$script -done |