blob: 80226aa0435ca9b0adcf35a3a1737b9e9facb2f7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
#!/bin/bash
# Copyright (c) 2021 Cisco and/or its affiliates.
# 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.
echo "---> jjb/scripts/packagecloud_push.sh"
set -euxo pipefail
line="*************************************************************************"
# Nothing was built if this is a merge job being run when
# the git HEAD id is not the same as the Gerrit New Revision ID
if [[ ${JOB_NAME} == *merge* ]] && [ -n "${GERRIT_NEWREV:-}" ] &&
[ "$GERRIT_NEWREV" != "$GIT_COMMIT" ] ; then
echo -e "\n$line\nSkipping package push. A newer patch has been merged.\n$line\n"
exit 0
fi
DRYRUN="${DRYRUN:-}"
if [ "${DRYRUN,,}" = "true" ] ; then
echo -e "\n$line\nSkipping package push because DRYRUN is '${DRYRUN,,}'.\n$line\n"
exit 0
fi
echo "STARTING PACKAGECLOUD PUSH"
sleep 10
FACTER_OS=$(/usr/bin/facter operatingsystem)
push_cmd=""
push_ext_deps_cmd=""
ext_deps_pkg=""
downloads_dir="/root/Downloads"
create_deb_push_cmds()
{
local distro="$1"
if [ "$distro" = "debian" ] || [ "$distro" = "ubuntu" ] ; then
FACTER_LSBNAME=$(/usr/bin/facter lsbdistcodename)
DEBS=$(find . -type f -iname '*.deb' | grep -v vpp-ext-deps | xargs || true)
push_cmd="package_cloud push ${PCIO_CO}/${STREAM}/${distro}/${FACTER_LSBNAME}/main/ ${DEBS}"
ext_deps_ver="$(dpkg -l vpp-ext-deps | mawk '/vpp-ext-deps/{print $3}' || true)"
ext_deps_pkg="$(find . -type f -iname 'vpp-ext-deps*.deb' | grep $ext_deps_ver || find $downloads_dir -type f -iname 'vpp-ext-deps*.deb' | grep $ext_deps_ver || true)"
if [ -n "$ext_deps_pkg}" ] ; then
push_ext_deps_cmd="package_cloud push ${PCIO_CO}/${STREAM}/${distro}/${FACTER_LSBNAME}/main/ ${ext_deps_pkg}"
fi
else
echo "ERROR: Unknown distro: '$distro'"
return 1
fi
}
create_rpm_push_cmds()
{
FACTER_OSMAJREL=$(/usr/bin/facter operatingsystemmajrelease)
FACTER_ARCH=$(/usr/bin/facter architecture)
RPMS=$(find . -type f -iregex '.*/.*\.\(s\)?rpm' | grep -v vpp-ext-deps | xargs || true)
push_cmd="package_cloud push ${PCIO_CO}/${STREAM}/el/${FACTER_OSMAJREL}/os/${FACTER_ARCH}/ ${RPMS}"
ext_deps_ver="$(dnf list vpp-ext-deps | mawk '/vpp-ext-deps/{print $2}' || true)"
ext_deps_pkg="$(find . -type f -iname 'vpp-ext-deps*.rpm' | grep $ext_deps_ver || find $downloads_dir -type f -iname 'vpp-ext-deps*.rpm' | grep $ext_deps_ver || true)"
if [ -n "$ext_deps_pkg" ] ; then
push_ext_deps_cmd="package_cloud push ${PCIO_CO}/${STREAM}/el/${FACTER_OSMAJREL}/os/${FACTER_ARCH}/ ${ext_deps_pkg}"
fi
}
# PCIO_CO and SILO are Jenkins Global Environment variables defined in
# .../ci-management/jenkins-config/global-vars-*.sh
if [ -f ~/.packagecloud ]; then
case "$FACTER_OS" in
Debian)
create_deb_push_cmds debian
;;
Ubuntu)
create_deb_push_cmds ubuntu
;;
CentOS)
create_rpm_push_cmds
;;
*)
echo -e "\n$line\n* ERROR: Unsupported OS '$FACTER_OS'\n* PACKAGECLOUD PUSH FAILED!\n$line\n"
exit 1
;;
esac
if [ "${SILO,,}" = "sandbox" ] ; then
echo "SANDBOX: skipping '$push_cmd'"
if [ -n "$push_ext_deps_cmd" ] ; then
echo "SANDBOX: skipping '$push_ext_deps_cmd'"
fi
else
$push_cmd
if [ -n "$push_ext_deps_cmd" ] ; then
$push_ext_deps_cmd || true
fi
fi
else
echo "ERROR: Missing '~/.packagecloud' for user '$(id)'"
echo "PACKAGECLOUD PUSH FAILED!"
exit 1
fi
echo -e "\n$line\n* PACKAGECLOUD PUSH COMPLETE\n$line\n"
|