2014-05-30 15:15:51 -07:00
|
|
|
#!/bin/bash -xe
|
|
|
|
#
|
|
|
|
# Copyright 2012 Hewlett-Packard Development Company, L.P.
|
|
|
|
# Copyright 2013 OpenStack Foundation
|
|
|
|
#
|
|
|
|
# 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.
|
|
|
|
#
|
|
|
|
# Retrieve supported python wheels and upload them to pypi with Curl.
|
|
|
|
|
|
|
|
PROJECT=$1
|
|
|
|
TARBALL_SITE=$2
|
2015-06-04 15:33:48 +10:00
|
|
|
TAG=$(echo $ZUUL_REF | sed 's/^refs.tags.//')
|
2014-05-30 15:15:51 -07:00
|
|
|
|
|
|
|
# Look in the setup.cfg to determine if a package name is specified, but
|
|
|
|
# fall back on the project name if necessary
|
2015-06-04 15:33:48 +10:00
|
|
|
DISTNAME=$(/usr/local/jenkins/slave_scripts/pypi-extract-name.py --wheel \
|
|
|
|
|| echo $PROJECT)
|
2014-05-30 15:15:51 -07:00
|
|
|
# Look in the setup.cfg to see if this is a universal wheel or not
|
2015-06-04 15:33:48 +10:00
|
|
|
WHEELTYPE=$(/usr/local/jenkins/slave_scripts/pypi-extract-universal.py)
|
2014-06-06 14:00:53 +00:00
|
|
|
FILENAME="$DISTNAME-$TAG-$WHEELTYPE-none-any.whl"
|
2014-05-30 15:15:51 -07:00
|
|
|
|
|
|
|
rm -rf *.whl
|
|
|
|
curl --fail -o $FILENAME http://$TARBALL_SITE/$PROJECT/$FILENAME
|
|
|
|
|
|
|
|
# Make sure we actually got a wheel
|
|
|
|
file -b $FILENAME | grep -i zip
|
|
|
|
|
2016-02-02 14:47:59 -08:00
|
|
|
# Uploads may claim to fail but actually succeed so we check if we
|
2016-02-18 21:09:16 +00:00
|
|
|
# can download after upload to determine success. They can also fail
|
|
|
|
# intermittently, so retrying in a delayed loop helps improve
|
|
|
|
# robustness.
|
|
|
|
TRY=0
|
|
|
|
RETVAL=255
|
|
|
|
set +e
|
|
|
|
while [[ $TRY -lt 3 ]] && [[ $RETVAL -ne 0 ]]; do
|
|
|
|
twine upload -r pypi $FILENAME
|
|
|
|
curl --head --silent --fail \
|
|
|
|
"https://pypi.python.org/simple/$PROJECT/$FILENAME" >/dev/null 2>&1
|
|
|
|
RETVAL=$?
|
|
|
|
(( TRY++ ))
|
|
|
|
if [[ $TRY -lt 3 ]] && [[ $RETVAL -ne 0 ]]; then
|
|
|
|
echo "Upload failed, retrying in $TRY seconds." >&2
|
|
|
|
sleep $TRY
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
exit $RETVAL
|