Skip to content

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.

Merge request reports