Skip to main content

Configuration Jenkins Server

Today I’m gonna mention about how can we customize our Jenkins server configuration.

Firstly,opening Jenkins main page by entering http://localhost:8080/jenkins

After I opened the main page I need to sign up to the system by the help of login | sign up button at the upper right corner of the page.

Configure Global Security:

After I sign up to the server I can change my user setting by using this path: Manage Jenkins–>Configure Global Security

In this page,I need to pick Enable Security in order to change security settings

After that there are 2 titles in this page which are Security Realm and Authorization

In Security Realm; Jenkins’ own user Database should be selected.

In Authorization;Matrix-based security should be selected.


We can manage all settings of Jenkins server by using Manage Jenkins–>Configure System

Configure System Page:

In this page, we can determine where Android SDK is,JDK,Ant,Maven,Jenkins Location.I want to start with Android SDK path:

Android Configuration:

I determine where my Android SDK is by giving its path like this:

/Users/servika/Desktop/adt-bundle-mac-x86_64-20140624/sdk(this is your android sdk path)

I recommend to click Automatically install Android components when required under the text box

Java JDK Configuration:

I also set JDK path by giving name and JAVA_HOME text input

As I said before,in order to get path of JAVA_HOME we need to write echo $JAVA_HOME in terminal and we should to see output like this:

/Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/Home(this is where your JDK is located)
after that I need to copy this path to JAVA_HOME text input
if your build type is Ant you can download it from internet as shown there
Maven Configuration:
Actually this process is same with JDK configuration so just write echo $M2 to the terminal and we need to copy this path to the text box under the maven project configuration.
echo $M2 output should be like this:

How to Setup Jenkins on Mac – Part 2

Today I’m gonna talk about installing Jenkins Server.

I installed all dependencies so we can continue.

As I mentioned before Tomcat is an application server so we can run our Jenkins server on it.

I will download jenkins.war from its official page and install on Apache Tomcat application server.

First of all I’m downloading jenkins.war from here:

I need to move jenkins.war file to where I downloaded Apache Tomcat application server.

I need to cut/paste to apache-tomcat-8.0.9/webapps

When I paste my jenkins.war file to that folder its turned into Jenkins folder automatically.

After all,I should to see my jenkins server on:http://localhost:8080/jenkins

How to Setup Jenkins on Mac – Part 1

I want to mention how to setup a Jenkins server on our Mac OSX machine.I will to explain setup process step by step so I will separate each step by numbers.

Before I start to setup Jenkins I need to install some dependencies which are Java 1.7 JDK,Maven 3.2.2),Apache Tomcat 8.

I’m starting to explain with first dependency which is Java JDK:

1)Setting Up Java JDK

Firstly I’m downloading java from its official web page by following this path:jdk-7u65-macosx-x64.dmg.After I downloaded necessary folders I need to set JAVA_HOME path for java jdk folder so I will use terminal in order to do that.In terminal,I can use vim text editor so I’m writing vim .bash_profile to go to the vim and then I need to write this command here:

export JAVA_HOME=$(/usr/libexec/java_home)

After I set JAVA_HOME I need to save and quit from vim editor so I need to click ESC button and then writing :wq! then clicking ENTER button.

Finally I can complete my installing process by checking whether it’s installed successfully or not so I need to use java -version command in terminal.

Output of this command should be like this:

java version “1.7.0_*”
Java(TM) SE Runtime Environment (build 1.7.0_60-b19)
Java HotSpot(TM) 64-Bit Server VM (build 24.60-b09, mixed mode)

*(it can be 51-58-60)

I also need to see where java is installed by using echo $JAVA_HOME in terminal

It should returns a output like this:


2)Setting Up Maven

I can continuous with maven setup after I completed to install Java JDK on my machine. I need to download maven from this path:apache-maven-3.2.2-bin.tar.gz after I unzip and download I need set its M2 path in my machine so I need to use again vim text editor.I’m opening it by entering vim .bash_profile in terminal.After I opened vim editor I need to click I(letter) in order to insert new entry in vim text editor.

I need to add these export commands in my terminal:
export M2_HOME=/Users/zafer/Documents/dev/apache-maven-3.2.2
export M2=$M2_HOME/bin
export PATH=$M2:$PATH

All exports should be like this:

export JAVA_HOME=$(/usr/libexec/java_home)
export M2_HOME=/Users/zafer/Documents/dev/apache-maven-3.2.2
export M2=$M2_HOME/bin
export PATH=$M2:$PATH
export PATH=$JAVA_HOME/bin:$PATH

As I said before you need to shut down vim editor by clicking ESC button and then :wq!

I need to check installing process whether its completed successfully or not so I’m writing

mvn –version

I should to see this output in my terminal:

Apache Maven 3.2.2 (45f7c06d68e745d05611f7fd14efb6594181933e; 2014-06-17T16:51:42+03:00)
Maven home: /Users/zafer/Documents/dev/apache-maven-3.2.2
Java version: 1.7.0_60, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: “mac os x”, version: “10.9.4”, arch: “x86_64”, family: “mac”

I also should to see where maven is installed by using this command in terminal:

echo $M2

It should returns an output like this:


3)Setting Up Apache-Tomcat 8

We need manage our Jenkins by using any Application server so I prefer to use Apache Tomcat.Actually This process is simple easy just use this path:tar.gz unzip and install on your local machine.

By the way,I can recommend to use Tomcat Controller in order to open and shut down our Tomcat Application Server easily.

We can download it from here:

How to Setup SonarQube on Mac Part-2

Today I will talk about how to install MySQL and its dependencies in order to complete my SonarQube installation progress.

I always use Homebrew when I install any software tools.
I will start to download MySQL by using brew install mysql
After that I need to set environment of the MySQL so I’m opening vim editor with this command:
vim .bash_profile and then I need to add these lines:
export MYSQL_HOME=/usr/local/mysql-5.6.19-osx10.7-x86_64
export MYSQL=$MYSQL_HOME/bin
At this step you need to download and install MySQL 6.1.7 in order to start and stop MySQL server by using this path:
By the way,you need to have an account in order to access download link there.

After you click Next and install successfully you should to see MySQL under Apple Logo ->System Preferences ->MySQL Image at the end of the page

Here is image of the MySQL:

Now I’m able to use mysql command in my terminal when I write it, I should to see this lines:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 17
Server version: 5.6.19 MySQL Community Server (GPL)
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
We can connect to MySQL Workbench after I open MySQL port and I perform any query on this platform.

Requirement of The Arhitect

– Proven experience as software architect
– Experience in software development and coding
– Excellent knowledge of software and application design and architecture
– Excellent knowledge of UML and other modeling methods
– Familiarity with UX/UI design
– Understanding of software quality assurance principles
– A techical mindset with great attention to detail
– High quality organizational and leadership skills
– Outstanding communication and presentation skills
– MSc/MA in computer science, engineering or relevant field

Responsibilities of The Architect

– Collaborate with team to draft functional and non-functional requirements
– Use tools and methodologies to create reprentation for functions and UIs
– Develop high-level product specification
– Define all aspects of development
– Communicate all concepts and guidelines to development team
– Oversee techical guidance and coaching to developers and engineers
– Ensure software meets all requirements
– Approve final product before launch

Responsibilities of Solution Architect

– Responsible for Technology
– Converts Functional Requirements to Technical Architecture
– Carefull balances Patterns/Requirements/Elegance/Concepts
– Researches Key Technologies
– Has deep understanding of Design Patterns
– Motivates and guides development team
– Ensures that the Lead Developer is successful

Integration Spaghetti

I’ve been using the term Integration Spaghetti™ for the past 9 years or so to describe what happens as systems connectivity increases and increases to the point of … unmanageability, indeterminate impact, or just generally a big mess.  A standard line of mine is “moving from spaghetti code to spaghetti connections is not an improvement”.

(A standard “point to point connection mess” slide, by enterprise architect Jerry Foster from 2001.)

In the past few days I’ve been meeting with a series of IT managers at a large customer and have come up with a revised definition for Integration Spaghetti™ :

Integration Spaghetti™ is when the connectivity to/from an application is so complex that everyone is afraid of touching it.  An application with such spaghetti becomes nearly impossible to replace.  Estimates of change impact to the application are frequently wrong by orders of magnitude.  Interruption in the integration functioning are always a major disaster – both in terms of the time and people required to resolve it and in the business impact of it.

Even as the spaghetti bound application is nearly impossible to replace, as the current state continues it continues to grow worse as additional connections are made to these key applications and derivative copies of the data are taken from it, or clones created to avoid it (and thereby creating another synchronization and connection point).

Such spaghetti takes multiple forms but often involves ALL forms with multiple generations of technology connections, including excessive point to point connections, tightly coupled connection technologies, database triggers, business logic embedded in EAI process steps, many batches in and out from and to many destinations, ETL loads and extracts to/from other databases, multiple services providing nearly (but not exactly) identical data sets, and the involvement of many message queues.

Anything is done to avoid dealing with the giant plate of spaghetti.

Systems will integrate with systems that integrate with it, piggybacking existing connectivity and putting a burden on the subsidiary system, to avoid directly connecting into the spaghetti.  They’ll go to a secondary or tertiary data source to avoid going direct.  Everyone knows avoid the spaghetti if at all possible and will spend double to triple the integration effort to do so.

If the primary system is replaced, it’s not unusual that the new system won’t be integrated into all the old connections – this would require actually understanding each existing connecting, extracting it and redirecting/reconnecting it to the new system – rather the OLD SYSTEM will stay around to act as the connection point for all the existing spaghetti connections and the new system will become an integration, taking data feeds or a regular ETL load, off the old system!  Meaning the old system lives forever!

Does this problem every get resolved?  Yes.  When the other side of the connections gets replaced, the new systems on that side will be integrated with what replaced the core spaghetti bound system.  If the IT shop is lucky after a generation or so the spaghetti bound system can be shut down.

Unfortunately in major Enterprise IT shops finding some spaghetti integrations is not unusual.  IT management is loathe to acknowledge such a problem to the business and will continue work-arounds until it directly impacts business goals.  Otherwise it remains just another hidden IT enterprise IT expense.