This plugin is able to play audio clips locally through sound hardware, remotely by piping them through an operating system command, or simultaneously through all browsers that are on a Jenkins page.
When outputting through local hardware, Sounds requires that the Jenkins' server machine has a working sound card and speaker that is not in a remote server room where there's no one around to hear it.
Jenkins can execute a command on a remote machine to play a sound sent through a pipe. This is normally an SSH command to a remote Linux based host that has a working sound card (e.g. 'ssh <host> play -
').
If you have HTML5 Audio capable browsers you can configure Sounds to play sounds through all the browsers that are on a Jenkins page.
For all of the options there are varying degrees of support for the multitude of audio file formats. The most widely supported (but the most inefficient) is WAV.
A job can be configured to play a sound as part of its action. You can have jobs dedicated to playing sounds on a schedule, or have the job play a sound as it does other actions.
The build configuration allows you to select a sound to be played for any build state transition. You can configure:
- for any possible build result
- a list of previous build results
- the sound to play
A sound can also be triggered by making an HTTP POST request and passing a URL to the sound to be played. This enables external tools to play sounds through Jenkins.
<Jenkins URL>/sounds/playSound?src=file:///home/jenkins/sounds/somesound.wav
The sound archive is a simple .zip or .jar file containing sound files.
Jenkins analyses each file to detect whether it is a valid sound file supported by JavaSound. JavaSound supports AIFF, AU and WAV, see formats.
NOTE: The filename extension does not guarantee that the format is supported. If you have a file that doesn't play, try passing it though an conversion tool.
Jenkins ignores the archive folder structure (to simplify packaging) and uses the file name less extension as an ID, so keep the archive flat, or avoid having the same filename in multiple folders.
Jenkins Sounds can read an archive from the local filing system, or an HTTP URL.
- publish the archive on a local web server and use
http://
- put the archive in Jenkins' local filing system and use
file://
NOTE: Jenkins streams the audio from the archive for each event (to reduce memory requirements), so make sure it's not too far away.
Within the Configure System section of Jenkins Management locate the settings for Jenkins Sounds.
Enter the path to the archive.
- Absolute
http://
andfile://
URLs will be used unmodified. - URIs without a protocol will be assumed to be filing system references and converted to
file://
URLs.
After changing the sound archive location URL you must save the form before being able to test the sounds.
The Test Sound advanced option shows a list of the sounds found in the archive and their supported format.
- Security fixes (stop CSRF attacks) https://jenkins.io/security/advisory/2020-01-15/#SECURITY-814
- Removed JSONP option (for security reasons).
- Changed many requests to POST, which will likely require external triggers to supply a 'security crumb'.
- Replaced Prototype.js AJAX with plain JS XMLHttpRequest.
- Enforced security on administration of the plugin settings.
- Allow environment variables in piped command (tommikiviniemi-srs).
- Allowed local mute to be used by anonymous user when security is enabled (JENKINS-20081).
- Fixed incompatibility with Jenkins version 1.445 and upwards causing configuration of system command in pipe mode to fail (JENKINS-13825).
- Fixed error message when 'Sound archive location' field is left empty (JENKINS-19540).
- Major update to provide option where sounds are played simultaneously through all browsers showing a Jenkins page.
- Added capability of piping sounds through a system command (e.g. play on remote linux host)
- Added the sad trombone - the best build breaking sound effect .... ever!
- Internal sound archive restored if empty archive location submitted
- Use classpath URI to internal archive
- Initial release