Debian repository: dedicated upload route for direct uploads
What does this MR do and why?
Debian repository: dedicated upload route for direct uploads
See #390197
Screenshots or screen recordings
curl --request PUT --user "${username}:${token_str}" --form file=@spec/fixtures/packages/debian/sample-dev_1.2.3~binary_amd64.deb --form distribution=unstable --form component=main http://localhost:3000/api/v4/projects/${project_id}/packages/debian`
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1414 0 25 100 1389 0 23 0:01:00 0:00:58 0:00:02 7
{"message":"201 Created"}
How to set up and validate locally
From rails console:
# enable feature
Feature.enabled?(:debian_packages) || Feature.enable(:debian_packages)
# params
username = 'testdeb'
project_name = 'mydebs'
dist_codename = 'unstable'
# user
user = User.find_by(username: username)
user ||= Users::CreateService.new(nil, name: username, username: username, email: "#{username}@example.org", password: 'toto12345', skip_authorization: true).execute
# project
project = Project.inside_path(username).where(name: project_name).first
project ||= Projects::CreateService.new(user, name: project_name).execute
# pat
token = PersonalAccessTokens::CreateService.new(current_user: user, target_user: user, params: {name: 'api', scopes: ['api']}).execute.payload[:personal_access_token]
token_str = token.token
# or token_str = 'glpat-...'
# create distribution
`curl --request POST --header "PRIVATE-TOKEN: #{token_str}" "http://localhost:3000/api/v4/projects/#{project.id}/debian_distributions?codename=#{dist_codename}"`
# upload file
`curl --request PUT --user "#{username}:#{token_str}" --form file=@spec/fixtures/packages/debian/sample-dev_1.2.3~binary_amd64.deb --form distribution=unstable --form component=main http://localhost:3000/api/v4/projects/#{project.id}/packages/debian`
MR acceptance checklist
This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.
-
I have evaluated the MR acceptance checklist for this MR.