Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
99 commits
Select commit Hold shift + click to select a range
2b9b9db
new script and new tool
aerickson Jun 23, 2025
bdf3ba5
graph: nodes are colored
aerickson Jun 23, 2025
9df2508
more colors
aerickson Jun 23, 2025
d818ebc
graph: color tweaks, generate a pdf
aerickson Jun 23, 2025
198e142
graph: can exclude pools
aerickson Jun 23, 2025
d93a269
graph: shorten image paths
aerickson Jun 23, 2025
585fbfa
bug fix, clenaup
aerickson Jun 23, 2025
7a8b804
use global init
aerickson Jun 23, 2025
d6ffac7
graph: improve logic and processing
aerickson Jun 24, 2025
bd085f3
handle new windows funky image spec
aerickson Jun 24, 2025
7610d67
fix formatting
aerickson Jun 24, 2025
dd8cd74
graph: takes path to fxci-config repo
aerickson Jun 24, 2025
bf24863
graph: improve help
aerickson Jun 24, 2025
31c6a42
add two new scripts
aerickson Jun 24, 2025
cb59749
add poetry config
aerickson Jun 24, 2025
54fb141
try setting theme, not working
aerickson Jun 24, 2025
f63966d
test: make faster, less complete
aerickson Jun 24, 2025
e2f3ef8
add short option for pool exclude string
aerickson Jun 24, 2025
9f2a42c
add gitignore
aerickson Jun 24, 2025
8928847
graph: wip on parsing tasks
aerickson Jun 24, 2025
9448e78
add temp script and tests
aerickson Jun 24, 2025
ca0847c
debug output tweaking
aerickson Jun 24, 2025
7b7292e
wip
aerickson Jun 24, 2025
c7ec435
graph.py: undo wip
aerickson Jun 24, 2025
662dbb8
wip cleanup
aerickson Jun 24, 2025
c48a951
add pyyaml
aerickson Jun 24, 2025
477203e
gitgnore more
aerickson Jun 24, 2025
c6f469e
wip, no grouping so too many edges
aerickson Jun 24, 2025
30e9dd2
working better
aerickson Jun 24, 2025
506138e
task edge labels are working
aerickson Jun 24, 2025
60eb27f
add stars to task labels indicating our shortening
aerickson Jun 24, 2025
a9d51a3
task nodes include count of tasks for each group
aerickson Jun 25, 2025
2c2a277
start surfacing more granular test* task info, but need to start filt…
aerickson Jun 25, 2025
ae9d2de
summarize: new algo and main
aerickson Jun 25, 2025
6de987d
remove added *, fix label to use human readable vs mermaid node name
aerickson Jun 25, 2025
494c04c
add drop filter
aerickson Jun 25, 2025
c999cb6
improvements on task grouping, formatting fixes for * in edge text
aerickson Jun 25, 2025
446118b
build tasks can go to level 2, more drop strings, fix warning about b…
aerickson Jun 25, 2025
112ae49
wip: working on handling hardware pools
aerickson Jun 25, 2025
d507e8f
add hardware pools and link tasks
aerickson Jun 25, 2025
f920229
cleanup, comments
aerickson Jun 25, 2025
aae5e29
wip
aerickson Jun 25, 2025
7195f0d
add classes so we get colors
aerickson Jun 25, 2025
7fe871b
viewer is workign pretty well
aerickson Jun 25, 2025
0ac8c12
add gitignore
aerickson Jun 25, 2025
ab05781
enter works in search, add layout extension
aerickson Jun 25, 2025
77c1047
can restore initial layout
aerickson Jun 25, 2025
56a7f76
add favicon
aerickson Jun 25, 2025
da1c4d3
add cytoscape-cise extension
aerickson Jun 25, 2025
7d61d7f
import cise extension
aerickson Jun 25, 2025
c5b6dc2
summarize: add additional test case
aerickson Jun 26, 2025
d558ae4
disable cise layout (didn't work well)
aerickson Jun 26, 2025
163080a
sidebar shows selected nodes on sidebar
aerickson Jun 26, 2025
b1037b6
move vars up a level
aerickson Jun 26, 2025
ae98eb2
bug fix
aerickson Jun 26, 2025
d497ee3
color tweak
aerickson Jun 26, 2025
a90edba
show linked seems to be working better
aerickson Jun 26, 2025
f086257
expose perfests to level 2, add readme, add win serve.ps1, tidytree s…
aerickson Jun 26, 2025
a1a472c
favicon fix, make packaging script, readme tweak
aerickson Jun 26, 2025
4ef28b8
add more patterns
aerickson Jun 26, 2025
22014b5
readme work, more extensions to ignore in summarize, get rid of class…
aerickson Jun 26, 2025
ed17431
readme work
aerickson Jun 26, 2025
36c8031
finally working!?!?
aerickson Jun 26, 2025
7780b61
readme: add another example
aerickson Jun 26, 2025
e1aa0f2
work on summarize, new pattern, wildcard reducer fix
aerickson Jun 26, 2025
60242f0
remove cise layout plugin js loading
aerickson Jun 27, 2025
050bae4
viewer: filters are considered when pressing show all
aerickson Jun 27, 2025
b3907f5
graph.py: inject metadata into cytoscape json
aerickson Jun 27, 2025
2f16022
fixup metadata generation, show metadata when graph is done running
aerickson Jun 27, 2025
30af386
comment tweaking
aerickson Jun 27, 2025
e756fb2
viewer: layout selection is a single button press now
aerickson Jun 27, 2025
d32724c
viewer: make cytoscape happy wrt deprecated formatting, move fit view…
aerickson Jun 27, 2025
050b352
fix node sizing (larger)
aerickson Jun 27, 2025
a85f917
format doc, floating metadata window
aerickson Jun 27, 2025
af14349
metadata display and generation improvements
aerickson Jun 27, 2025
1f866a4
graph: rework metadata stuff
aerickson Jun 27, 2025
582a267
viewer: metadata styling
aerickson Jun 27, 2025
9f4212e
viewer: metadata button moved
aerickson Jun 27, 2025
1119e99
bottom bar wip
aerickson Jun 27, 2025
22c9e59
moving tc cytoscape into folder of it's own, also title of viewer twe…
aerickson Jun 27, 2025
e6c5b21
add deploy to gh pages script
aerickson Jun 27, 2025
4bc6558
tweak deploy script
aerickson Jun 27, 2025
ed63f8b
mention age of input files
aerickson Jun 27, 2025
d91ab93
renaming viewer html file
aerickson Jun 27, 2025
469d0ce
readme work
aerickson Jun 27, 2025
59366cb
reamde todos
aerickson Jun 27, 2025
5eb24ad
deploy script tweak to push readme also
aerickson Jun 27, 2025
7f21d55
readme formatting
aerickson Jun 27, 2025
8fcf6c8
readme: md link
aerickson Jun 27, 2025
00e6b66
search results panel expands to take up more space
aerickson Jun 27, 2025
3a07eaa
add todo
aerickson Jun 27, 2025
ba60250
viewer: move file, delete file
aerickson Jun 30, 2025
fe459f4
add note about ff bug
aerickson Jun 30, 2025
99b5417
readme: add caveat
aerickson Jul 1, 2025
002f7c5
readme work
aerickson Jul 1, 2025
d839071
summarize tasks: fix up tests, tweak algo a bit
aerickson Jul 1, 2025
fe63935
more todos
aerickson Jul 1, 2025
86f7858
readme notes
aerickson Jul 14, 2025
a07582c
add todo
aerickson Oct 31, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions ci-configuration-tools/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
__pycache__

*.txt
*.json
*.zip
5 changes: 5 additions & 0 deletions ci-configuration-tools/docker-worker-report.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#!/usr/bin/env bash

set -e

./pools_images_count_linux.sh | grep docker-worker
7 changes: 7 additions & 0 deletions ci-configuration-tools/docker-worker-report2.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#!/usr/bin/env bash

set -e

./pools_images.py | grep docker-worker

./pools_images.py | grep docker-worker | wc -l
229 changes: 229 additions & 0 deletions ci-configuration-tools/poetry.lock

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion ci-configuration-tools/pools_images_count_linux.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@
set -e
#set -x

./pools_images.py | cut -f 2 -d ':' | sort | uniq -c | sort | grep -v win
./pools_images.py | grep -v win | cut -f 2 -d ':' | sort | uniq -c | sort | grep -v win
19 changes: 19 additions & 0 deletions ci-configuration-tools/pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
[project]
name = "ci-configuration-tools"
version = "0.1.0"
description = ""
authors = [{name = "Andrew Erickson",email = "aerickson@mozilla.com"}]
license = {text = "MPL 2.0"}
readme = "README.md"
requires-python = ">=3.12"
dependencies = ["pyyaml (>=6.0.2,<7.0.0)"]

[tool.poetry]

[tool.poetry.group.dev.dependencies]
pytest = "^8.4.1"
pytest-watch = "^4.2.0"

[build-system]
requires = ["poetry-core>=2.0.0,<3.0.0"]
build-backend = "poetry.core.masonry.api"
35 changes: 35 additions & 0 deletions ci-configuration-tools/taskcluster_cytoscape/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# taskcluster_cytoscape

## Overview

Visualizes Firefox Taskcluster tasks, worker pools, image aliases, and images using [Cytoscope.js](https://js.cytoscape.org/).

Task data is from [Firefox](https://github.com/mozilla-firefox/firefox)'s Taskgraph. All other data is from [fxci-config](http://github.com/mozilla-releng/fxci-config).

This software consists of a Python script to generate a Cytoscape.js JSON file (`graph.py`) and the associated HTML viewer for the JSON file (see the `cytoscape_viewer/` directory).

## Generation of JSON

1. Run `poetry shell && poetry install` one directory up.
1. Update firefox repo and generate tasks.json in firefox repo.
1. Update the fxci-config repo.
1. Run `./generate_graph.sh` (paths may need to be edited).

## Viewing

See the README.md inside the `cytoscape_viewer` directory.

## TODOs

### Viewer

1. Deeplinking of search query and 'show only linked' params.
1. Clicking on a search result will center view on it.
1. Clicking search will run 'clear highlights' first. Currently accumulates.

### Graph

1. For step 'Generation of JSON', for tasks.json, just fetch from 'https://firefox-ci-tc.services.mozilla.com/api/index/v1/task/gecko.v2.mozilla-central.latest.taskgraph.decision/artifacts/public%2Ftask-graph.json'.
1. Manage repos (don't take paths to them, do shallow clones)
1. Fetch tasks.json from tc index task:
- https://firefox-ci-tc.services.mozilla.com/api/index/v1/task/gecko.v2.mozilla-central.latest.taskgraph.decision/artifacts/public%2Ftask-graph.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
old/
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# Taskcluster Cytoscape Viewer

Visualizes Firefox Taskcluster tasks, worker pools, image aliases, and images using [Cytoscope.js](https://js.cytoscape.org/).

Task data is from [Firefox](https://github.com/mozilla-firefox/firefox)'s Taskgraph. All other data is from [fxci-config](http://github.com/mozilla-releng/fxci-config).

## Why?

Taskgraph is complicated and we frequently get questions like 'What tasks run on these systems?' and 'What pools use these images?'.

This tool aims at helping people find those answers themselves.

## Caveats

- We lack task data for other repositories that submit tasks to fxci. For example, the translations GPU workers don't have any tasks in the dataset. Similarly, the VPN workers don't have any tasks.
- Known Firefox DOM rendering bug (https://bugzilla.mozilla.org/show_bug.cgi?id=1974854). Chrome doesn't have this issue.
- Hardware pools without tasks won't be visible. Consider scanning fxci taskcluster? Could be useful to be able to identify them.

## How To Run on Web

Currently deployed to: [https://aerickson.github.io/gh_pages_test/viewer.html](https://aerickson.github.io/gh_pages_test/viewer.html)

## How To Run Locally

### Unix

```bash
./serve.sh
# surf to http://localhost:8080/viewer.html
```

### Windows

Untested. Please report back.

```bash
# in powershell
serve.ps1
# surf to http://localhost:8080/viewer.html
```

## Usage

You scroll around the display area by clicking and dragging.

Zooming also works (two finger scrolling on Mac). Make sure to hover over the elements you want to zoom in on (it zooms exactly on the cursor location).

Click around and explore for now. Send me feedback.

### Color Guide

```
Purple: tasks
Light Green: cloud pool
Dark Green: hw pool
Light Blue: image alias
Light Yellow: l1 image
Light Pink: l3 image
```

### Example 1: Find out where `perftest-*-summarizer*` tasks run.

1. Type `summarizer` into search. Press return.
2. Click the `Show only linked` button.
3. Make it easier to view by Layout>Tidytree then click `Apply Layout`.

### Example 2: Find out which pools and tasks use the `docker-worker-gcp-u14-04-2025-06-16` (docker-worker) image.

1. Type `fxci-level1-gcp: docker-worker-gcp-u14-04-2025-06-16` into search. Press return.
2. Click the `Show only linked` button.
3. Make it easier to view by Layout>Tidytree then click `Apply Layout`.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Start a simple HTTP server on port 8080 using Python 3
python -m http.server 8080
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#!/usr/bin/env bash

set -e

python3 -m http.server 8080

Loading