summaryrefslogtreecommitdiffstats
path: root/jjb/scripts/packagecloud_push.sh
blob: a4ae9b1669ceb1618a4d95570543fd3183a6d65f (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
#!/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=""

# 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)
            FACTER_LSBNAME=$(/usr/bin/facter lsbdistcodename)
            DEBS=$(find . -type f -iname '*.deb' | grep -v vpp-ext-deps)
            push_cmd="package_cloud push ${PCIO_CO}/${STREAM}/debian/${FACTER_LSBNAME}/main/ ${DEBS}"
            EXT_DEPS_DEB=$(find . -type f -iname 'vpp-ext-deps*.deb')
            if [ -n "$EXT_DEPS_DEB" ] ; then
                push_ext_deps_cmd="package_cloud push ${PCIO_CO}/${STREAM}/debian/${FACTER_LSBNAME}/main/ ${EXT_DEPS_DEB}"
            fi
            ;;
        Ubuntu)
            FACTER_LSBNAME=$(/usr/bin/facter lsbdistcodename)
            DEBS=$(find . -type f -iname '*.deb' | grep -v vpp-ext-deps)
            push_cmd="package_cloud push ${PCIO_CO}/${STREAM}/ubuntu/${FACTER_LSBNAME}/main/ ${DEBS}"
            EXT_DEPS_DEB=$(find . -type f -iname 'vpp-ext-deps*.deb')
            if [ -n "$EXT_DEPS_DEB" ] ; then
                push_ext_deps_cmd="package_cloud push ${PCIO_CO}/${STREAM}/ubuntu/${FACTER_LSBNAME}/main/ ${EXT_DEPS_DEB}"
            fi
            ;;
        CentOS)
            FACTER_OSMAJREL=$(/usr/bin/facter operatingsystemmajrelease)
            FACTER_ARCH=$(/usr/bin/facter architecture)
            RPMS=$(find . -type f -iregex '.*/.*\.\(s\)?rpm' | grep -v vpp-ext-deps)
            push_cmd="package_cloud push ${PCIO_CO}/${STREAM}/el/${FACTER_OSMAJREL}/os/${FACTER_ARCH}/ ${RPMS}"
            EXT_DEPS_RPM=$(find . -type f -iname 'vpp-ext-deps*.rpm')
            if [ -n "$EXT_DEPS_RPM" ] ; then
                push_ext_deps_cmd="package_cloud push ${PCIO_CO}/${STREAM}/el/${FACTER_OSMAJREL}/os/${FACTER_ARCH}/ ${EXT_DEPS_RPM}"
            fi
            ;;
        *)
            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
            # Don't fail script if vpp-ext-deps push fails.
            set +e
            $push_ext_deps_cmd
            set -e
        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"