#! /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. # 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="$BUILD_NUMBER" 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