diff options
author | Ryo Hashimoto <hashimoto@google.com> | 2020-02-03 18:17:14 +0900 |
---|---|---|
committer | Ryo Hashimoto <hashimoto@google.com> | 2020-02-05 09:03:50 +0000 |
commit | 8fcb4fb5c580bfd9121dd8ddb93d4eb907d23f9e (patch) | |
tree | d30afe0b455266a8177e796f52375c5a04b85a99 /src/CI/travis/lib.sh | |
parent | 6a8782c7506c89c95cd7443580458a49559f8291 (diff) | |
download | libiio-android11-d2-release.tar.gz |
Upgrade to v0.18r_aml_301500702platform-tools-31.0.0platform-tools-30.0.5android-mainline-12.0.0_r55android-mainline-11.0.0_r9android-mainline-11.0.0_r8android-mainline-11.0.0_r7android-mainline-11.0.0_r6android-mainline-11.0.0_r5android-mainline-11.0.0_r45android-mainline-11.0.0_r44android-mainline-11.0.0_r43android-mainline-11.0.0_r42android-mainline-11.0.0_r41android-mainline-11.0.0_r40android-mainline-11.0.0_r4android-mainline-11.0.0_r39android-mainline-11.0.0_r38android-mainline-11.0.0_r37android-mainline-11.0.0_r36android-mainline-11.0.0_r35android-mainline-11.0.0_r34android-mainline-11.0.0_r33android-mainline-11.0.0_r32android-mainline-11.0.0_r31android-mainline-11.0.0_r30android-mainline-11.0.0_r3android-mainline-11.0.0_r29android-mainline-11.0.0_r28android-mainline-11.0.0_r27android-mainline-11.0.0_r26android-mainline-11.0.0_r25android-mainline-11.0.0_r24android-mainline-11.0.0_r23android-mainline-11.0.0_r22android-mainline-11.0.0_r21android-mainline-11.0.0_r20android-mainline-11.0.0_r2android-mainline-11.0.0_r19android-mainline-11.0.0_r18android-mainline-11.0.0_r17android-mainline-11.0.0_r16android-mainline-11.0.0_r15android-mainline-11.0.0_r14android-mainline-11.0.0_r13android-mainline-11.0.0_r12android-mainline-11.0.0_r10android-mainline-11.0.0_r1android-11.0.0_r48android-11.0.0_r47android-11.0.0_r46android-11.0.0_r45android-11.0.0_r44android-11.0.0_r43android-11.0.0_r42android-11.0.0_r41android-11.0.0_r40android-11.0.0_r39android-11.0.0_r38android-11.0.0_r37android-11.0.0_r36android-11.0.0_r35android-11.0.0_r34android-11.0.0_r33android-11.0.0_r32android-11.0.0_r31android-11.0.0_r30android-11.0.0_r29android-11.0.0_r28android-11.0.0_r27android-11.0.0_r26android-11.0.0_r24android-11.0.0_r23android-11.0.0_r22android-11.0.0_r21android-11.0.0_r20android-11.0.0_r19android-11.0.0_r18android-11.0.0_r16android11-qpr3-s1-releaseandroid11-qpr3-releaseandroid11-qpr2-releaseandroid11-qpr1-s2-releaseandroid11-qpr1-s1-releaseandroid11-qpr1-releaseandroid11-qpr1-d-s1-releaseandroid11-qpr1-d-releaseandroid11-qpr1-c-releaseandroid11-mainline-tethering-releaseandroid11-mainline-sparse-2021-jan-releaseandroid11-mainline-sparse-2020-dec-releaseandroid11-mainline-releaseandroid11-mainline-permission-releaseandroid11-mainline-os-statsd-releaseandroid11-mainline-networkstack-releaseandroid11-mainline-media-swcodec-releaseandroid11-mainline-media-releaseandroid11-mainline-extservices-releaseandroid11-mainline-documentsui-releaseandroid11-mainline-conscrypt-releaseandroid11-mainline-cellbroadcast-releaseandroid11-mainline-captiveportallogin-releaseandroid11-devandroid11-d2-releaseandroid11-d1-b-release
Bug: 148763437
Test: make libiio
Change-Id: I9810cec91e823a300a5a9da5e0a6b11053a0e420
(cherry picked from commit 79a1a11db0c1ab0ae311ce69c8762b6b285cd5bf)
Diffstat (limited to 'src/CI/travis/lib.sh')
-rw-r--r-- | src/CI/travis/lib.sh | 304 |
1 files changed, 304 insertions, 0 deletions
diff --git a/src/CI/travis/lib.sh b/src/CI/travis/lib.sh new file mode 100644 index 0000000..a071cfc --- /dev/null +++ b/src/CI/travis/lib.sh @@ -0,0 +1,304 @@ +#!/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 |