Upload versioned designs through GraphQL
What does this MR do?
This allows uploading designs through GraphQL.
The mutation requires these arguments:
fullPath: The path in which we can find the issue for creating designs
iid: The iid of the issue in which to upload designs
files: An array of files. We expect these to be in the format used by apollo-upload-client which uses this spec for multipart fileupload.
The middleware used for handling the multipart upload an translating the variables is apollo_upload_server
When a file is uploaded, the basename is used for creating a design, when a design for the specified issue did not exist for the filename a new one is created. Otherwise the existing one is used.
When uploading a new file, a new version is created an linked to the design being updated or created.
The files are stored in a repository that lives next to the project
repository with the path
files are not yet stored in LFS, but they should be.
The frontend using this is in !10655 (merged)
What is not included
The raw endpoint that exposes the uploaded desings, I'll tackle that in a different MR.
What are the relevant issue numbers?
This is part of #9492 (closed)
Does this MR meet the acceptance criteria?
- [-] Changelog entry added, if necessary
- [-] Documentation created/updated via this MR
- [-] Documentation reviewed by technical writer or follow-up review issue created
- Tests added for this feature/bug
- [-] Tested in all supported browsers
- Conforms to the code review guidelines
- Conforms to the merge request performance guidelines
- Conforms to the style guides
- Conforms to the database guides
- [-] Link to e2e tests MR added if this MR has Requires e2e tests label. See the Test Planning Process.
EE specific content should be in the top level
- For a paid feature, have we considered GitLab.com plans, how it works for groups, and is there a design for promoting it to users who aren't on the correct plan?
- Security reports checked/validated by reviewer