#! /bin/bash # # Dieses Skript soll sowohl lokal in einer Working Copy als auch über Jenkins ausführbar sein. # Unter Jenkins soll nur dieser Ordner ausgecheckt werden. # Die gebauten RPMs werden von rpmbuild unter ~/rpmbuild/RPMS abgelegt. # Wenn sie für Jenkins zugreifbar sein sollen (für die Artefacts), müssen sie jedoch # irgendwo im Workspace liegen. Daher ist für die Verwendung über Jenkins ein optionaler # Kopier- bzw. Move-Schritt am Ende notwendig. # determine_info_cmd() { # check whether svn or git (svn-bridge) is used: local is_svn=1 local info_cmd='svn info' svn info >> /dev/null 2>&1 || is_svn=0 if [ $is_svn -eq 0 ]; then info_cmd='git svn info' fi echo $info_cmd } determine_revision() { info_cmd=$(determine_info_cmd) local revision=$($info_cmd | grep "Last Changed Rev:" | cut -d ' ' -f 4) if [[ ! $revision -gt 0 ]]; then echo "Failed_to_determine_revision" exit 1 fi echo $revision } copy_rpms() { if [[ ! -d $outdir ]]; then mkdir -p "$outdir" fi rpms=($(find $rpm_builddir/RPMS -name "${project}_avs_conf-*-${version}-${revision}.*.rpm")) mv "${rpms[@]}" "$outdir" } usage() { echo "usage: $0 [-p ] [-v ] [-o ]" } LANG=en_US project=guez version=1.0 outdir= while getopts p:v:o:h opt_name do case $opt_name in p) project="$OPTARG";; v) version="$OPTARG";; o) outdir="$OPTARG";; h) usage; exit 0;; ?) usage; exit 1;; esac done if [[ ! -d "$project" ]]; then echo "Missing folder for project $project!" exit 1 fi revision=$(determine_revision) spec_file=avs_conf.spec spec_file_legacy=avs_conf-legacy-ws.spec spec_file_if=avs_conf-if.spec echo "Project: ${project}, Version: ${version}.${revision}" rpm_builddir=$HOME/rpmbuild src_dir=$rpm_builddir/SOURCES [ ! -d "$src_dir" ] && mkdir -p "$src_dir" # We use the same project tarball for both packages tar czf "$src_dir/avs_conf.tgz" $project cp "$src_dir/avs_conf.tgz" "$src_dir/avs_conf-if.tgz" # Some projects don't need/have an AVS interface workstation and thus don't need avs_conf-if. spec_files_to_build=("$spec_file") if [[ $project != qatar ]]; then spec_files_to_build+=("$spec_file_if") fi if [[ $project == ahtc ]]; then spec_files_to_build+=("$spec_file_legacy") fi for f in "${spec_files_to_build[@]}"; do sed -e s,@PROJECT@,${project},g \ -e s,@VERSION@,${version},g \ -e s,@RELEASE@,${revision},g \ ${f}.in > $f rpmbuild -bb $f if [ $? -ne 0 ]; then exit $?; fi done if [[ -n $outdir ]]; then copy_rpms fi for f in "${spec_files_to_build[@]}"; do rm $f; done