multi-build / multibuild

Machinery for building and testing Python Wheels for Linux, OSX and (less flexibly) Windows.
Other
236 stars 87 forks source link

wheelhouse_uploader upload --no-ssl-check ... fails with SSL certificate error #178

Closed peterjc closed 6 years ago

peterjc commented 6 years ago

I have updated the git submodules, so this should be using the latest multibuild.

The AppVeyor Windows wheels seem to be generated fine, but uploading to RackSpace is failing with an SSL certificate check, despite using --no-ssl-check.

https://github.com/biopython/biopython-wheels/blob/7bc8291ef38c7aeaea53d0f52e5372d78eab5b5f/appveyor.yml https://ci.appveyor.com/project/biopython/biopython-wheels/build/1.0.61 https://ci.appveyor.com/project/biopython/biopython-wheels/build/1.0.61/job/b9k9hfxg449c3t7o

...
Installing collected packages: pyparsing, six, packaging, apache-libcloud, futures, wheelhouse-uploader
Successfully installed apache-libcloud-1.1.0 futures-3.2.0 packaging-17.1 pyparsing-2.2.0 six-1.11.0 wheelhouse-uploader-0.9.6
python -m wheelhouse_uploader upload --no-ssl-check --local-folder=%REPO_DIR%\dist --no-update-index wheels
C:\Miniconda\envs\test_env\lib\site-packages\libcloud\httplib_ssl.py:249: UserWarning: SSL certificate verification is disabled, this can pose a security risk. For more information how to enable the SSL certificate verification, please visit the libcloud documentation.
  warnings.warn(libcloud.security.VERIFY_SSL_DISABLED_MSG)
Traceback (most recent call last):
  File "C:\Miniconda\envs\test_env\lib\site-packages\wheelhouse_uploader\upload.py", line 45, in upload
    return self._try_upload_once(local_folder, container)
  File "C:\Miniconda\envs\test_env\lib\site-packages\wheelhouse_uploader\upload.py", line 62, in _try_upload_once
    container = driver.get_container(container_name)
  File "C:\Miniconda\envs\test_env\lib\site-packages\libcloud\storage\drivers\cloudfiles.py", line 285, in get_container
    method='HEAD')
  File "C:\Miniconda\envs\test_env\lib\site-packages\libcloud\storage\drivers\cloudfiles.py", line 235, in request
    raw=raw, cdn_request=cdn_request)
  File "C:\Miniconda\envs\test_env\lib\site-packages\libcloud\storage\drivers\cloudfiles.py", line 163, in request
    raw=raw)
  File "C:\Miniconda\envs\test_env\lib\site-packages\libcloud\common\openstack.py", line 227, in request
    raw=raw)
  File "C:\Miniconda\envs\test_env\lib\site-packages\libcloud\common\base.py", line 753, in request
    action = self.morph_action_hook(action)
  File "C:\Miniconda\envs\test_env\lib\site-packages\libcloud\common\openstack.py", line 294, in morph_action_hook
    self._populate_hosts_and_request_paths()
  File "C:\Miniconda\envs\test_env\lib\site-packages\libcloud\common\openstack.py", line 327, in _populate_hosts_and_request_paths
    osa = osa.authenticate(**kwargs)  # may throw InvalidCreds
  File "C:\Miniconda\envs\test_env\lib\site-packages\libcloud\common\openstack_identity.py", line 850, in authenticate
    return self._authenticate_2_0_with_api_key()
  File "C:\Miniconda\envs\test_env\lib\site-packages\libcloud\common\openstack_identity.py", line 865, in _authenticate_2_0_with_api_key
    return self._authenticate_2_0_with_body(reqbody)
  File "C:\Miniconda\envs\test_env\lib\site-packages\libcloud\common\openstack_identity.py", line 882, in _authenticate_2_0_with_body
    method='POST')
  File "C:\Miniconda\envs\test_env\lib\site-packages\libcloud\common\base.py", line 851, in request
    raise ssl.SSLError(str(e))
SSLError: ('[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:726)',)
Traceback (most recent call last):
  File "C:\Miniconda\envs\test_env\lib\site-packages\wheelhouse_uploader\upload.py", line 45, in upload
    return self._try_upload_once(local_folder, container)
  File "C:\Miniconda\envs\test_env\lib\site-packages\wheelhouse_uploader\upload.py", line 62, in _try_upload_once
    container = driver.get_container(container_name)
  File "C:\Miniconda\envs\test_env\lib\site-packages\libcloud\storage\drivers\cloudfiles.py", line 285, in get_container
    method='HEAD')
  File "C:\Miniconda\envs\test_env\lib\site-packages\libcloud\storage\drivers\cloudfiles.py", line 235, in request
    raw=raw, cdn_request=cdn_request)
  File "C:\Miniconda\envs\test_env\lib\site-packages\libcloud\storage\drivers\cloudfiles.py", line 163, in request
    raw=raw)
  File "C:\Miniconda\envs\test_env\lib\site-packages\libcloud\common\openstack.py", line 227, in request
    raw=raw)
  File "C:\Miniconda\envs\test_env\lib\site-packages\libcloud\common\base.py", line 753, in request
    action = self.morph_action_hook(action)
  File "C:\Miniconda\envs\test_env\lib\site-packages\libcloud\common\openstack.py", line 294, in morph_action_hook
    self._populate_hosts_and_request_paths()
  File "C:\Miniconda\envs\test_env\lib\site-packages\libcloud\common\openstack.py", line 327, in _populate_hosts_and_request_paths
    osa = osa.authenticate(**kwargs)  # may throw InvalidCreds
  File "C:\Miniconda\envs\test_env\lib\site-packages\libcloud\common\openstack_identity.py", line 850, in authenticate
    return self._authenticate_2_0_with_api_key()
  File "C:\Miniconda\envs\test_env\lib\site-packages\libcloud\common('[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:726)',)
('[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:726)',)
('[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:726)',)
\openstack_identity.py", line 865, in _authenticate_2_0_with_api_key
    return self._authenticate_2_0_with_body(reqbody)
  File "C:\Miniconda\envs\test_env\lib\site-packages\libcloud\common\openstack_identity.py", line 882, in _authenticate_2_0_with_body
    method='POST')
  File "C:\Miniconda\envs\test_env\lib\site-packages\libcloud\common\base.py", line 851, in request
    raise ssl.SSLError(str(e))
SSLError: ('[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:726)',)
Traceback (most recent call last):
  File "C:\Miniconda\envs\test_env\lib\site-packages\wheelhouse_uploader\upload.py", line 45, in upload
    return self._try_upload_once(local_folder, container)
  File "C:\Miniconda\envs\test_env\lib\site-packages\wheelhouse_uploader\upload.py", line 62, in _try_upload_once
    container = driver.get_container(container_name)
  File "C:\Miniconda\envs\test_env\lib\site-packages\libcloud\storage\drivers\cloudfiles.py", line 285, in get_container
    method='HEAD')
  File "C:\Miniconda\envs\test_env\lib\site-packages\libcloud\storage\drivers\cloudfiles.py", line 235, in request
    raw=raw, cdn_request=cdn_request)
  File "C:\Miniconda\envs\test_env\lib\site-packages\libcloud\storage\drivers\cloudfiles.py", line 163, in request
    raw=raw)
  File "C:\Miniconda\envs\test_env\lib\site-packages\libcloud\common\openstack.py", line 227, in request
    raw=raw)
  File "C:\Miniconda\envs\test_env\lib\site-packages\libcloud\common\base.py", line 753, in request
    action = self.morph_action_hook(action)
  File "C:\Miniconda\envs\test_env\lib\site-packages\libcloud\common\openstack.py", line 294, in morph_action_hook
    self._populate_hosts_and_request_paths()
  File "C:\Miniconda\envs\test_env\lib\site-packages\libcloud\common\openstack.py", line 327, in _populate_hosts_and_request_paths
    osa = osa.authenticate(**kwargs)  # may throw InvalidCreds
  File "C:\Miniconda\envs\test_env\lib\site-packages\libcloud\common\openstack_identity.py", line 850, in authenticate
    return self._authenticate_2_0_with_api_key()
  File "C:\Miniconda\envs\test_env\lib\site-packages\libcloud\common\openstack_identity.py", line 865, in _authenticate_2_0_with_api_key
    return self._authenticate_2_0_with_body(reqbody)
  File "C:\Miniconda\envs\test_env\lib\site-packages\libcloud\common\openstack_identity.py", line 882, in _authenticate_2_0_with_body
    method='POST')
  File "C:\Miniconda\envs\test_env\lib\site-packages\libcloud\common\base.py", line 851, in request
    raise ssl.SSLError(str(e))
SSLError: ('[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:726)',)
Traceback (most recent call last):
  File "C:\Miniconda\envs\test_env\lib\runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "C:\Miniconda\envs\test_env\lib\runpy.py", line 72, in _run_code
    exec code in run_globals
  File "C:\Miniconda\envs\test_env\lib\site-packages\wheelhouse_uploader\__main__.py", line 3, in <module>
    main()
  File "C:\Miniconda\envs\test_env\lib\site-packages\wheelhouse_uploader\commandline.py", line 123, in main
    return handle_upload(options)
  File "C:\Miniconda\envs\test_env\lib\site-packages\wheelhouse_uploader\commandline.py", line 106, in handle_upload
    uploader.upload(options.local_folder, options.container_name)
  File "C:\Miniconda\envs\test_env\lib\site-packages\wheelhouse_uploader\upload.py", line 56, in upload
    retry_on_error=retry_on_error - 1)
  File "C:\Miniconda\envs\test_env\lib\site-packages\wheelhouse_uploader\upload.py", line 56, in upload
    retry_on_error=retry_on_error - 1)
  File "C:\Miniconda\envs\test_env\lib\site-packages\wheelhouse_uploader\upload.py", line 56, in upload
    retry_on_error=retry_on_error - 1)
  File "C:\Miniconda\envs\test_env\lib\site-packages\wheelhouse_uploader\upload.py", line 45, in upload
    return self._try_upload_once(local_folder, container)
  File "C:\Miniconda\envs\test_env\lib\site-packages\wheelhouse_uploader\upload.py", line 62, in _try_upload_once
    container = driver.get_container(container_name)
  File "C:\Miniconda\envs\test_env\lib\site-packages\libcloud\storage\drivers\cloudfiles.py", line 285, in get_container
    method='HEAD')
  File "C:\Miniconda\envs\test_env\lib\site-packages\libcloud\storage\drivers\cloudfiles.py", line 235, in request
    raw=raw, cdn_request=cdn_request)
  File "C:\Miniconda\envs\test_env\lib\site-packages\libcloud\storage\drivers\cloudfiles.py", line 163, in request
    raw=raw)
  File "C:\Miniconda\envs\test_env\lib\site-packages\libcloud\common\openstack.py", line 227, in request
    raw=raw)
  File "C:\Miniconda\envs\test_env\lib\site-packages\libcloud\common\base.py", line 753, in request
    action = self.morph_action_hook(action)
  File "C:\Miniconda\envs\test_env\lib\site-packages\libcloud\common\openstack.py", line 294, in morph_action_hook
    self._populate_hosts_and_request_paths()
  File "C:\Miniconda\envs\test_env\lib\site-packages\libcloud\common\openstack.py", line 327, in _populate_hosts_and_request_paths
    osa = osa.authenticate(**kwargs)  # may throw InvalidCreds
  File "C:\Miniconda\envs\test_env\lib\site-packages\libcloud\common\openstack_identity.py", line 850, in authenticate
    return self._authenticate_2_0_with_api_key()
  File "C:\Miniconda\envs\test_env\lib\site-packages\libcloud\common\openstack_identity.py", line 865, in _authenticate_2_0_with_api_key
    return self._authenticate_2_0_with_body(reqbody)
  File "C:\Miniconda\envs\test_env\lib\site-packages\libcloud\common\openstack_identity.py", line 882, in _authenticate_2_0_with_body
    method='POST')
  File "C:\Miniconda\envs\test_env\lib\site-packages\libcloud\common\base.py", line 851, in request
    raise ssl.SSLError(str(e))
ssl.SSLError: ('[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:726)',)
Command exited with code 1

See also possibly related #176.

matthew-brett commented 6 years ago

I don't know what caused this, but at a wild guess, it is Rackspace being more restrictive about its uploads. In any case, the fix is here:

https://github.com/MacPython/numpy-wheels/commit/c139b75fd07db3d4f83e50e6f6eacc7002368384

peterjc commented 6 years ago

Ah - that makes perfect sense, I will try that now, thank you.

I must have been unlucky in looking at the astropy-wheels repository, which don't yet have that fix:

https://github.com/MacPython/astropy-wheels/blob/master/appveyor.yml

peterjc commented 6 years ago

Confirming, that fixed the AppVeyor wheel upload, thank you.

(My Linux/macOS wheel tests are failing somewhere but that's an unrelated issue)