#!/bin/bash # Copyright (c) 2015 The Chromium OS Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. SCRIPT_DIR=$(dirname $(readlink -f $0)) cd ${SCRIPT_DIR}/.. LOGDIR=logs/stable-version OPTIONS=() # STATUS is part hack, part safety valve. The cron job that invokes # this script may be installed and enabled on both a primary and backup # server. We skip running on the backup, but really, the backup # shouldn't have invoked this script in the first place... # # If we're not invoked on an autotest server at all, we assume this is # for testing, and invoke a dry run instead. # SERVER_STATUS=$(cli/atest server list $(hostname) 2>&1 | awk '/^Status *:/ { print $NF }') if [ "${SERVER_STATUS}" = "primary" ]; then mkdir -p ${LOGDIR} NOTIFY=( chromeos-infra-eng@grotations.appspotmail.com ) else if [ -n "${SERVER_STATUS}" ]; then # must be backup exit 0 fi OPTIONS=( --dry-run ) NOTIFY=( ${LOGNAME}@google.com ) fi # Redirect onto a log file. For debug purposes, skip redirection if # there's a command line argument (we ignore what the argument is), or # if there's no log directory. # TAG=$(date '+%Y-%W') if [ $# -eq 0 -a -d ${LOGDIR} ]; then LOGFILE="update-${TAG}.log" exec >>${LOGDIR}/${LOGFILE} 2>&1 fi trap 'rm -f ${TMPFILE}' EXIT TMPFILE=$(mktemp) date site_utils/assign_stable_images.py "${OPTIONS[@]}" | tee ${TMPFILE} echo # If we have a log directory, clean it up, and send e-mail notification. # The log files change name each week, so by throwing out all but the # most recent 14 files, we keep about 3 months of history, plus this # week's log. # if [ -d ${LOGDIR} ]; then SUBJECT="Stable version update summary ${TAG}" site_utils/gmail_lib.py -s "${SUBJECT}" "${NOTIFY[@]}" <${TMPFILE} rm -f $(ls -r ${LOGDIR}/update-*.log | sed '1,14 d') fi