Back to selected work

MASTER'S THESIS · 2025

Immersive CI/CD

A VR factory for exploring GitHub Actions execution history.

Each workflow becomes a floor, each run a block on a conveyor-like timeline, and each job a smaller block contained within its run.

Multi-floor virtual factory showing GitHub Actions workflows, runs, jobs and time portals
Complete factory view with workflow floors, runs, jobs, timeline markers and compressed time portals.
CONTEXT
Individual Master's thesis · FEUP
ROLE
Design · engineering · evaluation
RESULT
17/20 · 20 participants
STACK
Unity · C# · OpenXR · GitHub API

The problem

GitHub Actions is effective for inspecting one run at a time, but it is difficult to see timing, overlap, hierarchy and failures across many workflows in one view. This thesis explored whether a spatial representation could support that broader perspective.

What I owned

  • Integrated the GitHub Actions REST API and local JSON snapshots through a shared data-provider abstraction.
  • Modelled workflows, runs and jobs, then generated the factory scene procedurally from their hierarchy and timestamps.
  • Built VR navigation, hover information panels, floor selection, magnification and world-scaling tools.
  • Added visual failure states and supplementary spatial audio for failed runs.
  • Designed, conducted and analysed a counterbalanced within-subjects study with 20 participants.

Engineering highlights

01

Time in 3D space

Mapped a shared timestamp origin to the Z-axis and execution duration to block length, preserving alignment across workflow floors.

02

Concurrent lanes

Used greedy first-fit interval assignment so overlapping runs and jobs appear side by side while sequential activity reuses space.

03

Compressed idle time

Detected repository-wide inactive periods and replaced long empty distances with labelled portals that make the discontinuity explicit.

How the visual model works

Height
A separate floor for each workflow
Depth
Time, with older activity farther into the scene
Width
Parallel lanes for intervals that overlap in time
Containment
Workflow → run → job hierarchy

From data to an interactive scene

Each workflow becomes a floor, each run a block on a conveyor-like timeline, and each job a smaller block contained within its run.

  1. 01GitHub Actions REST API or local JSON
  2. 02Data-provider abstraction
  3. 03Workflow, run and job model
  4. 04Procedural Unity scene
  5. 05XR interaction and spatial audio

Balancing overview and detail

The large factory view made timing and status patterns visible across workflows, but increased the cost of inspecting individual jobs. Direct floor navigation, hover panels, a magnifier and world scaling helped bridge that gap. The study still showed that the conventional interface was faster for fine-grained job lookup.

VR magnifier enlarging the label of a workflow floor
The handheld magnifier makes distant workflow and run labels readable without losing the surrounding context.
VR run information panel showing metadata for a failed workflow run
Hovering a run opens a panel with its status, timing, attempt count and job summary.
Status colour palette under typical and simulated colour-vision conditions
The status palette shown under common colour-vision simulations.

Visual status cues

Success, in-progress and failure states use a blue, yellow and red hierarchy. I examined the palette through common colour-vision simulations, but did not validate it with colour-vision-deficient participants.

Evaluation

Twenty mostly FEUP computer-engineering students and graduates used both interfaces. Three comparative tasks measured time and success; a fourth VR-only task isolated spatial audio.

Study participant using a VR headset and controllers while the prototype appears on a laptop
A participant using the prototype during the comparative study at FEUP.
Task / measureGitHubVR
Temporal navigation84.82 s18.22 s
Failed-run identification119.58 s13.17 s
Failed-job identification8.04 s16.16 s
Mean usability score56.3878.0

What I learned

  • Spatial overview and conventional detail views solve different parts of the inspection problem.
  • Concurrency inferred from timing is useful visually, but it is not the same as declared job dependencies.
  • Spatial audio worked only as a supplementary cue: 13 of 20 participants completed the audio-only task, with vertical localisation the main weakness.
  • The academic sample, fixed dataset and short task set limit how far the findings can be generalised.

What the evaluation showed

In this 20-participant study, VR was faster for temporal navigation and run-level failure scanning, while GitHub Actions was faster for detailed failed-job lookup. The result suggests complementary strengths rather than overall superiority. The thesis received 17/20.

UnityC#OpenXRXR Interaction ToolkitUniversal Render PipelineGitHub Actions REST APIUnityWebRequestLocal JSON
Back to selected work