MVC: Improve the Artifacts table view to support more data
Problem to solve
The current artifact page does not show enough data to deliver on a meaningful context for users to decide if they need to for example delete it. We've heard from users that additional information that would allow them to trace the artifact back to a pipeline, commit, user, etc. would be helpful when analyzing them. This was noted in https://gitlab.com/gitlab-org/ux-research/-/issues/1679.
Intended users
Proposal
Design
Technical proposal
- There's no need to introduce a feature flag, we already have one for this page.
- We can initialize a vue app in place of the current table and build it to match the design with gitlab-ui components.
- We can use a query like this to get the list of artifacts and their details to populate the table:
query getJobArtifacts {
project(fullPath: "gitlab-org/gitlab") {
jobs(statuses: [SUCCESS, FAILED]) {
nodes {
status # job status badge
name # job name
id # use to get link to job
pipeline {
id # pipeline
path # pipeline link
}
refName # ref
refPath # ref link
shortSha # sha
commitPath # sha link
finishedAt # time that artifacts were created
artifacts {
nodes {
id # id for deletion
name # artifact name
fileType # artifact file type badge, flag for whether browse button is shown
downloadPath # artifact download button link
size # size in bytes
expireAt # expire date (ISO)
}
}
}
}
}
}
- And we can use a mutation like this to delete an artifact by id:
mutation artifactDestroy($id: CiJobArtifactID!) {
artifactDestroy(input: { id: $id }) {
artifact {
name
}
}
}
- For the MVC, we can limit the scope to just the table view, so the browse link will still go to the existing haml-based browse view
Development
GraphQL query to get the job artifacts:
Click to expand
query getJobArtifacts {
project(fullPath: "gitlab-org/gitlab") {
jobs(statuses: [SUCCESS, FAILED]) {
nodes {
id
name
finishedAt
refName
refPath
shortSha
commitPath
artifacts {
nodes {
downloadPath
fileType
name
}
}
}
}
}
}
Includes the following data for job artifacts:
- total number of artifact files in job
- job name
- job status
- job commit sha
- job branch
- job pipeline ID
- job created at
- artifact name
- artifact type
- download artifact
- browse
archive
artifacts
Permissions and Security
Documentation
Testing
What does success look like, and how can we measure that?
We should be able to increase adoption by allowing developers to debug their jobs/pipelines faster.
What is the type of buyer?
Links / references
UX Definition of Done
Problem Validation Phase
-
Problem is well understood and has been validated -
JTBD is well understood and has been validated -
PM has communicated the opportunity canvas to stable counterparts and group stakeholders, including the Product Designer and Product Design Manager
Design Phase
-
Document the JTBD and UX goal in the issue/epic description -
Explore multiple different approaches as a team -
Discuss the technical implications with Engineering -
Identify any potential cross-team dependencies and include the DRIs in the discussions
-
-
Identify a small set of options to validate -
Document the user story(ies) for the MVC -
Consider edge cases for each user story -
Create prototypes or mockups for each user story
-
-
Pajamas component lifecycle -
Identify component design or pattern update/creation -
Discuss the technical implications with Engineering -
Pajamas issue is created (within the scope of the MVC)
-
-
Update issues/epic descriptions -
The appropriate labels were applied -
If changes involve copy, add the Technical Writing and UI text labels
-
-
-
Proposed solution(s) identified and documented in the issue/epic description
Solution Validation Phase
-
Validate the solution to increase confidence in the proposed solution -
Document the solution validation learnings -
Product Designer has communicated the solution validation learnings to stable counterparts and group stakeholders, including the Product Design Manager -
Update the MVC proposal with relevant insights from the solution validation -
Discuss the technical implications with Engineering -
Update issue/epic description to contain or link to the findings
-
-
Proposal is ready to be broken down and prioritized by PM for development
Develop & Test Phase
-
Product Designer reviewed MRs that include user-facing changes, as per the Code Review Guidelines -
UX Debt issues have been identified and assigned to a milestone
-