Create and upload wheels
We want to make wheels for pre-release and release events. We will only build wheels on python 2.7. If the project supports python 3 as well, the project will have marked itself as supporting universal wheels. If it does that, python 2.7 will build a wheel that can be used in both places. If it does not support python 3, then we don't have to build on on python 3. Change-Id: I060b59d8adc586ff37065fa4f6172a592ee3f903
This commit is contained in:
parent
54007bcad2
commit
a207facd23
@ -0,0 +1,28 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# Extract Python package name from setup.cfg
|
||||||
|
|
||||||
|
import ConfigParser
|
||||||
|
|
||||||
|
universal = False
|
||||||
|
|
||||||
|
setup_cfg = ConfigParser.SafeConfigParser()
|
||||||
|
setup_cfg.read("setup.cfg")
|
||||||
|
if setup_cfg.has_section("wheel"):
|
||||||
|
universal = setup_cfg.getboolean("wheel", "universal")
|
||||||
|
if universal:
|
||||||
|
print("py2.py3")
|
||||||
|
else:
|
||||||
|
print("py27")
|
38
modules/jenkins/files/slave_scripts/pypi-wheel-upload.sh
Executable file
38
modules/jenkins/files/slave_scripts/pypi-wheel-upload.sh
Executable file
@ -0,0 +1,38 @@
|
|||||||
|
#!/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
|
||||||
|
TAG=`echo $ZUUL_REF | sed 's/^refs.tags.//'`
|
||||||
|
|
||||||
|
# Look in the setup.cfg to determine if a package name is specified, but
|
||||||
|
# fall back on the project name if necessary
|
||||||
|
DISTNAME=`/usr/local/jenkins/slave_scripts/pypi-extract-name.py \
|
||||||
|
|| echo $PROJECT`
|
||||||
|
# Look in the setup.cfg to see if this is a universal wheel or not
|
||||||
|
WHEELTYPE=`/usr/local/jenkins/slave_scripts/pypi-extract-universal.py`
|
||||||
|
FILENAME="$DISTNAME-$TAG.$WHEELTYPE-none-any.whl"
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
twine upload -r pypi $FILENAME
|
38
modules/jenkins/files/slave_scripts/run-wheel.sh
Normal file
38
modules/jenkins/files/slave_scripts/run-wheel.sh
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
#!/bin/bash -xe
|
||||||
|
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
org=$1
|
||||||
|
project=$2
|
||||||
|
|
||||||
|
if [[ -z "$org" || -z "$project" ]]
|
||||||
|
then
|
||||||
|
echo "Usage: $0 ORG PROJECT"
|
||||||
|
echo
|
||||||
|
echo "ORG: The project organization (eg 'openstack')"
|
||||||
|
echo "PROJECT: The project name (eg 'nova')"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
source /usr/local/jenkins/slave_scripts/select-mirror.sh $org $project
|
||||||
|
|
||||||
|
rm -f dist/*.tar.gz
|
||||||
|
tox -evenv pip install wheel
|
||||||
|
tox -evenv python setup.py bdist_wheel
|
||||||
|
|
||||||
|
echo "SHA1sum: "
|
||||||
|
sha1sum dist/*
|
||||||
|
echo "MD5sum: "
|
||||||
|
md5sum dist/*
|
@ -209,7 +209,10 @@
|
|||||||
- builder:
|
- builder:
|
||||||
name: tarball
|
name: tarball
|
||||||
builders:
|
builders:
|
||||||
- shell: "/usr/local/jenkins/slave_scripts/run-tarball.sh {github-org} {project}"
|
- shell: |
|
||||||
|
#!/bin/bash -xe
|
||||||
|
/usr/local/jenkins/slave_scripts/run-tarball.sh {github-org} {project}
|
||||||
|
/usr/local/jenkins/slave_scripts/run-wheel.sh {github-org} {project}
|
||||||
|
|
||||||
- builder:
|
- builder:
|
||||||
name: devstack-checkout
|
name: devstack-checkout
|
||||||
@ -306,6 +309,17 @@
|
|||||||
- target: 'tarballs/{project}/'
|
- target: 'tarballs/{project}/'
|
||||||
source: 'dist/*.tar.gz'
|
source: 'dist/*.tar.gz'
|
||||||
|
|
||||||
|
- publisher:
|
||||||
|
name: wheel
|
||||||
|
publishers:
|
||||||
|
- archive:
|
||||||
|
artifacts: 'dist/*.whl'
|
||||||
|
- scp:
|
||||||
|
site: '{site}'
|
||||||
|
files:
|
||||||
|
- target: 'tarballs/{project}/'
|
||||||
|
source: 'dist/*.whl'
|
||||||
|
|
||||||
- publisher:
|
- publisher:
|
||||||
name: war
|
name: war
|
||||||
publishers:
|
publishers:
|
||||||
|
@ -1,12 +1,27 @@
|
|||||||
- job-template:
|
- job-template:
|
||||||
name: '{name}-pypi-upload'
|
name: '{name}-pypi-both-upload'
|
||||||
node: pypi
|
node: pypi
|
||||||
|
|
||||||
builders:
|
builders:
|
||||||
- revoke-sudo
|
- revoke-sudo
|
||||||
- gerrit-git-prep
|
- gerrit-git-prep
|
||||||
- shell: |
|
- shell: |
|
||||||
/usr/local/jenkins/slave_scripts/pypi-upload.sh {name} {tarball-site}
|
/usr/local/jenkins/slave_scripts/pypi-tarball-upload.sh {name} {tarball-site}
|
||||||
|
/usr/local/jenkins/slave_scripts/pypi-wheel-upload.sh {name} {tarball-site}
|
||||||
|
|
||||||
|
publishers:
|
||||||
|
- console-log
|
||||||
|
|
||||||
|
|
||||||
|
- job-template:
|
||||||
|
name: '{name}-pypi-wheel-upload'
|
||||||
|
node: pypi
|
||||||
|
|
||||||
|
builders:
|
||||||
|
- revoke-sudo
|
||||||
|
- gerrit-git-prep
|
||||||
|
- shell: |
|
||||||
|
/usr/local/jenkins/slave_scripts/pypi-wheel-upload.sh {name} {tarball-site}
|
||||||
|
|
||||||
publishers:
|
publishers:
|
||||||
- console-log
|
- console-log
|
||||||
@ -15,4 +30,5 @@
|
|||||||
- job-group:
|
- job-group:
|
||||||
name: pypi-jobs
|
name: pypi-jobs
|
||||||
jobs:
|
jobs:
|
||||||
- '{name}-pypi-upload'
|
- '{name}-pypi-both-upload'
|
||||||
|
- '{name}-pypi-wheel-upload'
|
||||||
|
@ -200,6 +200,9 @@
|
|||||||
- tarball:
|
- tarball:
|
||||||
project: '{name}'
|
project: '{name}'
|
||||||
site: '{tarball-site}'
|
site: '{tarball-site}'
|
||||||
|
- wheel:
|
||||||
|
project: '{name}'
|
||||||
|
site: '{tarball-site}'
|
||||||
- console-log
|
- console-log
|
||||||
|
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user