mirror of
https://github.com/flatcar/scripts.git
synced 2025-08-09 22:16:58 +02:00
BUG=chromiumos:15513 TEST=None Change-Id: I0d000a7a10d41707950d54c973044a551c7cdd15 Reviewed-on: http://gerrit.chromium.org/gerrit/1150 Reviewed-by: Don Garrett <dgarrett@chromium.org> Tested-by: Don Garrett <dgarrett@chromium.org>
164 lines
5.2 KiB
Bash
Executable File
164 lines
5.2 KiB
Bash
Executable File
#!/bin/bash
|
|
# Set PROGram name
|
|
PROG=$(basename $0)
|
|
########################################################################
|
|
#+
|
|
#+ NAME
|
|
#+ $PROG - ChromeOS image pusher (.zip and .bin)
|
|
#+
|
|
#+ SYNOPSIS
|
|
#+ $PROG [--nolatest] [--beta] [--branch=<branch>]
|
|
#+ --board=<board> <image directory>
|
|
#+ $PROG [--help | -man]
|
|
#+ $PROG [--usage | -?]
|
|
#+
|
|
#+ DESCRIPTION
|
|
#+ Push images up to archive server, chromeos-images and chrome-master.mtv.
|
|
#+ Always pushes up to -rc (release candidate) namespace.
|
|
#+
|
|
#+ OPTIONS
|
|
#+ [--beta] - Beta Channel
|
|
#+ [--nolatest] - Do not set LATEST file
|
|
#+ [--branch] - branch value determines if support
|
|
#+ scripts also get updated
|
|
#+ [--help | -man] - display man page for this script
|
|
#+ [--usage | -?] - display usage information
|
|
#+
|
|
#+ EXAMPLES
|
|
#+
|
|
#+ FILES
|
|
#+
|
|
#+ SEE ALSO
|
|
#+ stdlib.sh - function definitions for TimeStamp, etc.
|
|
#+
|
|
#+ BUGS/TODO
|
|
#+
|
|
#- AUTHOR & DT : djmm Wed Jul 21 15:02:45 PDT 2010
|
|
#-
|
|
########################################################################
|
|
# If NO ARGUMENTS should return *usage*, uncomment the following line:
|
|
usage=${1-yes}
|
|
|
|
# This construct allows $PROG to be a symlink or simply PATH'd to
|
|
symlink=$(readlink $0)
|
|
# Set up basic env and standard functions
|
|
. $(dirname ${symlink:-$0})/stdlib.sh
|
|
|
|
# Set some default options
|
|
VERBOSE=false
|
|
CHANNEL=dev-channel
|
|
NOLATEST=false
|
|
RC=-rc
|
|
for arg in $LOOSEARGS
|
|
do
|
|
case "$arg" in
|
|
--beta) CHANNEL=beta-channel ;;
|
|
--nolatest) NOLATEST=true ;;
|
|
-v) VERBOSE=true ;;
|
|
*) looseargs="$looseargs $arg" ;;
|
|
esac
|
|
done
|
|
# strip leading spaces from final looseargs to pass to program
|
|
basedir=$(echo $looseargs)
|
|
basedir=$(cd $basedir && pwd)
|
|
if [ -z "$board" ]
|
|
then
|
|
$PROG -?
|
|
exit
|
|
fi
|
|
BOARD=$board
|
|
|
|
###############################################################################
|
|
# MAIN
|
|
###############################################################################
|
|
TOOLDIR=$(CanonicalizePath $(dirname $0))
|
|
cversion=$(basename $basedir)
|
|
cversion2=${cversion%%-*}
|
|
binfile=/tmp/ChromeOS-$cversion-$BOARD.bin.gz
|
|
image_host='chromeos-images.corp.google.com'
|
|
# This should change based on architecture/board and dev/beta channel
|
|
imagetarget_base=/var/www/chromeos-official
|
|
imagetarget=$imagetarget_base/$CHANNEL/$BOARD$RC
|
|
usbtarget=/usr/local/google/cltbld/chromeos/$CHANNEL
|
|
baseimagename=chromiumos_base_image.bin
|
|
baseimage=$(dirname $basedir)/src/build/images/$BOARD/$cversion2-a1/$baseimagename
|
|
|
|
# BEGIN script
|
|
TimeStamp begin
|
|
|
|
ReleaseNotify() {
|
|
local lmailto=${1:-"$USER"}
|
|
local lmailfile=/tmp/$PROG-mail.$$
|
|
|
|
logecho -r
|
|
logecho "Notifying $lmailto of release push..."
|
|
cat <<+_MailFile > $lmailfile
|
|
$cversion2 $BOARD is ready for testing at http://go/chromeos-images.
|
|
<P>
|
|
The ChromeOS-RE Team
|
|
+_MailFile
|
|
|
|
mail -s "ChromeOS $cversion2 $BOARD ready for testing" \
|
|
-a "From: ChromeOS Releng<chromeos-re@google.com>" \
|
|
-a "Content-type: text/html" $lmailto < $lmailfile
|
|
|
|
# cleanup
|
|
rm -f $lmailfile
|
|
}
|
|
|
|
# SEND TO MAIN IMAGE TARGET
|
|
if ssh $image_host test -d $imagetarget/$cversion2
|
|
then
|
|
logecho "$imagetarget/$cversion2 already exists. Skipping..."
|
|
else
|
|
logecho "Sending images up to $imagetarget/$cversion2..."
|
|
ssh $image_host mkdir -p $imagetarget/$cversion2
|
|
scp $basedir/image.zip $image_host:$imagetarget/$cversion2/ChromeOS-$cversion-$BOARD.zip
|
|
scp $basedir/factory_image.zip $image_host:$imagetarget/$cversion2/ChromeOS-factory-$cversion-$BOARD.zip
|
|
scp $basedir/*.tar.bz2 $image_host:$imagetarget/$cversion2
|
|
if [ -f $basedir/au-generator.zip ]; then
|
|
scp $basedir/au-generator.zip $image_host:$imagetarget/$cversion2/
|
|
fi
|
|
scp $basedir/debug.tgz $image_host:$imagetarget/$cversion2/debug-$BOARD.tgz
|
|
# Copy the build log, ChangeLog and manifest.xml files
|
|
scp $basedir/*.log $basedir/*.*ml $image_host:$imagetarget/$cversion2
|
|
# Put up a temp copy of the script to use
|
|
remote_tooldir=/tmp/pushimage.$$
|
|
ssh $image_host "rm -rf $remote_tooldir && mkdir -p $remote_tooldir"
|
|
scp $TOOLDIR/contrib/channelsign $TOOLDIR/contrib/gsrestore \
|
|
$image_host:$remote_tooldir
|
|
|
|
instructionsfile=$TOOLDIR/signer_instructions/$BOARD.instructions
|
|
if [ -f $instructionsfile ]
|
|
then
|
|
# Copy over the new format signing instructions.
|
|
scp $instructionsfile \
|
|
$image_host:$imagetarget/$cversion2/ChromeOS-$cversion-$BOARD.instructions
|
|
# Check signing instructions for final destination
|
|
signingchannels=$(awk '/^channel/ {print $3}' $instructionsfile |sort -u)
|
|
for sc in $signingchannels
|
|
do
|
|
if [ "$sc" = dev ]
|
|
then
|
|
# Set signing for dev
|
|
logecho "Touching .tobesigned file..."
|
|
ssh $image_host touch $imagetarget/$cversion2/.tobesigned
|
|
else
|
|
# Or move channels
|
|
ssh $image_host "cd $imagetarget_base && \
|
|
$remote_tooldir/channelsign $cversion2 $sc $BOARD && \
|
|
rm -rf $remote_tooldir"
|
|
fi
|
|
done
|
|
fi
|
|
|
|
$NOLATEST || ssh $image_host "cd $imagetarget && echo $cversion > LATEST"
|
|
ReleaseNotify chromeos-releases@google.com
|
|
fi
|
|
|
|
# Cleanup
|
|
ssh $image_host rm -rf $remote_tooldir
|
|
|
|
# END script
|
|
TimeStamp end
|