Push PKG-INFO metadata to pypi.
Add a mini python script to make sense of the PKG-INFO files in sdists and output a curl config file to insert these values into the POSTed form. Requires the pkginfo python package. Add Apache2 license headers to the new files as well. Change-Id: I9b4b8dd17a26da181d9f4ee833f1ef1106fbe12d Reviewed-on: https://review.openstack.org/16501 Reviewed-by: James E. Blair <corvus@inaugust.com> Approved: Jeremy Stanley <fungi@yuggoth.org> Reviewed-by: Jeremy Stanley <fungi@yuggoth.org> Tested-by: Jenkins
This commit is contained in:
parent
90cc9688ce
commit
16922d9325
54
modules/jenkins/files/slave_scripts/pypi-extract-metadata.py
Normal file
54
modules/jenkins/files/slave_scripts/pypi-extract-metadata.py
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
#
|
||||||
|
# Copyright 2012 Hewlett-Packard Development Company, L.P.
|
||||||
|
#
|
||||||
|
# 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 package info metadata for use by curl.
|
||||||
|
|
||||||
|
import pkginfo
|
||||||
|
import sys
|
||||||
|
|
||||||
|
if len(sys.argv) < 3:
|
||||||
|
exit()
|
||||||
|
|
||||||
|
info = pkginfo.SDist(sys.argv[1])
|
||||||
|
curl_config = open(sys.argv[2], 'w')
|
||||||
|
|
||||||
|
meta_items = {
|
||||||
|
'metadata_version': info.metadata_version,
|
||||||
|
'summary': info.summary,
|
||||||
|
'home_page': info.home_page,
|
||||||
|
'author': info.author,
|
||||||
|
'author_email': info.author_email,
|
||||||
|
'license': info.license,
|
||||||
|
'description': info.description,
|
||||||
|
'keywords': info.keywords,
|
||||||
|
'platform': info.platforms,
|
||||||
|
'classifiers': info.classifiers,
|
||||||
|
'download_url': info.download_url,
|
||||||
|
'provides': info.provides,
|
||||||
|
'requires': info.requires,
|
||||||
|
'obsoletes': info.obsoletes,
|
||||||
|
}
|
||||||
|
|
||||||
|
for key, value in meta_items.items():
|
||||||
|
if not value:
|
||||||
|
continue
|
||||||
|
if not isinstance(value, list):
|
||||||
|
value = [value]
|
||||||
|
for v in value:
|
||||||
|
curl_config.write('form = "%s=%s"\n' % (key, v))
|
||||||
|
|
||||||
|
curl_config.write('\n')
|
||||||
|
curl_config.close()
|
@ -1,4 +1,20 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Copyright 2012 Hewlett-Packard Development Company, L.P.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# Upload python sdist to pypi with Curl.
|
||||||
|
|
||||||
PROJECT=$1
|
PROJECT=$1
|
||||||
|
|
||||||
@ -7,7 +23,10 @@ FILENAME=`ls ${PROJECT}*.tar.gz`
|
|||||||
VERSION=`echo ${FILENAME} | sed -n "s/${PROJECT}-\(.*\).tar.gz/\1/p"`
|
VERSION=`echo ${FILENAME} | sed -n "s/${PROJECT}-\(.*\).tar.gz/\1/p"`
|
||||||
MD5_DIGEST=`md5sum ${FILENAME} | cut -d' ' -f1`
|
MD5_DIGEST=`md5sum ${FILENAME} | cut -d' ' -f1`
|
||||||
|
|
||||||
|
/usr/local/jenkins/slave_scripts/pypi-extract-metadata.py $FILENAME metadata.curl
|
||||||
|
|
||||||
curl --config /home/jenkins/.pypicurl \
|
curl --config /home/jenkins/.pypicurl \
|
||||||
|
--config metadata.curl \
|
||||||
-F "filetype=sdist" \
|
-F "filetype=sdist" \
|
||||||
-F "content=@${FILENAME};filename=${FILENAME}" \
|
-F "content=@${FILENAME};filename=${FILENAME}" \
|
||||||
-F ":action=file_upload" \
|
-F ":action=file_upload" \
|
||||||
|
@ -69,14 +69,17 @@
|
|||||||
node: pypi
|
node: pypi
|
||||||
|
|
||||||
builders:
|
builders:
|
||||||
|
- shell: |
|
||||||
|
if [ -e dist ]
|
||||||
|
then
|
||||||
|
rm -rf dist
|
||||||
|
fi
|
||||||
- copyartifact:
|
- copyartifact:
|
||||||
project: '{name}-pypi-sdist'
|
project: '{name}-pypi-sdist'
|
||||||
filter: 'dist/{name}*.tar.gz'
|
filter: 'dist/{name}*.tar.gz'
|
||||||
- shell: |
|
- shell: |
|
||||||
cd dist
|
cd dist
|
||||||
/usr/local/jenkins/slave_scripts/pypi-upload.sh {name}
|
/usr/local/jenkins/slave_scripts/pypi-upload.sh {name}
|
||||||
# Remove copied artifact
|
|
||||||
rm -rf {name}*.tar.gz
|
|
||||||
|
|
||||||
publishers:
|
publishers:
|
||||||
- console-log-post
|
- console-log-post
|
||||||
|
@ -1,8 +1,31 @@
|
|||||||
|
# Copyright 2012 Hewlett-Packard Development Company, L.P.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# Class to install dependencies for uploading python packages to pypi.
|
||||||
|
#
|
||||||
class openstack_project::pypi_slave (
|
class openstack_project::pypi_slave (
|
||||||
pypi_password,
|
pypi_password,
|
||||||
pypi_username = 'openstackci'
|
pypi_username = 'openstackci'
|
||||||
) {
|
) {
|
||||||
include openstack_project::slave
|
include openstack_project::slave
|
||||||
|
include pip
|
||||||
|
|
||||||
|
package { 'pkginfo':
|
||||||
|
ensure => present,
|
||||||
|
provider => 'pip',
|
||||||
|
require => Class['pip'],
|
||||||
|
}
|
||||||
|
|
||||||
file { '/home/jenkins/.pypicurl':
|
file { '/home/jenkins/.pypicurl':
|
||||||
ensure => present,
|
ensure => present,
|
||||||
|
Loading…
Reference in New Issue
Block a user