{"id":1489,"date":"2014-12-19T17:46:34","date_gmt":"2014-12-19T16:46:34","guid":{"rendered":"http:\/\/blog.gocept.com\/?p=1489"},"modified":"2014-12-19T17:46:34","modified_gmt":"2014-12-19T16:46:34","slug":"making-ci-results-visible-at-home","status":"publish","type":"post","link":"https:\/\/blog.gocept.com\/2014\/12\/19\/making-ci-results-visible-at-home\/","title":{"rendered":"Making CI results visible at Home"},"content":{"rendered":"

We are using a Jenkins server to test our projects continuously. To make the results clearly visible, my colleagues installed a Raspberry Pi<\/a> to display the testing results on a huge LED strip. As you see in the picture below, the project results are displayed on both sides of the whiteboard. The aggregated result is displayed in the big LED tube on the top.<\/p>\n

\"Picture<\/p>\n

This setup was built in 2012, but this year we started to work remotely, i.e. from home. Therefore we have no access to informations which are physically displayed at the office. Some month ago, Daniel Havlik<\/a> mouthed the idea to build an LED strip “to go”. Since the decreased visibility annoyed me, I was a strong advocate of his idea.<\/p>\n

Finally, during the Summer Sprint<\/a> we held in September, we had the opportunity to work on a project of our choice. Daniel Havlik supplied us with an Arduino Uno<\/a> and a small LED strip, so we started to work on his idea together with a friend of mine, Oliver Zscheyge.<\/p>\n

During the first day, we built a simplistic API for the Arduino to set the color of an LED by providing position and color. To test the API we wrote a small Python script that sent random colors to all LEDs.<\/p>\n

At the second day of the sprint, Daniel astonished us, since he had put in some extra hours during the night to build a prototype. It had a wooden frame, colored in black and all. Wow! This was definitely the most “visible” result of the Summer Sprint.<\/p>\n

\"Prototype<\/p>\n

Later that day, we extended the Python script to retrieve the project states from Jenkins and set the LEDs accordingly. We used an INI-file to define which LED represents which project. For fun we also played a short sound when a project was working and broke or the other way around.<\/p>\n

Since one of my co-workers wanted to move back to his home town, he got the prototype. To speak truly, I was a little bit jealous about that. But to my surprise, Daniel built another “LED to go” and gave it to me in October, as a birthday present. Since I am a LARPer<\/a>, I love the shape of it which resembles a sword.<\/p>\n

\"Remote<\/p>\n

At some days I like to pronounce that “my sword of Jenkins power is glowing green”, which casts a smile on the faces of my co-workers. I think this was a great project with a very useful result.<\/p>\n

If you possess some crafting abilities, you can easily make an “LED to go” yourself. We made our code public at bitbucket\/remoteled<\/a>. It contains the versatile API for the Arduino, as well as the Python script which retrieves data from a Jenkins server. Of course you can build additional clients for your personal needs. If you think it’s useful to others as well, send us a pull request. We are looking forward to it!<\/p>\n

With these words I am wishing you all a Merry Christmas and a Happy New Year, since I will not write another post in 2014. See you in January!<\/p>\n","protected":false},"excerpt":{"rendered":"

We are using a Jenkins server to test our projects continuously. To make the results clearly visible, my colleagues installed a Raspberry Pi to display the testing results on a huge LED strip. As you see in the picture below, the project results are displayed on both sides of the whiteboard. The aggregated result is … Continue reading “Making CI results visible at Home”<\/span><\/a><\/p>\n","protected":false},"author":21108265,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_newsletter_tier_id":0,"footnotes":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[10221],"tags":[1789716,22272,12],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pFP3y-o1","jetpack-related-posts":[{"id":1340,"url":"https:\/\/blog.gocept.com\/2013\/07\/31\/reproducable-automated-deployments-on-raspberrypi-with-batou\/","url_meta":{"origin":1489,"position":0},"title":"Reproducable automated deployments on RaspberryPi with batou","author":"Daniel Havlik","date":"July 31, 2013","format":false,"excerpt":"For continuous integration during development, we use Jenkins to automatically run tests for all projects we maintain. Some time ago we wanted to increase visibility of the results, so we set up a Raspberry Pi driving a few meters of LPD8806-based LED strip on which we can address single LEDs\u2026","rel":"","context":"In "en"","block_context":{"text":"en","link":"https:\/\/blog.gocept.com\/category\/en\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1361,"url":"https:\/\/blog.gocept.com\/2013\/08\/28\/run-tests-using-layers-with-py-test\/","url_meta":{"origin":1489,"position":1},"title":"Run tests using layers with py.test","author":"Michael Howitz","date":"August 28, 2013","format":false,"excerpt":"TL;DR Use gocept.pytestlayer. Long Story We have many test suites which use test layers (e. g. the ones from plone.testing). We want to use py.test\u00a0and all its fancy features to have a modern test runner. There was no way to convert such tests partly: either you have to port the\u2026","rel":"","context":"In "en"","block_context":{"text":"en","link":"https:\/\/blog.gocept.com\/category\/en\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3,"url":"https:\/\/blog.gocept.com\/2009\/10\/16\/ajax-loading-spinner-without-flickering-artifacts\/","url_meta":{"origin":1489,"position":2},"title":"AJAX loading spinner without flickering artifacts","author":"Daniel Havlik","date":"October 16, 2009","format":false,"excerpt":"We were embedding a spinner to give user feedback while loading data from a server which might take a little longer (but can also be pretty quick in most cases). Implementing the spinner itself isn't that hard, but we found that quick responses from the server caused visual artifacts flickering\u2026","rel":"","context":"In "en"","block_context":{"text":"en","link":"https:\/\/blog.gocept.com\/category\/en\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1327,"url":"https:\/\/blog.gocept.com\/2013\/07\/09\/monitoringlove-sprint-takeaway\/","url_meta":{"origin":1489,"position":3},"title":"#monitoringlove sprint takeaway","author":"Daniel Havlik","date":"July 9, 2013","format":false,"excerpt":"A few weeks ago I co-organised and participated in a #monitoringlove sprint in Berlin. My personal plan was to play with more modern utilities that can potentially replace our existing Nagios monitoring chain. The result of what I think would be a good setup would probably look like this: Most\u2026","rel":"","context":"In "en"","block_context":{"text":"en","link":"https:\/\/blog.gocept.com\/category\/en\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.gocept.com\/wp-content\/uploads\/2013\/07\/monitoringlove2.png?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":1262,"url":"https:\/\/blog.gocept.com\/2013\/04\/17\/running-tests-using-gocept-selenium-on-travis-ci\/","url_meta":{"origin":1489,"position":4},"title":"Running tests using gocept.selenium on Travis-CI","author":"Michael Howitz","date":"April 17, 2013","format":false,"excerpt":"Travis-CI\u00a0is a\u00a0free hosted continuous integration platform for the open source community. It has a good integration with Github, so each push to a project runs the tests \u00a0of the project. gocept.selenium\u00a0is a python package our company has developed as a test-friendly Python API for Selenium\u00a0which allows to run tests in\u2026","rel":"","context":"In "en"","block_context":{"text":"en","link":"https:\/\/blog.gocept.com\/category\/en\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1474,"url":"https:\/\/blog.gocept.com\/2014\/11\/27\/florian-pilz\/","url_meta":{"origin":1489,"position":5},"title":"Florian Pilz","author":"","date":"November 27, 2014","format":false,"excerpt":"Today's blogpost is all about me. I joined gocept about a year ago, therefore I want to tell you something about the past - and something about the future. The Past Before joining the gocept crew, I studied computing at the HTWK in Leipzig for 6 years. Since sitting in\u2026","rel":"","context":"In "en"","block_context":{"text":"en","link":"https:\/\/blog.gocept.com\/category\/en\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.gocept.com\/wp-content\/uploads\/2014\/11\/portrait-small.jpg?fit=210%2C284&ssl=1&resize=350%2C200","width":350,"height":200},"classes":[]}],"_links":{"self":[{"href":"https:\/\/blog.gocept.com\/wp-json\/wp\/v2\/posts\/1489"}],"collection":[{"href":"https:\/\/blog.gocept.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.gocept.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.gocept.com\/wp-json\/wp\/v2\/users\/21108265"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.gocept.com\/wp-json\/wp\/v2\/comments?post=1489"}],"version-history":[{"count":16,"href":"https:\/\/blog.gocept.com\/wp-json\/wp\/v2\/posts\/1489\/revisions"}],"predecessor-version":[{"id":1508,"href":"https:\/\/blog.gocept.com\/wp-json\/wp\/v2\/posts\/1489\/revisions\/1508"}],"wp:attachment":[{"href":"https:\/\/blog.gocept.com\/wp-json\/wp\/v2\/media?parent=1489"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.gocept.com\/wp-json\/wp\/v2\/categories?post=1489"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.gocept.com\/wp-json\/wp\/v2\/tags?post=1489"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}