From 57f7a85a3379a8f7107320a15e60d9185d628444 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Bosdonnat?= Date: Mon, 27 Nov 2023 11:42:12 +0100 Subject: [PATCH] Remove scripts moved to the uyuni-releng-tools repository --- rel-eng/_service | 11 - rel-eng/bin/mkchlog | 188 --------- rel-eng/build-packages-for-obs.sh | 216 ---------- rel-eng/build-packages-local-obs.sh | 2 +- rel-eng/push-packages-to-obs.sh | 392 ------------------ .../testing/docker/scripts/push-to-obs.sh | 4 +- 6 files changed, 3 insertions(+), 810 deletions(-) delete mode 100644 rel-eng/_service delete mode 100755 rel-eng/bin/mkchlog delete mode 100755 rel-eng/build-packages-for-obs.sh delete mode 100755 rel-eng/push-packages-to-obs.sh diff --git a/rel-eng/_service b/rel-eng/_service deleted file mode 100644 index 469c44902918..000000000000 --- a/rel-eng/_service +++ /dev/null @@ -1,11 +0,0 @@ - - - *.obscpio - * - - - - *.tar - gz - - diff --git a/rel-eng/bin/mkchlog b/rel-eng/bin/mkchlog deleted file mode 100755 index 9e9d8d233d4d..000000000000 --- a/rel-eng/bin/mkchlog +++ /dev/null @@ -1,188 +0,0 @@ -#!/bin/bash - -function usage() { -cat << EOF -mkchlog - Create changelog entries for Uyuni packages - -Usage: mkchlog [OPTIONS] [MESSAGE] - -When called from a subdirectory of any Uyuni package, create a changelog file in -the following format: - - .changes.. - -If not explicitly specified, fetch username and feature_name from git email's -username part and the current branch name. - -With no MESSAGE, open a text editor for manual input. -The default editor can be specified by setting the EDITOR environment variable. - - -f, --feature set the feature name to use as a filename part - -u, --username set the username to use as a filename part - -r, --remove remove existing changelog file - -n, --no-wrap do not wrap automatically the message at 67 characters - -h, --help display this help and exit - -Uyuni project: -EOF -} - -# Out of the box macOS ships with BSD getopt which doesn't support long args -if [ "$(uname -s)" == "Darwin" ] && $(man getopt | grep -i -q "bsd"); then - echo "Error: This tool requires GNU getopt, but your system is using BSD getopt. Please install GNU getopt and add it to your PATH." - exit 1 -fi - -ARGS=$(getopt -n mkchlog -o rhnf:u: --long remove,help,no-wrap,feature:username: -- "$@") -if [ $? -ne 0 ]; then - exit 1 -fi - -eval set -- "$ARGS" -while [ : ]; do - case "$1" in - -h|--help) - usage - exit - ;; - -f|--feature) - FEATURE=$2 - shift 2 - ;; - -u|--username) - USER=$2 - shift 2 - ;; - -r|--remove) - REMOVE=1 - shift - ;; - -n|--no-wrap) - NO_WRAP=1 - shift - ;; - --) - shift - break - ;; - esac -done - -if ! command -v git &>/dev/null; then - echo "Error: git is not available in your system." - exit 1 -fi - -GITROOT=`git rev-parse --show-toplevel 2>/dev/null` -if [ $? -ne 0 ] || ! [ -d $GITROOT/rel-eng/packages ]; then - echo "Error: Not in Uyuni working directory." - exit 1 -fi - -CURDIR=`git rev-parse --show-prefix` || exit 1 - -if [ -z "$USER" ]; then - GITMAIL=`git config --get user.email 2>/dev/null` - if [ -n "$GITMAIL" ]; then - USER=${GITMAIL%@*} - else - echo "Cannot read the username from git config. Omitting the username part." - fi -fi - -if [ -z "$FEATURE" ]; then - FEATURE=`git rev-parse --abbrev-ref HEAD 2>/dev/null` - if [ -z "$FEATURE" ] || [ "HEAD" == "$FEATURE" ]; then - echo "Cannot read the branch name from the current HEAD. Omitting the feature name part." - unset FEATURE - fi -fi - -if [ -z $USER ] && [ -z $FEATURE ]; then - echo "Error: Neither username nor branch name could be read. Please specify the values using --feature and --username options or create a changelog file manually." - exit 1 -fi - -# Returns the changelog file name in format .changes... -# Loops through the base directories of each package and tries to match one with the current directory. -# Returns 1 if no match found, which means the user is outside of a package directory. -function getChangelogFile() { - for pkg in $(cat $GITROOT/rel-eng/packages/* | cut -d' ' -f2) - do - if echo $CURDIR | grep -q "^$pkg"; then - local chfile=$(ls $GITROOT/$pkg*.changes) - echo $chfile${USER:+.$USER}${FEATURE:+.$FEATURE} - return - fi - done - exit 1 -} - -# Get user's default text editor, falling back to vi. -function getEditorCmd() { - local cmd - if [ -n "$EDITOR" ]; then - cmd=$EDITOR - elif command -v vim &>/dev/null; then - cmd=vim - else - cmd=vi - fi - - # Specific CLI options for common text editors - case "$cmd" in - vi*) - cmd="$cmd +1 +startinsert!" - ;; - *) - cmd="$cmd +1:3" - ;; - esac - - echo $cmd -} - -CHFILE=$(getChangelogFile) -if [ $? -ne 0 ]; then - echo "Error: Not in a package directory." - exit 1 -fi - -# Remove option -if ! [ -z $REMOVE ]; then - if [ -f $CHFILE ]; then - git restore --staged $CHFILE 2>/dev/null - rm $CHFILE 2>/dev/null - exit - else - echo "Error: '$CHFILE' does not exist." - exit 1 - fi -fi - -# Add the new entry -if [ -z $NO_WRAP ]; then - echo "$1" | fold -s -w 65 | sed '1s/^.*$/- &/;2,$s/^.*$/ &/' > $CHFILE.new -else - echo "- $1" > $CHFILE.new -fi - -# Append older entries -cat $CHFILE >> $CHFILE.new 2>/dev/null - -# Open file for edit -if [ -z "$1" ]; then - $(getEditorCmd) $CHFILE.new -fi - -# Move file into place -if [ -s $CHFILE.new ]; then - mv $CHFILE.new $CHFILE - # Stage in git - git add $CHFILE -else - # Unstage and remove - echo "No entries written. Discarding the changelog file." - git restore --staged $CHFILE 2>/dev/null - rm $CHFILE.new $CHFILE 2>/dev/null -fi diff --git a/rel-eng/build-packages-for-obs.sh b/rel-eng/build-packages-for-obs.sh deleted file mode 100755 index 605698675a54..000000000000 --- a/rel-eng/build-packages-for-obs.sh +++ /dev/null @@ -1,216 +0,0 @@ -#! /bin/bash -BASE_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" -set -e -# -# For all packages in git:/rel-eng/packages (or defined in $PACKAGES) -# provide tarball, spec and changes in $WORKSPACE/SRPMS/ -# -# git_package_defs() has a hardcoded list of packages excluded by default. -# -WORKSPACE=${WORKSPACE:-/tmp/push-packages-to-obs} -PACKAGE="$@" - -grep -v -- "\(--help\|-h\|-?\)\>" <<<"$@" || { - cat < ($WORKSPACE). -EOF - exit 0 -} - -# check cwd is in git -GIT_DIR=$(git rev-parse --show-cdup) -test -z "$GIT_DIR" || cd "$GIT_DIR" -GIT_DIR=$(pwd) - -# check presence of tito -test -x "/usr/bin/tito" || { - echo "Missing '/usr/bin/tito' needed for build." >&2 - exit 2 -} -TITO="/usr/bin/tito" - -# check for unrpm -which unrpm &> /dev/null || { - echo "unrpm not found in the PATH, do 'zypper install build'" >&2 - exit 2 -} - -# create workspace -test -d "$WORKSPACE" || mkdir -p "$WORKSPACE" - -# build the src rpms... -SRPM_DIR="$WORKSPACE/SRPMS" -rm -rf "$SRPM_DIR" -mkdir -p "$SRPM_DIR" - -SRPMBUILD_DIR="$WORKSPACE/SRPMBUILD" -rm -rf "$SRPMBUILD_DIR" -mkdir -p "$SRPMBUILD_DIR" -trap "test -d \"$SRPMBUILD_DIR\" && /bin/rm -rf -- \"$SRPMBUILD_DIR\" " 0 1 2 3 13 15 - -# not nice but tito does not take it via CLI, via .rc -# file prevents parallel execution for different OBS -# projects.Thus we patched tito to take the builddir -# from environment: -export RPMBUILD_BASEDIR=$SRPMBUILD_DIR - -function git_package_defs() { - # - "PKG_NAME PKG_VER PKG_DIR" from git:/rel-eng/packages/ - # - define $PACKAGE to build a specific set of packages. - # - usage: - # while read PKG_NAME PKG_VER PKG_DIR; do - # ... - # done < <(git_package_defs) - # - test -n "$PACKAGE" || { - PACKAGE=$(ls "$GIT_DIR"/rel-eng/packages/) - } - for N in $PACKAGE; do - awk -vN=$N '{printf "%s %s %s\n", N, $1, $2}' "$GIT_DIR"/rel-eng/packages/$N - done -} - -echo "Going to build new obs packages in $SRPM_DIR..." -T_DIR="$SRPMBUILD_DIR/.build" -T_LOG="$SRPMBUILD_DIR/.log" -SUCCEED_CNT=0 -FAILED_CNT=0 -FAILED_PKG= - -VERBOSE=$VERBOSE -while read PKG_NAME PKG_VER PKG_DIR; do - for tries in 1 2 3; do - - if [[ $PKG_DIR == *"containers"* ]]; then - CONTAINER_NAME=$(basename "$PKG_DIR") - CONTAINS_SPEC_FILE=0 - - if ls $GIT_DIR/$PKG_DIR | grep \.spec 1> /dev/null 2>&1; then - CONTAINS_SPEC_FILE=1 - fi - if [ ! -d "$GIT_DIR/$PKG_DIR" ]; then - FAILED_CNT=$(($FAILED_CNT+1)) - FAILED_PKG="$FAILED_PKG$(echo -ne "\n $(basename $PKG_DIR)")" - echo "*** FAILED Building package [$(basename $PKG_DIR)] - $PKG_DIR does not exist" - continue 2 - elif [ $CONTAINS_SPEC_FILE == 0 ]; then - #check if folder does not contains a spec file, otherwise although it's in containers folder it's a RPM package - CONTAINER_NAME=$(basename "$PKG_DIR") - echo "=== Building container image [${CONTAINER_NAME}]" - - cp -r "$GIT_DIR/$PKG_DIR" "$SRPM_DIR/" - if [ -f "${PKG_DIR}/Chart.yaml" ]; then - pushd "${SRPM_DIR}/${CONTAINER_NAME}" >/dev/null - CHART_FILES="values.yaml values.schema.json charts crds templates LICENSE README.md" - TO_INCLUDE=() - for F in ${CHART_FILES}; do - if [ -e "${F}" ]; then - TO_INCLUDE+=("${F}") - fi - done - tar cf "${SRPM_DIR}/${CONTAINER_NAME}/${CONTAINER_NAME}.tar" "${TO_INCLUDE[@]}" - rm -r "${TO_INCLUDE[@]}" - popd >/dev/null - fi - SUCCEED_CNT=$(($SUCCEED_CNT+1)) - continue 2 - else # $CONTAINS_SPEC_FILE==1 - echo "*** [ $PKG_DIR ] contains a spec file" - fi - fi - - echo "=== Building package [$PKG_NAME-$PKG_VER] from $PKG_DIR (Try $tries)" - rm -rf "$SRPMBUILD_DIR" - mkdir -p "$SRPMBUILD_DIR" - - cd "$GIT_DIR/$PKG_DIR" - $TITO build ${VERBOSE:+--debug} ${TEST:+--test} --srpm >"$T_LOG" 2>&1 || { - cat "$T_LOG" - test $tries -eq 3 || continue - FAILED_CNT=$(($FAILED_CNT+1)) - FAILED_PKG="$FAILED_PKG$(echo -ne "\n $PKG_NAME-$PKG_VER")" - echo "*** FAILED Building package [$PKG_NAME-$PKG_VER]" - continue 2 - } - ${VERBOSE:+cat "$T_LOG"} - - eval $(awk '/^Wrote:.*src.rpm/{srpm=$2}/^Wrote:.*.changes/{changes=$2}END{ printf "SRPM=\"%s\"\n",srpm; printf "CHANGES=\"%s\"\n",changes; }' "$T_LOG") - EXTRA_CHANGELOGS=0 - if [ "$(head -n1 ${CHANGES}|grep '^- ')" == "" ]; then - PREVIOUS_CHANGELOGS=0 - else - PREVIOUS_CHANGELOGS=1 - fi - FILELIST="$(ls ${GIT_DIR}/${PKG_DIR}${PKG_NAME}.changes.* 2> /dev/null; true)" - for FILE in $FILELIST; do - if [ ${PREVIOUS_CHANGELOGS} -eq 0 -a ${EXTRA_CHANGELOGS} -eq 0 ]; then - sed -i '1i\\' ${CHANGES} - fi - EXTRA_CHANGELOGS=1 - LINENUMBER=1 - while IFS= read -r LINE; do - if [ "${LINE}" != "" ]; then - sed -i "${LINENUMBER}i\\${LINE}" ${CHANGES} - LINENUMBER=$((LINENUMBER+1)) - fi - done < ${FILE} - done - if [ "$(head -n1 ${CHANGES}|grep '^- ')" != "" ]; then - echo "*** Untagged package, adding fake header..." - sed -i "1i Fri Jan 01 00:00:00 CEST 2038 - faketagger@suse.inet\n" ${CHANGES} - sed -i '1i -------------------------------------------------------------------' ${CHANGES} - fi - if [ -e "$SRPM" -a -e "$CHANGES" ]; then - mkdir "$T_DIR" - ( set -e; cd "$T_DIR"; unrpm "$SRPM"; ) >/dev/null 2>&1 - test -z "$CHANGES" || mv "$CHANGES" "$T_DIR" - else - test $tries -eq 3 || continue - FAILED_CNT=$(($FAILED_CNT+1)) - FAILED_PKG="$FAILED_PKG$(echo -ne "\n $PKG_NAME-$PKG_VER")" - echo "*** FAILED Building package [$PKG_NAME-$PKG_VER] - src.rpm or changes file does not exist" - continue 2 - fi - - # Convert to obscpio - SPEC_VER=$(sed -n -e 's/^Version:\s*\(.*\)/\1/p' ${T_DIR}/${PKG_NAME}.spec) - SOURCE=$(sed -n -e 's/^\(Source\|Source0\):\s*.*[[:space:]\/]\(.*\)/\2/p' ${T_DIR}/${PKG_NAME}.spec|sed -e "s/%{name}/${PKG_NAME}/"|sed -e "s/%{version}/${SPEC_VER}/") - # If the package does not have sources, we don't need to repackage them - if [ "${SOURCE}" != "" ]; then - FOLDER=$(tar -tf ${T_DIR}/${SOURCE}|head -1|sed -e 's/\///') - (cd ${T_DIR}; tar -xf ${SOURCE}; rm ${SOURCE}; mv ${FOLDER} ${PKG_NAME}; find ${PKG_NAME} | cpio --create --format=newc --reproducible > ${FOLDER}.obscpio; rm -rf ${PKG_NAME}) - fi - # Move to destination - mv "$T_DIR" "$SRPM_DIR/$PKG_NAME" - # If the package does not have sources, we don't need service or .obsinfo file - if [ "${SOURCE}" != "" ]; then - # Copy service - cp ${BASE_DIR}/_service "${SRPM_DIR}/${PKG_NAME}" - # Create .obsinfo file - cat > "${SRPM_DIR}/${PKG_NAME}/${PKG_NAME}.obsinfo" </dev/null && pwd )" -set -e -# -# For all packages prepared by build-packages-for-obs.sh in -# $WORKSPACE/SRPMS/ prepare and submitt changed packages -# to OBS. -# -# Use $OSCRC ot pass an osc configfile containing required credentials -# (otherwise ~/.oscrc) -# -# srpm_package_defs() has a hardcoded list of packages excluded by default. -# -WORKSPACE=${WORKSPACE:-/tmp/push-packages-to-obs} -PACKAGE="$@" -OSCRC=${OSCRC:+-c $OSCRC} -OSCAPI=${OSCAPI:-https://api.suse.de} - -OSC="osc ${OSCRC} -A ${OSCAPI}" -if [ "$OSC_EXPAND" == "TRUE" ];then - OSC_CHECKOUT="$OSC checkout -e" -else - OSC_CHECKOUT="$OSC checkout -u" -fi -OBS_PROJ=${OBS_PROJ:-Devel:Galaxy:Manager:TEST} - -FAKE_COMITTOBS=${FAKE_COMITTOBS:+1} - -# Set KEEP_SRPMS environment variable to TRUE if you want to keep your SRPMS -# Useful if, for example, you are resubmitting the same set to several -# projects in row -KEEP_SRPMS=${KEEP_SRPMS:-FALSE} - -DIFF="diff -u" - -grep -v -- "\(--help\|-h\|-?\)\>" <<<"$@" || { - cat < ($WORKSPACE) -to OBS ($OBS_PROJ). Without argument all packages in SRPMS are processed. -If OBS_TEST_PROJECT environment variable has been set, packages will be -submitted to it, instead. This is useful for, for example, building a project -that contains packages that have been changed in a Pull Request. -EOF - exit 0 -} - -function srpm_package_defs() { - # - "PKG_NAME" from $SRPM_DIR, using a hardcoded blacklist - # of packages we do not submitt. - # - define $PACKAGE to build a specific set of packages. - # - usage: - # while read PKG_NAME; do - # ... - # done < <(srpm_package_defs) - # - PACKAGE=$(find "$SRPM_DIR" -mindepth 1 -maxdepth 1 -type d -printf "%P\n") - for N in $PACKAGE; do - test -d "$SRPM_DIR/$N" || { - echo "No package dir '$SRPM_DIR/$N'" >&2 - exit 99 - } - echo "$N" - done -} - -# checking for changed packages -# -function unrpm_to.d() -{ - local srpm="$1" - test -f "$srpm" || { echo "No .rpm to unpack: '$srpm'" >&2; return 1; } - local tdir="$srpm".d - rm -rf "$tdir" - mkdir -p "$tdir" - ( set -e; cd "$tdir"; unrpm ../"$(basename "$srpm")"; ) >/dev/null 2>&1 - echo "$tdir" -} - -function tar_cat() { - case "$1" in - *.gz|*.tgz) gzip -dc "$1" ;; - *.bz2|*.tbz2) bzip2 -dc "$1" ;; - *) cat "$1" ;; - esac -} - -function tar_diff_p1() { - local ltar="$1" - local rtar="$2" - local tdir="$3" - test -d "$tdir" || { echo "No tmpdir for tar_diff '$tdir'"; return 1; } - - mkdir "$tdir/L"; - case "$ltar" in - *.obscpio) (FDIR=${PWD}; cd $tdir/L; cpio -id < "${FDIR}/$ltar");; - *) tar_cat "$ltar" | tar xf - -C "$tdir/L" || return 2;; - esac - mkdir "$tdir/R"; - case "$ltar" in - *.obscpio) (FDIR=${PWD}; cd $tdir/R; cpio -id < "${FDIR}/$rtar");; - *) tar_cat "$rtar" | tar xf - -C "$tdir/R" || return 2;; - esac - if $DIFF -r "$tdir/L"/. "$tdir/R"/.; then - echo "Content $ltar and $rtar is the same" - return 0 - else - echo "Content $ltar and $rtar differs" - return 1 - fi -} - -# Here we have eveyfile (incl. .changes) in git, thus inside the tarball. -# The tarballs rootdirs may differ, as they contain the revision number. -# The specfile also contains the revision number. So do a quick check -# for different .changes, then 'tardiff -p1' -function copy_changed_package() -{ - local sdir="$1" - test -d "$sdir" || { echo "No source dir '$sdir'" >&2; return 2; } - local tdir="$2" - test -d "$tdir" || { echo "No target dir '$tdir'" >&2; return 2; } - - # track changes so we can later decide whether we must tar_diff. - local diffs=0 - local ttar="" - - # check excess target files (except new tarball version) - for F in "$tdir"/*; do - local stem="$(basename "$F")" - case "$stem" in - *.tar.*|*.tar|*.tgz|*.tbz2|*.obscpio) - # tarball diff or rename not necessarily implies content change! - ttar="$tdir/$stem" - ;; - *-rpmlintrc) - # ignore rpmlintrc files - continue - ;; - *) - test -f "$sdir/$stem" || { - rm -f "$F" - diffs=1 - } - ;; - esac - done - - if [ $diffs == 1 ]; then - test -z "$ttar" || rm "$ttar" - cp "$sdir"/* "$tdir" - return 0 - fi - - # check non-tarball changes - local star="" - for F in "$sdir"/*; do - local stem="$(basename "$F")" - case "$stem" in - *.tar.*|*.tar|*.tgz|*.tbz2|*.obscpio) - # tarball diff or rename not necessarily implies content change! - star="$sdir/$stem" - ;; - *.obsinfo) break;; - *) - if [ -f "$tdir/$stem" ]; then - # In sec files ignore Source and %setup lines containing - # '-git-'. - # Source0: MessageQueue-git-4a9144649ae82fab60f4f11b08c75d46275f47bf.tar.gz - # %setup -q -n MessageQueue-git-4a9144649ae82fab60f4f11b08c75d46275f47bf - # - $DIFF -I '^\(Source\|%setup\).*-git-' "$tdir/$stem" "$F" || { - diffs=1 - ls -l "$tdir/$stem" "$F" - break - } - else - # new source file - diffs=1 - break - fi - ;; - esac - done - - if [ $diffs == 1 -o "${star:+1}" != "${ttar:+1}" ]; then - test -z "$ttar" || rm "$ttar" - cp "$sdir"/* "$tdir" - return 0 - fi - # HERE: star and ttar are either both present or not - - test -z "$ttar" || { - # finally do tardiffs - local tmpd=$(mktemp -d) - tar_diff_p1 "$ttar" "$star" "$tmpd" || { - diffs=1 - } - rm -rf "$tmpd" - - if [ $diffs == 1 ]; then - test -z "$ttar" || rm "$ttar" - cp "$sdir"/* "$tdir" - return 0 - fi - } - # No changes - return 1 -} - - -function log_and_add_failure() { - test $# -ge 1 || { echo "log_and_add_failure: Wrong args $#: $@" >&2; return 1; } - local pkg_name="$1" - local opt_msg="$2" - FAILED_CNT=$(($FAILED_CNT+1)) - FAILED_PKG="$FAILED_PKG$(echo -ne "\n $pkg_name${opt_msg:+ ($opt_msg)}")" - echo "*** FAILED${opt_msg:+ ($opt_msg)} [$pkg_name]" -} - -# go.. -cd "$WORKSPACE" -T_LOG="$WORKSPACE/tmplog" -trap "test -f \"$T_LOG\" && /bin/rm -rf -- \"$T_LOG\" " 0 1 2 3 13 15 - -SRPM_DIR="SRPMS" -test -d "$SRPM_DIR" || { - echo "No'$SRPM_DIR' dir to process." >&2 - exit 99 -} -rm -rf "$OBS_PROJ" - -echo "Going to update $OBS_PROJ from $SRPM_DIR..." -UNCHANGED_CNT=0 -SUCCEED_CNT=0 -SUCCEED_PKG= -FAILED_CNT=0 -FAILED_PKG= - -# check which endpoint we are using to match the product -if [ "${OSCAPI}" == "https://api.suse.de" ]; then - PRODUCT_VERSION="$(sed -n 's/.*web.version\s*=\s*\(.*\)$/\1/p' ${BASE_DIR}/../web/conf/rhn_web.conf)" -else - # Uyuni settings - PRODUCT_VERSION="$(sed -n 's/.*web.version.uyuni\s*=\s*\(.*\)$/\1/p' ${BASE_DIR}/../web/conf/rhn_web.conf)" -fi -# to lowercase with ",," and replace spaces " " with "-" -PRODUCT_VERSION=$(echo ${PRODUCT_VERSION,,} | sed -r 's/ /-/g') - -while read PKG_NAME; do - echo "=== Processing package [$PKG_NAME]" - - # prepare the srpm dir - SRPM_PKG_DIR="$SRPM_DIR/$PKG_NAME" - test -d "$SRPM_PKG_DIR" || { - log_and_add_failure "$PKG_NAME" "no srpm dir" - continue - } - - if [ -f "$SRPM_PKG_DIR/Dockerfile" ]; then - NAME="${PKG_NAME%%-image}" - # check which endpoint we are using to match the product - if [ "${OSCAPI}" == "https://api.suse.de" ]; then - # SUSE Manager settings - VERSION=$(sed 's/^\([0-9]\+\.[0-9]\+\).*$/\1/' ${BASE_DIR}/packages/uyuni-base) - sed "s/^ARG INIT_IMAGE=.*$/ARG INIT_IMAGE=suse\/manager\/4.4\/init:latest/" -i $SRPM_PKG_DIR/Dockerfile - sed "s/^ARG INIT_BASE=.*$/ARG INIT_BASE=bci\/bci-init:15.4/" -i $SRPM_PKG_DIR/Dockerfile - sed "s/^ARG PRODUCT_PATTERN_PREFIX=.*$/ARG PRODUCT_PATTERN_PREFIX=patterns-suma/" -i $SRPM_PKG_DIR/Dockerfile - sed "/^#\!BuildTag:/s/uyuni/suse\/manager\/${VERSION}/g" -i $SRPM_PKG_DIR/Dockerfile - sed "/^# labelprefix=/s/org\.opensuse\.uyuni/com.suse.manager/" -i $SRPM_PKG_DIR/Dockerfile - sed "s/^ARG VENDOR=.*$/ARG VENDOR=\"SUSE LLC\"/" -i $SRPM_PKG_DIR/Dockerfile - sed "s/^ARG PRODUCT=.*$/ARG PRODUCT=\"SUSE Manager\"/" -i $SRPM_PKG_DIR/Dockerfile - sed "s/^ARG URL=.*$/ARG URL=\"https:\/\/www.suse.com\/products\/suse-manager\/\"/" -i $SRPM_PKG_DIR/Dockerfile - sed "s/^ARG REFERENCE_PREFIX=.*$/ARG REFERENCE_PREFIX=\"registry.suse.com\/suse\/manager\/${VERSION}\"/" -i $SRPM_PKG_DIR/Dockerfile - NAME="suse\/manager\/${VERSION}\/${NAME}" - else - NAME="uyuni\/${NAME}" - fi - - # Add version from rhn_web on top of version from tito to have a continuity with already relased versions - sed "/^#\!BuildTag:/s/$/ ${NAME}:${PRODUCT_VERSION} ${NAME}:${PRODUCT_VERSION}.%RELEASE%/" -i $SRPM_PKG_DIR/Dockerfile - fi - - if [ -f "$SRPM_PKG_DIR/Chart.yaml" ]; then - NAME="${PKG_NAME}" - if [ "${OSCAPI}" == "https://api.suse.de" ]; then - # SUSE Manager settings - VERSION=$(sed 's/^\([0-9]\+\.[0-9]\+\).*$/\1/' ${BASE_DIR}/packages/uyuni-base) - sed "/^#\!BuildTag:/s/uyuni/suse\/manager\/${VERSION}/g" -i $SRPM_PKG_DIR/Chart.yaml - sed "s/^home: .*$/home: https:\/\/www.suse.com\/products\/suse-manager\//" -i $SRPM_PKG_DIR/Chart.yaml - CHART_TAR=$(ls ${SRPM_PKG_DIR}/*.tar) - mkdir ${SRPM_PKG_DIR}/tar - tar xf $CHART_TAR -C ${SRPM_PKG_DIR}/tar - sed "s/^repository: .\+$/repository: registry.suse.com\/suse\/manager\/${VERSION}/" -i ${SRPM_PKG_DIR}/tar/values.yaml - tar cf $CHART_TAR -C ${SRPM_PKG_DIR}/tar . - rm -rf ${SRPM_PKG_DIR}/tar - NAME="suse\/manager\/${VERSION}\/${NAME}" - else - NAME="uyuni\/${NAME}" - fi - - # Remove leading zero from Uyuni release and add potentially missing micro part - SEMANTIC_VERSION=$(echo ${PRODUCT_VERSION} | sed 's/\([0-9]\+\)\.0\?\([1-9][0-9]*\)\(\.\([0-9]\+\)\)\?\( .\+\)\?/\1.\2.\4\5/' | sed 's/\.$/.0/') - # Also include the semantic version since helm chart wants it for OCI repos (those generated by OBS) - sed "/^#\!BuildTag:/ s/$/ ${NAME}:${SEMANTIC_VERSION} ${NAME}:${PRODUCT_VERSION} ${NAME}:${PRODUCT_VERSION}.%RELEASE%/" -i $SRPM_PKG_DIR/Chart.yaml - fi - - # update from obs (create missing package on the fly) - for tries in 1 2 3; do - echo "Try: $tries" - OBS_PKG_DIR="$OBS_PROJ/$PKG_NAME" - rm -rf "$OBS_PKG_DIR" - $OSC_CHECKOUT "$OBS_PROJ" "$PKG_NAME" 2>"$T_LOG" || { - if grep 'does not exist in project' "$T_LOG" || grep '404: Not Found' "$T_LOG"; then - test -d "$OBS_PROJ" || ( mkdir "$OBS_PROJ"; cd "$OBS_PROJ"; $OSC init "$OBS_PROJ"; ) - ( set -e; cd "$OBS_PROJ"; $OSC mkpac "$PKG_NAME"; ) - break - elif [ $tries -eq 3 ]; then - cat "$T_LOG" - log_and_add_failure "$PKG_NAME" "checkout" - continue 2 - fi - continue - } - for F in "$OBS_PKG_DIR"/*; do - test -e "$F" || continue - test -s "$F" || test $tries -eq 3 || continue 2 - test -s "$F" || { - log_and_add_failure "$PKG_NAME" "zero size file in checkout : $F" - continue 3 - } - done - break - done - - - test -z "$FAKE_COMITTOBS" || { - echo "FAKE: Not comitting to OBS..." - continue - } - - if copy_changed_package "$SRPM_PKG_DIR" "$OBS_PKG_DIR"; then - echo "Package has changed, updating..." - ( - set -e - cd "$OBS_PKG_DIR" - $OSC addremove >/dev/null - $OSC status - if [ -z "$FAKE_COMITTOBS" ]; then - if [ -z "$OBS_TEST_PROJECT" ]; then - $OSC ci -m "Git submitt $GIT_BRANCH($GIT_CURR_HEAD)" - else - $OSC linkpac -c -f $OBS_PROJ $PKG_NAME $OBS_TEST_PROJECT - $OSC co $OBS_TEST_PROJECT $PKG_NAME - cd $OBS_TEST_PROJECT/$PKG_NAME/ - $OSC rm * - cd - - cp -v * $OBS_TEST_PROJECT/$PKG_NAME - cd $OBS_TEST_PROJECT/$PKG_NAME - $OSC add * - $OSC ci -m "Git submitt $GIT_BRANCH($GIT_CURR_HEAD)" - cd - - fi - else - echo "FAKE: Not comitting to OBS..." - false - fi - ) || { - log_and_add_failure "$PKG_NAME" "${FAKE_COMITTOBS:+fake }checkin" - continue - } - SUCCEED_CNT=$(($SUCCEED_CNT+1)) - SUCCEED_PKG="$SUCCEED_PKG$(echo -ne "\n $PKG_NAME")" - else - echo "Package is unchanged." - UNCHANGED_CNT=$(($UNCHANGED_CNT+1)) - fi - if [ "${KEEP_SRPMS}" == "FALSE" ]; then - rm -rf "$SRPM_PKG_DIR" - fi - rm -rf "$OBS_PKG_DIR" -done < <(srpm_package_defs) - -echo "======================================================================" -echo "Unchanged packages: $UNCHANGED_CNT" -echo "Updated packages: $SUCCEED_CNT$SUCCEED_PKG" -test $FAILED_CNT != 0 && { - echo "Failed packages: $FAILED_CNT$FAILED_PKG" -} -echo "======================================================================" - -exit $FAILED_CNT diff --git a/susemanager-utils/testing/docker/scripts/push-to-obs.sh b/susemanager-utils/testing/docker/scripts/push-to-obs.sh index 7594048ca9dd..9f748aa69592 100755 --- a/susemanager-utils/testing/docker/scripts/push-to-obs.sh +++ b/susemanager-utils/testing/docker/scripts/push-to-obs.sh @@ -84,12 +84,12 @@ fi # Build SRPMS echo "*************** BUILDING PACKAGES ***************" -./build-packages-for-obs.sh ${PACKAGES} +build-packages-for-obs ${PACKAGES} # Submit for DESTINATION in $(echo ${DESTINATIONS}|tr ',' ' '); do export OSCAPI=$(echo ${DESTINATION}|cut -d'|' -f1) export OBS_PROJ=$(echo ${DESTINATION}|cut -d'|' -f2) echo "*************** PUSHING TO ${OBS_PROJ} ***************" - ./push-packages-to-obs.sh ${PACKAGES} + push-packages-to-obs ${PACKAGES} done