It is very common to use time during SW development in order to keep an eye on your builds. A good overview of the build chain is a true help to developers. Build systems, such as TeamCity or Jenkins, have solved this problem by introducing the Dependency Graph View (DGV) (see DGV) .
More and more develpers/organizations either start using Github for their projects or migrate the existing ones from the on-premise setup. Github actions gives a very nice (and similar to Jenkins/TeamCity) graphical overview of the jobs in the workflow during the build. Still many complex setups coming from big organizations combine several repositories into a build and a good overview of the build is missing.
While there are already attempts to solve this problem from the community side (see Complex multi-repo builds with GitHub Actions and Camunda Cloud) we propose a similar, but also more lightweight solution, that is deployed on DigitalOcean and is powerred by Mermaid diagram viewer.
The pipeline dashboard is an event based system. There are two special even types: initialization and status updates to the jobs in the dashboard. The complete list of examples for each update event and initialization is given below.
The implemented solution is not limited to Github actions and can be deployed on any platform that either has DotNet5 or Docker installed.
If you would like to initialize the pipeline dashboard with an example:
curl --header "Content-Type: application/json" \You will get the session ID back, that you will use in both viewing the dashboard and updating the status' of the jobs.
--request POST --data '[["doctl","sample-golang"],["sample-dockerfile","sample-gatsby"],["doctl","sample-gatsby"],["godo","sample-gatsby"],["go-workers2","sample-gatsby"],["pynetbox","hacktoberfest"],["terraform-provider-digitalocean","grafana"],["pynetbox","doctl"],["sample-golang","godo"],["hacktoberfest","godo"],["droplet_kit","godo"],["sample-laravel-api","openapi"],["sample-gatsby","nginxconfig.io"],["go-libvirt","terraform-provider-digitalocean"],["go-libvirt","droplet_kit"],["sample-laravel-api","go-workers2"],["clusterlint","go-workers2"],["openapi","clusterlint"],["clusterlint","clusterlint"]]' \
https://your-hostname/pipelinegraph/init
To access the dashboard, visit https://your-hostname/graph/session-id
A job has been started:
curl --header "Content-Type: application/json" --request POST --data '["hacktoberfest","running"]' https://your-hostname/pipelinegraph/updatestatus/session-idA job finished with success:
curl --header "Content-Type: application/json" --request POST --data '["doctl","finishedsuccess"]' https://your-hostname/pipelinegraph/updatestatus/session-idA job failed:
curl --header "Content-Type: application/json" --request POST --data '["terraform-provider-digitalocean","finishederror"]' https://your-hostname/pipelinegraph/updatestatus/session-id