repositorytools
repositorytools copied to clipboard
artifact upload fails when uploaded file's name does not match GAV specified in arguments
Call to artifact upload
fails when name of the file being uploaded does not match version specified in the command's arguments.
When running this command
artifact upload --use-direct-put --artifact my-artifact --version 2.0.8-1.el6.noarch /tmp/my-artifact-2.0.8-1.noarch.rpm packages-el6 com.mycomp
the artifact is uploaded, but the command fails with this error:
INFO:/usr/local/bin/artifact:Started /usr/local/bin/artifact, with arguments ['upload', '--use-direct-put', '--artifact', 'my-artifact', '--version', '2.0.8-1.el6.noarch', '/tmp/my-artifact-2.0.8-1.noarch.rpm', 'packages-el6', 'com.mycomp']
INFO:repositorytools.lib.repository:-> Uploading my-artifact-2.0.8-1.noarch.rpm
Traceback (most recent call last):
File "/usr/local/bin/artifact", line 9, in <module>
load_entry_point('repositorytools==4.2.1', 'console_scripts', 'artifact')()
File "/opt/repositorytools/lib/python2.7/site-packages/repositorytools/cli/common.py", line 58, in __call__
self.run(*args)
File "/opt/repositorytools/lib/python2.7/site-packages/repositorytools/cli/common.py", line 55, in run
return args_namespace.func(args_namespace)
File "/opt/repositorytools/lib/python2.7/site-packages/repositorytools/cli/commands/artifact.py", line 94, in upload
return self.repository.upload_artifacts([artifact], args.repo_id, use_direct_put=args.use_direct_put)
File "/opt/repositorytools/lib/python2.7/site-packages/repositorytools/lib/repository.py", line 109, in upload_artifacts
use_direct_put=use_direct_put)
File "/opt/repositorytools/lib/python2.7/site-packages/repositorytools/lib/repository.py", line 170, in _upload_artifact
maven_metadata = self._send_json(path)['data']
File "/opt/repositorytools/lib/python2.7/site-packages/repositorytools/lib/repository.py", line 217, in _send_json
r = self._send(path, data=data, headers=headers, method=method, params=params)
File "/opt/repositorytools/lib/python2.7/site-packages/repositorytools/lib/repository.py", line 207, in _send
r.raise_for_status()
File "/opt/repositorytools/lib/python2.7/site-packages/requests/models.py", line 935, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 404 Client Error: Not Found for url: https://repository.mycomp.com/service/local/repositories/packages-el6/content/com/mycomp/my-artifact/2.0.8-1.el6.noarch/my-artifact-2.0.8-1.noarch.rpm?describe=maven2
The repository returns HTTP 404, because the URL contains local file name (without el6
) and not the file name used on the server. The correct URL should be https://repository.mycomp.com/service/local/repositories/packages-el6/content/com/mycomp/my-artifact/2.0.8-1.el6.noarch/my-artifact-2.0.8-1.el6.noarch.rpm?describe=maven2
.