Mostrando entradas con la etiqueta jenkins. Mostrar todas las entradas
Mostrando entradas con la etiqueta jenkins. Mostrar todas las entradas

domingo, 27 de octubre de 2013

The best friend for Dev Team: Jenkins


Why I said that Jenkins is our best friend?

First, Jenkins is a Continuous Integration Server.

Jenkins is the team member who is the responsible and charge of to download the code from SCM, run test, build artifact, upload the artifacts in the repository manager (Nexus Repository, Archiva, Artifactory), run automation test and deploy.

As you can see Jenkins can do a lot of things for you, some of them I mentioned before even more things than that.

But, this is a just a tool. Your team need to develop some skills like write test, commit frequently and so on.

Also, you can install very useful plugins according your needs.


sábado, 9 de junio de 2012

Cloudbees PaaS

Six months ago, I was looking for subversion server. I could have used Google code, but I had a problem with that, it is a public repository. So, I found Cloudbees.

Cloudbees is a PaaS. What's Paas? Nowadays, we should know about Platform as a Service. But, it doesn't matter if you don't know it. We are for help us. Briefly, PaaS is a environment on cloud based on products from the providers. In this case, Cloudbees was built using Sonar, Jenkins, Subversion, Git, MySQL, Tomcat.

What can I find on Cloudbees? You can find several products such as I have mentioned before, besides JFrog, SendGrid, AppDynamics, New Relic, Mongo HQ.

I think that we can try it for demos and small project, maybe at university. Sometimes we need to application server, and using Cloudbees we can have source control management, database, application server, maven repository.

We have to consider that Cloudbees provide a limit space, if you want more space you have to buy.
Cloudbees, is a good service. And I hope you can use it.

Development Environment

In this blog, I going to talk about some tools. Maybe, you has heard about those.

Source Control Management (SCM)
At the moment, we are several people that works with Subversion or Git, both useful but perhaps one more popular than other.
Using whatever, we can share our code with all the team, and we can work together. Also, is not necessary send files by email, because SCM is charge off the keep the last code, and if we make a mistake in the last code we can see all the historical code.

Mercurial and CVS are also SCM.
If we going to start with collaborative project and share our code, we can use Google Code or Github. I think that, both are goods products.

Maven
Is a java tool. If we use maven we can manage our project's life cycle. we can use some commands for compile the code, create the artifact (jar, ear, war), run our test, upload the artifact to repository.

Some commands:



Besides, maven allow us run embedded server such as tomcat, jetty.
Using maven, we can forget about search jars and their dependencies. Maven download the jar that we want to use and their dependencies too. That's awesome.

Nexus
Currently, we are working with maven projects. But, if we are big group and we are working in the same project. We can use Nexus Repository.
Using that, we are allowed to create local repository for our projects and upload our artifacts (jar, ear, war). We can also create proxies repositories, i.e. for our project we need to use jboss libraries, but in the Central Repository we can't find this jar. We can add another repository, in this case: https://repository.jboss.org/nexus/content/repositories/releases/

Here, others repositories:
http://developer.ja-sig.org/maven2/

Sonar
Tool charge of keep measure about projects. Identify duplicate code, measure your code, measure complexity cyclomatic, identify bad practices and recommend how to solve. The last depend on the rule configured.

In the following URL http://nemo.sonarsource.org/ , you can see several open source projects.

Hudson or Jenkins
Is the most popular Continuous Integration (CI) server. Here, we can works with all tools that we have mentioned in this blog. We can download the maven project from the SCM and this will charge of looking for dependencies on Nexus Repository and update the last measures on Sonar server.

We can automate several functions. CI server use jobs, could have one job for deploy on production environment, other for update measure on Sonar, the last maybe analyze our code each 1 hour.

We can have this tools in our environment, but you shouldn't forget that we need practices and polices, in order to have a good control over the team and the projects.