Web-based dashboard for cctray.xml files
Please consider supporting this project by making a donation via PayPal
- category Web Application
- author Nicola Asuni info@tecnick.com
- copyright 2013-2020 Nicola Asuni - Tecnick.com LTD
- license MIT (see LICENSE)
- link https://github.com/tecnickcom/web-cctray
This web application displays the build status of projects on a continuous integration server by parsing the cctray.xml
file.
This project can be used directly by opening the index.html
file in the src directory, or it can be packaged and minimized using the tools described below.
- c : can be used to specify an alternative configuration file name, excluding the ".json" extension.
- d : can be used to specify the configured dashboard to display, otherwise all the dashboards will be displayed in turn.
- a : comma-separated list of activities to filter. Valid values are: Sleeping, Building, CheckingModifications, Pending.
- s : comma-separated list of statuses to filter. Valid values are: Success, Failure, Exception, Unknown.
- x : comma-separated list of substrings to remove from the the pipeline name.
- l : flag to enable lexicographical order.
http://example.com/web-cctray/index.html?c=alternative_config&d=DashboardName&t=1&l=1
http://example.com/web-cctray/index.html?c=config-all&s=Failure
http://example.com/web-cctray/index.html?c=config-all&a=Building&s=Failure&x=%20::%20Default
Copy, rename and edit the src/config/config.example.json
to src/config/config.json
file.
- refresh : Number of seconds to wait before refreshing the page.
- blank : URL of the resource to display in case of blank dashboard (no pipelines to display)
- dashboard : Array of dashboards. It is possible to define multiple dashboards.
- name : Generic name.
- url : URL of the cctray.xml file, for example: http://username:password@example.com/cctray.xml
- access : String containing "user:password" for Basic HTTP Authentication.
- boxration : Default width/height ratio for a pipeline box.
- pipeline : List of the CI/CD pipeline names as reported by cctray.xml, or the word "all" to import all pipelines specified in cctray.xml.
- exclude : List of the CI/CD pipeline names to exclude.
- activity : List of activities to filter. Valid values are: Sleeping, Building, CheckingModifications, Pending.
- status : List of statuses to filter. Valid values are: Success, Failure, Exception, Unknown.
- stripname : List of substrings to remove from the the pipeline name.
- sort : Sort the pipelines in lexicographical order when set to true.
{
"refresh": 5,
"blank": "https://www.example.com/page_to_display_in_case_of_blank_dashboard.html",
"dashboard": [
{
"name": "demo1",
"url": "http://localhost/cctray.example.xml",
"access": "user:password",
"boxratio": 2,
"pipeline": [
"build-linux :: build-non-server",
"build-linux :: build-non-server :: agent",
"build-linux :: build-non-server :: agent-bootstrapper"
]
},
{
"name": "demo2",
"url": "http://localhost/cctray.example.xml",
"access": "",
"boxratio": 2,
"pipeline": [
"build-linux :: build-non-server :: util",
"plugins :: build",
"gocd-docs.go.cd-release-16.6.0 :: Build :: build_job",
"UploadInstallers :: UploadInstallers",
"github-oauth-authorization-plugin-PR :: build",
"gocd-docs.go.cd-release-16.9.0 :: PushToGHPages :: pushtoghpages_job",
"gocd-docs.go.cd-release-16.5.0 :: PushToGHPages",
"docs.go.cd-release-17.7.0 :: PushToGHPages"
]
},
{
"name": "demo3",
"url": "http://localhost/cctray.example.xml",
"access": "",
"boxratio": 2,
"activity": ["Sleeping", "Building", "CheckingModifications", "Pending"],
"status": ["Success", "Failure", "Exception", "Unknown"],
"stripname": [" :: ", "build"],
"sort": true,
"separator": " :: ",
"level": 3,
"pipeline": [
"all"
],
"exclude": [
"gocd-docs.go.cd-release-16.5.0 :: PushToGHPages",
"docs.go.cd-release-17.7.0 :: PushToGHPages"
]
},
{
"name": "demo4",
"url": "http://localhost/cctray.example.xml",
"access": "",
"boxratio": 2,
"pipeline": [
"*http://www.example.com/external_page.html"
]
}
]
}
The following is a list of CI/CD systems that provides a cctray.xml file:
- Buddybuild
- CircleCI
- CruiseControl
- CruiseControl.NET
- CruiseControl.rb
- GoCD
- GreenhouseCI
- Hudson
- Jenkins
- Semaphore
- Snap CI
- TeamCity
- Travis
Pre-built packages are available at:
- DEB : https://bintray.com/tecnickcom/deb/web-cctray
- RPM : https://bintray.com/tecnickcom/rpm/web-cctray
The application is installed by default in /usr/share/web-cctray
This project include a Makefile that allows you to automate common operations in a Debian/Ubuntu enviromnent.
To see all available options:
make help
To build the project (requires node):
make deps build
In this example web-cctray and CI/CD system (GoCD) are installed in the same server.
The CORS (cross-origin resource sharing) settings are there in case you want install web-cctray in a diffrent server.
You should replace <YOUR_SERVER_NAME>
with your own server name (e.g. "example.com"), set the correct URL to the CI/CD system
(in this example: http://localhost:8153/
) and the cctray.xml full URL (in this example: http://localhost:8153/go/cctray.xml
).
server {
listen 443;
ssl on;
ssl_certificate /etc/letsencrypt/live/<YOUR_SERVER_NAME>/cert.pem;
ssl_certificate_key /etc/letsencrypt/live/<YOUR_SERVER_NAME>/privkey.pem;
server_name <YOUR_SERVER_NAME>;
server_tokens off;
location /web-cctray {
root /usr/share;
index index.html;
access_log off;
expires 0;
add_header Cache-Control private;
sendfile off;
try_files $uri $uri/ =404;
}
location / {
proxy_pass http://localhost:8153/;
}
location = /go/cctray.xml {
# CORS settings
more_set_headers 'Access-Control-Allow-Origin: $http_origin';
more_set_headers 'Access-Control-Allow-Methods: GET, OPTIONS';
more_set_headers 'Access-Control-Allow-Credentials: true';
more_set_headers 'Access-Control-Allow-Headers: Origin,Authorization,Cache-Control,X-Requested-With,Content-Type,Accept,Credentials';
if ($request_method = OPTIONS) {
return 200;
}
proxy_pass http://localhost:8153/go/cctray.xml;
}
}