From c9d3c11613e9a47cf380b0cc60900eeb419d5e72 Mon Sep 17 00:00:00 2001 From: CamVan Nguyen Date: Thu, 18 Oct 2018 13:53:39 -0500 Subject: Remove auto-release & hbRelease tools These tools have been ported to pfd_infra_tools Change-Id: I5bc519689b8f13b48eb97a194b9b9f8ad0cb2840 RTC: 200487 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/67707 Reviewed-by: Sameer R Veer Tested-by: Jenkins Server Tested-by: Jenkins OP Build CI Tested-by: Jenkins OP HW Tested-by: FSP CI Jenkins Reviewed-by: Daniel M. Crowell --- src/build/citest/auto-release | 536 ------------------------------------------ 1 file changed, 536 deletions(-) delete mode 100755 src/build/citest/auto-release (limited to 'src/build/citest') diff --git a/src/build/citest/auto-release b/src/build/citest/auto-release deleted file mode 100755 index c147e509e..000000000 --- a/src/build/citest/auto-release +++ /dev/null @@ -1,536 +0,0 @@ -#!/bin/bash -# IBM_PROLOG_BEGIN_TAG -# This is an automatically generated prolog. -# -# $Source: src/build/citest/auto-release $ -# -# OpenPOWER HostBoot Project -# -# Contributors Listed Below - COPYRIGHT 2016,2018 -# [+] International Business Machines Corp. -# -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -# implied. See the License for the specific language governing -# permissions and limitations under the License. -# -# IBM_PROLOG_END_TAG - -function setup { - cd $HOSTBOOT_WORKSPACE - - # Set up environment - source "$HOSTBOOT_WORKSPACE/env.bash" || exit -1 - - # Create cmvc checkout directory - if [ -n "$CMVC_DIR" ]; then - mkdir -p $CMVC_DIR || exit -1 - fi -} - -# Overview of how must-fix release work: -# These steps are used by releases requiring must-fix approvals -# First, function "build-create-track" builds a release & creates a CMVC track -# It sends approver(s) an email with fips-rel, feature/track and commits info. -# We call another funtion "chk-n-wait-approval". -# It allows them a time of 1 day (wait-time input taken from Jenkins) -# It emails approvers and loops continually to check if track was approved. -# Post approval, it exits the loop, calls next function "checkinBuildToTrack" -# which locks files, adds them to track, and completes(not integrate) track. -# Next, Jenkins job "fspCI-n-CMVCtrack-integrate" runs fsp-CI and if successful -# integrates the track - this is the last step of the must-fix release - -function buildrel-create-track { - - echo -e "\nInside \"function buildrel-create-track\"\n" - echo -e "RELEASE_NAME=$RELEASE_NAME\n" - echo -e "PREVIOUS_RELEASE=$PREVIOUS_RELEASE\n" - echo -e "FIPS_RELEASE=$FIPS_RELEASE\n" - echo -e "GIT_BRANCH=$GIT_BRANCH\n" - echo -e "BASE=$BASE\n" - echo -e "EXISTING_TRACK=$EXISTING_TRACK\n" - echo -e "RELEASENOTESTXT=$RELEASENOTESTXT\n" - - ### Define and setup release branch - export PATH=${PATH}:$HOSTBOOT_WORKSPACE/src/build/tools - - echo -e "[$(date)]\n#####-> hbRelease define --level $RELEASE_NAME\ - --released $PREVIOUS_RELEASE --base $BASE --branch $GIT_BRANCH\n" - hbRelease define --level $RELEASE_NAME --released $PREVIOUS_RELEASE\ - --base $BASE --branch $GIT_BRANCH || exit -1 - - echo -e "[$(date)]\n#####-> hbRelease release --level $RELEASE_NAME\n" - hbRelease release --level $RELEASE_NAME || exit -1 - - export SANDBOXROOT=$WORKSPACE - export SANDBOXNAME=$RELEASE_NAME - export SANDBOXBASE=$SANDBOXROOT/$SANDBOXNAME - mkdir -p $SANDBOXBASE || exit -1 - mkdir -p $CMVC_DIR/src/hbfw/nimbus || exit -1 - mkdir -p $CMVC_DIR/src/hbfw/cumulus || exit -1 - - ### Compile and provide binaries - setup - if echo $FIPS_RELEASE | grep -q fips9; then - # First build the standalone - - echo -e "[$(date)]\n#####-> BUILD_MINIMAL=1 nice -+20 make -j16\n" - BUILD_MINIMAL=1 nice -+20 make -j16 || exit -1 - - # With PNOR env var not set, hb prime will make all of the pnor images - unset PNOR - # prime will put the files into expected locations - - echo -e "[$(date)]\n#####-> hb simsetup || exit -1\n" - hb simsetup || exit -1 - echo -e "[$(date)]\n#####-> hb prime || exit -1\n" - hb prime || exit -1 - echo -e "[$(date)]\n#####-> cp \ - $SANDBOXBASE/obj/ppc/hbfw/img/nimbus.pnor \ - $CMVC_DIR/src/hbfw/nimbus || exit -1\n" - cp $SANDBOXBASE/obj/ppc/hbfw/img/nimbus.pnor \ - $CMVC_DIR/src/hbfw/nimbus || exit -1 - echo -e "[$(date)]\n#####-> cp $SANDBOXBASE/src/hbfw/simics.tar \ - $CMVC_DIR/src/hbfw/nimbus || exit -1\n" - cp $SANDBOXBASE/src/hbfw/simics.tar $CMVC_DIR/src/hbfw/nimbus \ - || exit -1 - echo -e "[$(date)]\n#####-> cp \ - $SANDBOXBASE/obj/ppc/hbfw/img/cumulus.pnor \ - $CMVC_DIR/src/hbfw/cumulus\n" - cp $SANDBOXBASE/obj/ppc/hbfw/img/cumulus.pnor \ - $CMVC_DIR/src/hbfw/cumulus || exit -1 - echo -e "[$(date)]\n#####-> cp $SANDBOXBASE/src/hbfw/simics.tar \ - $CMVC_DIR/src/hbfw/cumulus || exit -1\n" - cp $SANDBOXBASE/src/hbfw/simics.tar $CMVC_DIR/src/hbfw/cumulus \ - || exit -1 - - if [ -f $SANDBOXBASE/obj/ppc/hbfw/img/cumulus_cdimm.pnor ]; then - mkdir -p $CMVC_DIR/src/hbfw/cumulus_cdimm || exit -1 - echo -e "[$(date)]\n#####-> cp \ - $SANDBOXBASE/obj/ppc/hbfw/img/cumulus_cdimm.pnor \ - $CMVC_DIR/src/hbfw/cumulus_cdimm\n" - cp $SANDBOXBASE/obj/ppc/hbfw/img/cumulus_cdimm.pnor $CMVC_DIR/src/hbfw/cumulus_cdimm || exit -1 - echo -e "[$(date)]\n#####-> cp $SANDBOXBASE/src/hbfw/simics.tar \ - $CMVC_DIR/src/hbfw/cumulus_cdimm || exit -1\n" - cp $SANDBOXBASE/src/hbfw/simics.tar $CMVC_DIR/src/hbfw/cumulus_cdimm || exit -1 - fi - - echo -e "[$(date)]\n#####-> make clobber\n" - # - make clobber - # - # Now build the FSP-based images - export CONFIG_FILE="$HOSTBOOT_WORKSPACE/src/build/configs/fsprelease.config" - - echo -e "[$(date)]\n#####-> BUILD_MINIMAL=1 nice -+20 make -j16 \n" - BUILD_MINIMAL=1 nice -+20 make -j16 || exit -1 - # - else - # - echo -e "[$(date)]\n##### -> BUILD_MINIMAL=1 nice -+20 make -j16 \n" - BUILD_MINIMAL=1 nice -+20 make -j16 || exit -1 - fi - - # Run hb distribute to put binaries in cmvc checkout directory - - echo -e "[$(date)]\n#####-> hb prime --release $SANDBOXBASE || exit -1\n" - hb prime --release $SANDBOXBASE || exit -1 - - echo -e "[$(date)]\n#####-> cp -rf $SANDBOXBASE/fsp/* $CMVC_DIR/src/hbfw\n" - cp -rf $SANDBOXBASE/fsp/* $CMVC_DIR/src/hbfw || exit -1 - - echo -e "[$(date)]\n#####-> rm -rf $SANDBOXBASE/fsp || exit -1\n" - rm -rf $SANDBOXBASE/fsp || exit -1 - - ### Push tag to gerrit, and create track - echo -e "[$(date)]\n##### -> \ - git push ssh://hostboot-us@gerrit-server/hostboot $RELEASE_NAME\n" - git push ssh://hostboot-us@gerrit-server/hostboot $RELEASE_NAME || exit -1 - # - echo -e "[$(date)]\n##### -> git checkout gerrit/master || exit -1\n" - git checkout gerrit/master || exit -1 - # - echo -e "[$(date)]\n#####-> hbRelease create-track --level $RELEASE_NAME\ - --release $FIPS_RELEASE --released $PREVIOUS_RELEASE --track \ - $EXISTING_TRACK || exit -1\n" - hbRelease create-track --level $RELEASE_NAME --release $FIPS_RELEASE \ - --released $PREVIOUS_RELEASE --track $EXISTING_TRACK || exit -1 - # Check if feature was successfully created and if so set $FEATURE - if [ -f $CMVC_FEATURE_FILE ]; then - FEATURE=`cat $CMVC_FEATURE_FILE`; - else - echo "No feature created" - exit -1 - fi - - ### @todo RTC:171143 - ### Sleep for 5 minutes to allow time for CMVC req's to take effect - echo "Waiting for fspCI requirements to take effect. 5 minutes..." - sleep 5m - echo -e "\nExiting \"function buildrel-create-track\"\n"; -} - -function chk-n-wait-approval { - echo -e "\nInside \"function chk-n-wait-approval\"\n" - echo -e "RELEASE_NAME=$RELEASE_NAME\n" - echo -e "FIPS_RELEASE=$FIPS_RELEASE\n" - echo -e "PREVIOUS_RELEASE=$PREVIOUS_RELEASE\n" - echo -e "EXISTING_TRACK=$EXISTING_TRACK\n" - # - local WAITED_TIME_SECS=0 - local TMOUTSEC=$WAIT_TIME_SECS - local GOT_APPROVAL="" - local APPROVAL_STATUS=-1 - local TRACK_APPROVED_YET="no" - local TRACK_APPROVAL_FILE=$WORKSPACE/track_approval_file - local EXPECTED_STATE="fix" - # - export NEXTJOB="https://hostboot-jenkins.swg-devops.com/job/Hostboot/job/Release/job/\ - auto-release-HB/job/rel-fips/job/rel-fips-4-checkinBuildToTrack/\ - build?delay=0sec" - echo -e "[$(date)]\nUse the information below to manually perform next\ - steps of the mustfix release:" > $TRACK_APPROVAL_FILE - echo -e "\n 1. Point your browser to \n$NEXTJOB\n" >> $TRACK_APPROVAL_FILE - echo -e "\n 2. Copy artifacts by supplying information \ - below:\n" >> $TRACK_APPROVAL_FILE - echo -e "\tFIPS_RELEASE=$FIPS_RELEASE\ - \n\tFEATURE=$FEATURE" >> $TRACK_APPROVAL_FILE - echo -e "\tREL_FIPS_TRIGGER_PROJ=$REL_FIPS_TRIGGER_PROJ\ - \n\tREL_FIPS_TRIGGER_BUILD_NUM=$REL_FIPS_TRIGGER_BUILD_NUM"\ - >> $TRACK_APPROVAL_FILE - echo -e "\n\n\tOptionally supply the following" >> $TRACK_APPROVAL_FILE - echo -e "\tMUSTFIX_APPROVERS=$MUSTFIX_APPROVERS" >> $TRACK_APPROVAL_FILE - echo -e "\tRELEASE_ADMINS=$RELEASE_ADMINS" >> $TRACK_APPROVAL_FILE - echo -e "\n\nPeriodic polling status below:" >> $TRACK_APPROVAL_FILE - - if [[ "$REL_NEEDS_APPR" == "no" ]]; then - echo -e "\n\n" >> $TRACK_APPROVAL_FILE - APPROVAL_STATUS=0 - else - #Get approval for must-fix release - while true - do - #Poll for approval - if it is 'approve', it is not approved yet. - #If it is 'fix' or 'build', then it is approved - GOT_APPROVAL=$(Report -g TrackView -where\ - "releaseName='$FIPS_RELEASE' and defectName='$FEATURE'"\ - -select state) - echo "{$(date)]: GOT_APPROVAL=\"$GOT_APPROVAL\" - \ - [Waiting will quit for state: \"$EXPECTED_STATE\"]"\ - >> $TRACK_APPROVAL_FILE - GOT_APPROVAL=$(grep "GOT_APPROVAL=\"$EXPECTED_STATE\"" \ - $TRACK_APPROVAL_FILE) - if [[ -z "$GOT_APPROVAL" && $WAITED_TIME_SECS -lt \ - "$WAIT_TIME_SECS" ]];then - echo -e "APPROVAL STATE=\"$GOT_APPROVAL\" \ - [EXPECTED_STATE=$EXPECTED_STATE]\n CMVC track NOT approved yet \ - - waiting for approval, will timeout in $TMOUTSEC seconds \ - [WAIT_TIME_SECS=$WAIT_TIME_SECS; \ - WAITED_TIME_SECS=$WAITED_TIME_SECS] ......" - /bin/sleep $POLL_AFTER_SECS - WAITED_TIME_SECS=$((WAITED_TIME_SECS+POLL_AFTER_SECS)) - TMOUTSEC=$((WAIT_TIME_SECS-WAITED_TIME_SECS)) - else - echo -e "\n\n" >> $TRACK_APPROVAL_FILE - MAIL_MSG="Track $FIPS_RELEASE:$FEATURE approval status:\ - \n\tAPPROVAL STATE:\n\t\"$GOT_APPROVAL\"\ - \n\n\t[Expected state: \"$EXPECTED_STATE\"]" - export MAIL_MSG="$MAIL_MSG\n\n\nContent of approval file \ - below:\n$(cat $TRACK_APPROVAL_FILE)\n" - if [[ -n "$GOT_APPROVAL" ]];then - export MAIL_SUB="Approval status of Track $FIPS_RELEASE \ - : $FEATURE [state = $EXPECTED_STATE, after \ - $WAITED_TIME_SECS/$WAIT_TIME_SECS secs]" - APPROVAL_STATUS=0 - else - APPROVAL_STATUS=-1 - export MAIL_SUB="Failed approval of Track $FIPS_RELEASE \ - : $FEATURE [after $WAITED_TIME_SECS/$WAIT_TIME_SECS secs]" - fi - echo -e "$MAIL_SUB\n$MAIL_MSG\n" - echo -e "$MAIL_MSG" | \ - mail -s "$MAIL_SUB" $RELEASE_ADMINS $MUSTFIX_APPROVERS - break - fi - done - fi - - echo -e "\nExiting \"function chk-n-wait-approval\"\n"; - exit $APPROVAL_STATUS -} - -function checkinBuildToTrack { - ### Define and setup release branch - export PATH=${PATH}:$HOSTBOOT_WORKSPACE/src/build/tools - # - echo "#####-> hbRelease define --level $RELEASE_NAME \ - --released $PREVIOUS_RELEASE --base $BASE --branch $GIT_BRANCH" - hbRelease define --level $RELEASE_NAME --released $PREVIOUS_RELEASE \ - --base $BASE --branch $GIT_BRANCH || exit -1 - # - echo "#####-> hbRelease release --level $RELEASE_NAME || exit -1" - hbRelease release --level $RELEASE_NAME || exit -1 - - hbRelease checkinBuildToTrack --level $RELEASE_NAME \ - --release $FIPS_RELEASE --checkInDir $CMVC_DIR \ - --released $PREVIOUS_RELEASE || exit -1 - ### @todo RTC:171143 - ### Sleep for 5 minutes to allow time for CMVC req's to take effect - echo "Waiting for fspCI requirements to take effect. 5 minutes..." - sleep 5m -} - -function build { - ### Define and setup release branch - export PATH=${PATH}:$HOSTBOOT_WORKSPACE/src/build/tools - hbRelease define --level $RELEASE_NAME --released $PREVIOUS_RELEASE --base $BASE --branch $GIT_BRANCH || exit -1 - hbRelease release --level $RELEASE_NAME || exit -1 - - export SANDBOXROOT=$WORKSPACE - export SANDBOXNAME=$RELEASE_NAME - export SANDBOXBASE=$SANDBOXROOT/$SANDBOXNAME - mkdir -p $SANDBOXBASE || exit -1 - mkdir -p $CMVC_DIR/src/hbfw/nimbus || exit -1 - mkdir -p $CMVC_DIR/src/hbfw/cumulus || exit -1 - mkdir -p $CMVC_DIR/src/hbfw/cumulus_cdimm || exit -1 - - ### Compile and provide binaries - setup - if echo $FIPS_RELEASE | grep -q fips9; then - # First bulid the standalone - BUILD_MINIMAL=1 nice -+20 make -j16 || exit -1 - # With PNOR env var not set, hb prime will make all of the pnor images - unset PNOR - # prime will put the files into expected locations - hb simsetup || exit -1 - hb prime || exit -1 - cp $SANDBOXBASE/obj/ppc/hbfw/img/nimbus.pnor $CMVC_DIR/src/hbfw/nimbus || exit -1 - cp $SANDBOXBASE/src/hbfw/simics.tar $CMVC_DIR/src/hbfw/nimbus || exit -1 - cp $SANDBOXBASE/obj/ppc/hbfw/img/cumulus.pnor $CMVC_DIR/src/hbfw/cumulus || exit -1 - cp $SANDBOXBASE/src/hbfw/simics.tar $CMVC_DIR/src/hbfw/cumulus || exit -1 - cp $SANDBOXBASE/obj/ppc/hbfw/img/cumulus_cdimm.pnor $CMVC_DIR/src/hbfw/cumulus_cdimm || exit -1 - cp $SANDBOXBASE/src/hbfw/simics.tar $CMVC_DIR/src/hbfw/cumulus_cdimm || exit -1 - # - make clobber - # Now build the FSP-based images - export CONFIG_FILE="$HOSTBOOT_WORKSPACE/src/build/configs/fsprelease.config" - BUILD_MINIMAL=1 nice -+20 make -j16 || exit -1 - else - BUILD_MINIMAL=1 nice -+20 make -j16 || exit -1 - fi - - # Run hb distribute to put binaries in cmvc checkout directory - hb prime --release $SANDBOXBASE || exit -1 - cp -rf $SANDBOXBASE/fsp/* $CMVC_DIR/src/hbfw || exit -1 - rm -rf $SANDBOXBASE/fsp || exit -1 - - ### Push tag to gerrit, create track and checkin files - git push ssh://hostboot-us@gerrit-server/hostboot $RELEASE_NAME || exit -1 - git checkout gerrit/master || exit -1 - # - hbRelease pre-release --level $RELEASE_NAME --release $FIPS_RELEASE --checkInDir $CMVC_DIR --released $PREVIOUS_RELEASE --track $EXISTING_TRACK || exit -1 - # Check if feature was successfully created and if so set $FEATURE - if [ -f $CMVC_FEATURE_FILE ]; then - FEATURE=`cat $CMVC_FEATURE_FILE`; - else - echo "No feature created" - exit -1 - fi - # - echo -e "The list of commits included in track:$FEATURE (release:${RELEASE_NAME}):\n" > $RELEASENOTESTXT - echo -e "---------------------------------------------" >> $RELEASENOTESTXT - git log --date=short --pretty=format:"%h - %an, %ad : %s" ${PREVIOUS_RELEASE}..${RELEASE_NAME}|egrep -v "$RELEASE_NAME|$PREVIOUS_RELEASE" >> $RELEASENOTESTXT - echo -e "#--------------------------#\n" >> $RELEASENOTESTXT - cat $RELEASENOTESTXT | mail -s "List of commit(s) in track:$FEATURE (release: $RELEASE_NAME)" $RELEASE_ADMINS - - # CMVC_FEATURE_FILE contains one line: 'FEATURE='. - # Get the feature# - IFS='=', read -r -a featureArray <<< $FEATURE - feature=${featureArray[1]} - # RELEASENOTESTXT contains the list of git commits in the HB release - # Post the list to the CMVC feature by adding the content of - # RELEASENOTESTXT as remarks to the feature identified by $feature - Feature -note $feature -remarks "$(cat $RELEASENOTESTXT)" - - # - ### @todo RTC:171143 - ### Sleep for 5 minutes to allow time for CMVC req's to take effect - - echo "Waiting for fspCI requirements to take effect. 5 minutes..." - sleep 5m -} - -function fsp-ci-wait { - joburl=$1 - build_result="unknown" - rc=1 - - if [ -z "$joburl" ]; - then - echo "Invalid or empty job URL." - exit -1 - fi - - # No timeout is implemented here. Timeout would happen at the Jenkins - # project level - echo "Waiting for $joburl build status..." - while true; - do - sleep 10 - # use silent flag (-s) to omit progress meter output - curl -s ${joburl}/api/json | grep building\":false >/dev/null 2>&1 - if [ $? -eq 0 ]; - then - break - fi - done - - # The job is not building anymore. Check the build result. - CURL_OUT="$(curl -s ${joburl}/api/json)" - if [ $? -ne 0 ]; - then - echo "Error verifying build result..." - echo "curl returned $?\n$CURL_OUT" - exit -1 - fi - - echo $CURL_OUT | grep result\":\"SUCCESS - if [ $? -eq 0 ]; - then - echo "Build $joburl passed" - build_result="passed" - rc=0 - fi - - echo $CURL_OUT | grep result\":\"FAILURE - if [ $? -eq 0 ]; - then - echo "Build $joburl failed." - build_result="failed" - rc=1 - fi - - echo $CURL_OUT | grep result\":\"ABORTED - if [ $? -eq 0 ]; - then - echo "Build $joburl aborted." - build_result="aborted" - rc=1 - fi - - if [ "$build_result" == "unknown" ]; - then - echo "Build result for $joburl: unknown." - echo "curl output: $CURL_OUT" - rc=1 - fi - - return $rc -} - -function run_fsp_ci { - ### Call fsp-ci to test hostboot release - # Start fsp-CI job and set URL - retries=3 - - # Retry loop for fsp-CI-jenkins - while true; - do - ((retries--)) - - # Call fsp-CI without force; omitting force allows fsp-CI to kill duplicate jobs - # HDW_MC_LIST is passed by the Jenkins job - this allows to control which HDW machine(s) to use - # for e.g. HDW_MC_LIST can be passed as ' -hdw_machine_list="fleetwood_1, zep_2s4u, zz_2s4u" ' - # If HDW_MC_LIST not supplied, it defaults to zep and zz -no fleetwood. - - OUTPUT="$(fsp-CI-jenkins -r $FIPS_RELEASE -t $FEATURE --test_on_hardware=1 $HDW_MC_LIST)" - - echo -e ">>> BEGIN Returned output tokens from running \"fsp-CI-jenkins\"\n" - echo -e "\nOUTPUT=>$OUTPUT<=" - echo -e "<<< END Returned output tokens from running \"fsp-CI-jenkins\"\n" - - # Check if fsp-CI-jenkins failed to start - if [ $? -eq 0 ]; then - URL="$(echo $OUTPUT | grep -o "Check status at .*" | sed -e "s/Check status at//")" - break - else - if [ $retries -lt 1 ]; then - exit -1 - fi - echo "fsp-CI-jenkins command failed returned $?, retrying..." - sleep 66 - fi - done - - ### Wait on fsp-CI job to complete, whether pass or fail - fsp-ci-wait $URL || exit -1 - -} - -function release { - ### Handle cmvc final commands to integrate track, post notes to BQ - hbRelease post-release --level $RELEASE_NAME --released $PREVIOUS_RELEASE --feature $FEATURE --release $FIPS_RELEASE || exit -1 -} - -function usage { - echo "Usage: auto-release.sh [OPTIONS]" - echo "Runs the steps for Hostboot automated releases" - echo "OPTIONS:" - echo " -b Run build phase" - echo " -t Run test and release phase" - echo " -c Run test phase only (fsp-ci)" - echo " -h Help" - exit 1 -} - -# make sure arguments are provided -if [ $# -eq 0 ] -then - echo "No arguments provided." - usage - exit 1 -fi - -while getopts "btcmwfh" opt; do - case $opt in - b) - build - ;; - t) - setup - run_fsp_ci - release - ;; - c) - run_fsp_ci - ;; - m) - buildrel-create-track - ;; - w) - chk-n-wait-approval - ;; - f) - checkinBuildToTrack - ;; - h) - usage - ;; - \?) - echo "Invalid option: -$OPTARG" >&2 - exit 1 - ;; - :) - echo "Option -$OPTARG requires an argument." >&2 - exit 1 - ;; - esac -done -- cgit v1.2.1