Tuesday, 30 August 2016

Code Quality Check

Every software development needs coding; without it, nothing can be developed. The quality of software depend on the way developer write code. It's an essential part of the system and the behavior of the system depends on it.  A small mistake in coding may make software vulnerable and unstable.

Quality engineering works hard to find bugs to avoid potential problems with the software. They spend numerous hours and put tremendous effort into finding any problems with the software and reporting it to the developers.


Cost of fixing the defects at various level.


The Cost of fixing defects at latter stage increases exponentially, hence, you need more hours of QA Engineers and Developers to fix and run the entire release cycle again.

If we can save some amount of time and effort from above, we can utilise resources in more productive way.
Can we make sure code is better written, tightly secure, having no potential bug and right libraries  used.

If we can implement it, we can at-least make sure some checks are being done to make sure there is less friction in the code.

Here are few checks which can be implemented during whiting code or before passing it to QA, Just to make sure to pass them less buggy code.


Code Review

Code review is the technique where coder sends the code to someone else for the review. This is really a great way to verify the written code by second pair of eye to catch any glitch, logics or possible mistakes overlooked by the codes.
There are many ways to perform code review; Many tools are available to achieve code review. This has been implemented as development process in order to make sure nothing should go without 2nd opinion on code.
Tools like review board, gerrit, phabricator etc can be implemented and integrated with the source control tool. More of code review and details can be found here.

Saturday, 16 July 2016

Maven Errors - Few common Maven error and troubleshooting part 2


In this post i am going to talk about maven build troubleshooting, Here is the list few maven error and its troubleshooting. 
This is the part 2 of the Troubleshooting tips.


concurrent.ExecutionException

If you see following type of error in your release build.
[ERROR] java.util.concurrent.ExecutionException: java.lang.NullPointerException  [ERROR]   
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.   
[ERROR] Re-run Maven using the -X switch to enable full debug logging.

Solution

Your build job is having parellel execution, Please contact Release team to "-T -1C" get removed from the job.



Docker image building failed due to Unable to locate package

If you see following type of error in non java projects release build.
[INFO] [91mE: Unable to locate package  
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.5.2:prepare (default-cli) on project : Maven execution failed, exit code: '1' -> [Help 1]

Solution

It is happening because in your docker file you are trying to install packages without running "apt-get update"
Add following command in your Dockerfile before installing anything and after pulling the base image.
apt-get update







Saturday, 25 June 2016

Manage Docker images on local disk

Docker is very powerful containerization technique, and it is becoming famous in short time.
People are adapting and containerizing their applications for deployment.

Soon container become very heavy and consume too much of disk space, If you do not delete old images and layers you may soon run out of disk space.
Here i am trying to cover the ways to regain the disk space consumed by docker images.
  • Moving docker filesystem to bigger mount point.
Usually docker keeps all temporary files related to image building and layers at /var/lib/docker
This path is local to the system usually at root partition "/".
You can mount a bigger disk space and move the content of /var/lib/docker to the new mount location and make sym link. 
This way even docker images occupy space, will not affect  your system as it will be using some other mount location.

  • Remove Old docker images
Here are few ways to remove old and unused docker images
  • Removing stopped container
docker ps -a | grep Exited | awk '{print $1}' | xargs docker rm

Authentication Error while pulling images via docker-maven-plugin




docker-maven-plugin is the great plugin provided by spotify to build docker image during maven build.

There is very strange error or behaviour I have seen during the image creation.
Plugin expects that image which Dockerfile is pulling needs to be passed with username and password, which should not an essential parameter as most of the images does not need any auth to be downloaded. 

You may see this error

[INFO] Building image your-application:0.0.3
Step 1 : FROM ubunt:latest
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] 
[INFO] your-application..................................... FAILUER [  3.619 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 39.938 s (Wall Clock)
[INFO] Finished at: 2016-06-25T16:26:06+00:00
[INFO] Final Memory: 65M/1216M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal com.spotify:docker-maven-plugin:0.3.7:build (default) on project 
your-application: Exception caught: Get https://registry-1.docker.io/v2/ubuntu/manifests/latest: 
unauthorized: incorrect username or password -> [Help 1]

Friday, 20 May 2016

Lessons Learned in Jenkins Configuration Management

Summary:
Managing the configuration of Jenkins—the popular open source, continuous integration and continuous delivery application—is not trivial. Even a small change can make the platform less stable or result in problems. Vishal Sahasrabuddhe talks about his experiences using Jenkins and offers tips to take advantage of its many powerful features to automate deployment and increase productivity and product quality.
(Originally published on cmcrossroads.com )


Configuration management requires that you automate application build, package, and deployment. There are many tools used to accomplish these tasks, but Jenkins is one of the most popular open source frameworks employed by teams today.
Jenkins is widely used by developers to automate not only application procedures, but also continuous integration and continuous delivery. It comes with many powerful built-in features, and there are also hundreds of plugins that help it integrate with other tools and perform a variety of important tasks.
It is also easy to use to deploy web packages such as JAR, WAR, and EAR files and modules, and Jenkins is known for its simple WAR-based deployment. Configuration is accomplished through XML files, and there is no requirement for an external database. This technology is scalable and can make use of a master and slave architecture that works across a variety of platforms. In fact, cross-platform support is one of Jenkins’s most powerful features.
Managing Jenkins requires automated procedures and well-defined processes, so a DevOps deployment pipeline to support it is a must-have.

Thursday, 28 April 2016

Lessons Learned in Jenkins Management

Lessons Learned in Jenkins Management:

Managing the configuration of Jenkins is not trivial; even a small change can make the platform less stable or result in problems. Vishal Sahasrabuddhe talks about his real-world experiences with Jenkins and details how to take advantage of its many powerful features while avoiding possible pitfalls.

Tuesday, 23 February 2016

How to provide effective training/presentation

Providing effective training is an art form. It requires much dedication and skill to engage your students so they believe they have benefited. Simple presentations can feel dull and unengaging, making the topic less interesting and many times leading to little or no knowledge transfer, even if the subject was covered correctly and the information was spot on.
Gaining—and keeping—the interest of your audience is paramount in any successful training program. Here are a few essentials to consider when creating your presentation to make it more effective:

Start with the basics


Friday, 19 February 2016

Working in Inmobi - My experience


Inmobi is a Mobile Advertising organization and making a huge impact all over the Market.
I would like to talk about some of my personal experience working with Inmobi as an employee.

  • Work culture - Just one word, awesome. They have lots of work with tight deadlines, but employee rarely need to compromise with their personal life. Inmobi work policies are really employee friendly in all aspects. Its great to work together with like minded freaks to disrupt the market.

Friday, 29 January 2016

Setup Docker slaves for Jenkins




Jenkins is the one of the primary CI tool used in industry. Jenkins provide on cross planform support and have master-slave configuration. Your slave could be any operating system. Recently docker is becoming very popular for replacement of virtualisation up to some extend.

Today I will detail out the steps needed to make dynamically slave provision via docker images.

Setting up Host for Docker
  • You need to have your base machine either VM or hypervisor etc and need to install with all prerequisite. Lets install docker now.
curl -sSL https://get.docker.com/ | sh

Sunday, 24 January 2016

Release Management and Release Engineering


Many times people get confused with the terms as Release management and Release Engineering. They interchange both the terms and use it as the same.
Release Management and Release Engineering looks to be similar but both their functions are completely different in implementation, however both serves the same purpose in bigger picture of Releases.