How to monitor jenkins build status from external applications - jenkins

We are developing a reporting application for my organization, which is aimed to monitor jenkins builds for specific jobs. I know there are API to get the status of the jobs and other information. But, it requires me to keep polling jenkins with these api requests. Would like to know, is there any other way like events thrown by jenkins so that my application can listen and do the needful ?

You can "throw" whatever you want in your Jenkins build. Question is: what can you application "catch"?
You can make a POST or GET request at the end of the build to your application.
You can upload files to remote hosts.
You can update files on local host.
You can execute batch or shell scripts, remotely or locally.
So what can your application listen to?

Got this plugin https://wiki.jenkins-ci.org/display/JENKINS/Notification+Plugin, this solves my requirement

Related

How can I access my Jenkins dashboard on my remote droplet server?

I'm little confused about Jenkins and was hoping someone could clarify some matter for me.
After reading up on Jenkins, both from official docs and various tutorials I get this:
If I wanna set up auto deplyoment or anything Jenkins related, I could just install docker jenkins image, launch it and access it via localhost. That is clear to me.
Then, I just put Jenkinsfile into my repository, so that it knows what and how to build my repo and stuff.
The questions that I have are:
It seems to me that Jenkins needs to be running all the time, so that it can watch for all the repo changes and trigger code building, testing and deploying. If that is the case, I'd have to install Jenkins on my droplet server. But how do I then access my dashboard, if all I have is ssh access?
If Jenkins doesn't need to be up and running 24/7, then how does it watch for any changes?
I'll try to deploy my backend and front apps on docker-compose file on my server. I'm not sure where does Jenkins integrates in all that.
How Jenkins can watch for all the repository changes and trigger code building, testing and deploying?
If Jenkins doesn't need to be up and running 24/7, then how does it watch for any changes?
Jenkins and other automation servers offer two options to watch source code changes:
Poll SCM: Download and compare source code at predefined intervals.This is simple but, hardware consumption is elevated and is a little outdated
Webhooks: Optimal functionality offered by github, bitbucket, gitlab, etc. in which Github, for example, at any git event, makes an http request to your automation server, sending all the information like branch name, commit author, etc). Here more info about webhooks and jenkins.
If you don't want a 24/7 dedicated server, you can use:
Some serverless platform or just a simple application able to receive http posts + webhook strategy. For instance, Github will perform a post requet to your app/servlerless and at this point, just execute your build, test or any other commands to deploy your application.
https://buddy.works/. It is like a mini-jenkins.
If I'd have to install Jenkins on my droplet server. But how do I then access my dashboard, if all I have is ssh access?
Yes. Jenkins is an automation server, so it needs its own dedicated server.
You can install jenkins manually or use docker in your droplet. Configure 8080 port for your jenkins. If everyting is ok, just access to your droplet public ip offered by digitalocean, like: http://197.154.458.456:8080. This url must load the Jenkins dashboard.

Simple Jenkins notifications in a closed network?

We are a small development team (4 developers) with the following environment:
Windows 10 (64-bit)
Jenkins version 2.150.2
PCs connected through a CLOSED NETWORK (no Internet connections)
no email
We would like to use Jenkins notifications, so developers would be automatically notified for example when a build gets broken.
Jenkins Plugin Manager lists many (several tens) plugins under the section Build Notifiers, but we are not sure which one would be appropriate.
Something like Slack is not an option, because Slack servers are cloud-based and we have a closed network.
Something like Mattermost (a self-hosted alternative to Slack) would be overkill: requires Windows Server, MySQL, and what not (see https://docs.mattermost.com/install/prod-windows-2012.html).
Basically, we just need a small window to pop up on developers' screens when something goes wrong in Jenkins. What would be a simple way to achieve that?
You can add HipChat plugin assuming you can setup an internal HipChat server
HipChat Server Host: The hostname (and optionally the port number) for the HipChat server in use. Note that the server will always be accessed via HTTPS
And send notification to users
The HipChat Notification plugin provides the previously mentioned hipchatSend step that you can use in your pipeline. The only required (default) parameter is a message.
You can use AnyStatus to monitor Jenkins jobs and views.
AnyStatus is a desktop notifications app for Windows that helps developers keep track of services such as Jenkins, Azure DevOps, TeamCity, AppVeyor and more. AnyStatus will notify you when your Jenkins jobs start, complete or fail. It shows the progress of jobs while they are running and enables you to start or stop jobs remotely.
AnyStatus can also monitor other resources such as databases, network, web servers, computer resources and more. You can also develop your own plugins.
AnyStatus is a standalone application that can run in a closed network.
No server or internet connection is required.
Disclaimer: I am the author of AnyStatus.

Jenkins Error Log in GrayLog2

We are noticing that any errors that occur in our Jenkins service go unattended until it is too late and we were looking for a way to get our Jenkins error log on our server into GrayLog2. Are there any plugins or scripts that will handle this for us?
Your question is for Graylog2, but we have been using HipCHat to get real time updates from Jenkins about builds etc. (we also use it to get GIT activity on projects from Stash).
I would highly recommend it as an alternative if you do not win with GrayLog2.

jenkins (Publish with SSH Plugin)

I want to build my maven project in Jenkins and copy all the the jar files to a remote Unix machine.
Also I want to connect to a LDAP data Store and start the services and test if the services are up and running
Basically I want to do the following tasks after my project is successfully build in Jenkins:-
1)Copy current version of my project to designated machine and location
2)Copy configure to connect to a designated integration test DS
3)Start the services in my project
4)Test that it is running.
Can I achieve this by Publish over SSH plugin provided in jenkins??
Or Shall I create some scripts which can automate the above tasks.The reason I am asking this is because I am not very familiar with Jenkins and Unix scripting.
Is there any good approach to do this task.
Thanks in advance.
Ansia
The Publish over SSH plugin will allow you copy files to remote server and execute arbitrary commands on the remote server.
Question is - do you know how you would achieve the following on the remote server?
2)Copy configure to connect to a designated integration test DS
3)Start the services in my project
4)Test that it is running
If yes, just enter those commands into Publish over SSH configuration. Or provide a script to be executed.
If you don't know how to achieve that, then that's a separate question.
Yes, you can use the publish over ssh plugin to copy the jars, and execute a script which launches your services. Take a look here to see how to launch a script "in the background" so it does not get killed when the session ends or to avoid blocking the Jenkins build by making it wait for the script to finish executing
Can't say much about LDAP as I haven't used it but depending on your needs I guess you could create a basic helper-jar with spring-ldap or any other similar library.

Can Jenkins detect when a new build is available on a Bamboo server?

Can Jenkins detect when a new build is available on a Bamboo server?
What I want is to create a Jenkins job that checks a Bamboo server for a new build. I want this job to run once per hour.
Then, other tests that I have on that Jenkins server will rely on that check passing in order for them to kick off.
If this is possible, what is the usual way of doing this? The Bamboo server is internal and does not need authentication to see status of builds or get build resources.
If there is no plugin for this, I do see a RSS feed at this URI: /rss/createAllBuildsRssFeed.action?feedType=rssAll&buildKey=RELEASE . What method would other Jenkins administrators use to read this feed?
I figured out the answer myself. I wrote a Gradle unit test to run in Jenkins that can read the RSS feed in Bamboo.
The real way to do it though, which didn't answer my question, is to add a post-build hook to either Subverison or Bamboo to send a HTTP get request to Jenkins, which notifies a job to run.

Resources