Devops for Growth
116.5K views | +9 today
Devops for Growth
For Product Owners/Product Managers and Scrum Teams: Growth Hacking, Devops, Agile, Lean for IT, Lean Startup, customer centric, software quality...
Curated by Mickael Ruau
Your new post is loading...
Your new post is loading...

Popular Tags

Current selected tag: 'build'. Clear
Scooped by Mickael Ruau
September 16, 2021 9:49 AM
Scoop.it!

Gestion de version distribuée et build incassable | OCTO Talks !

Gestion de version distribuée et build incassable | OCTO Talks ! | Devops for Growth | Scoop.it
 

Dans un précédent article, nous avons introduit les concepts qui accompagnent la gestion de versions distribuée afin de comprendre son fonctionnement de base. À l’aide de ces quelques concepts, nous allons voir comment il est possible de mettre en place un build d’Intégration Continue « incassable » sans effort (ie. sans développement d’une infrastructure dédiée : avec un gestionnaire de versions non distribué celà reste possible avec un peu de développement ou avec encore avec la solution TeamCity de JetBrains) grâce à la flexibilité de ce type d’outils. Git continuera à nous servir d’exemple mais cette fois-ci, les détails d’implémentation (en comparaison avec Mercurial ou Bazaar) auront leur importance dans la mise en place de la solution.

Mickael Ruau's insight:

 

Principe de la solution

Le coeur de la solution de build incassable que nous allons voir permet de séparer les versions partagées par les développeurs de la version stable depuis laquelle se font les mises à jour des copies de travail des développeurs.

Comme expliqué dans le premier article, avec un gestionnaire de versions décentralisé, il est possible d’imaginer toute sorte de topologie des dépôts. Nous utiliserons donc un dépôt centralisé en plus du dépôt par développeur. Ce dépôt centralisé aura de particulier de posséder une branche par développeur. Ces derniers enverront leurs modifications (push avec Git) sur leur branche personnelle sur le dépôt central (cf étape 1 du schéma). Si un développeur casse le build avec ses modifications, il ne cassera que sa branche dans le dépôt central.

Il reste encore à positionner l’Intégration Continue dans ce système, et puis c’est bien beau d’avoir sa branche personnelle, mais où sont consolidées les modifications des développeurs ? ie. où est la version de l’application qui contient l’ensemble des modifications des développeurs ?
À notre dépôt central, nous ajouterons donc une branche supplémentaire qui contiendra la consolidation de toutes les branches des développeurs. C’est l’Intégration Continue qui se chargera de merger les branches de chaque développeur vers cette branche de référence.

Les modifications de la branche de référence ne seront renvoyées par l’Intégration Continue (étape 5) que si le merge de la branche en cours de build sur la branche de référence (étape 3) et le build du résultat de ce merge (étape 4) sont validés par l’Intégration Continue.
C’est cette branche de référence sur le dépôt central qui sera la source de mise à jour de tous les développeurs (étape 7).
C’est la possibilité de partager ses modifications sur une branche et de mettre à jour sa copie de travail depuis une autre qui est particulier aux gestionnaires de version distribués.

Voyons comment se comporte ce système dans les deux situations décrites comme des limites précédemment :

  • Un développeur partage des modifications qui vont faire échouer le build. Comme il les partage sur sa branche personnelle sur le dépôt central, aucun des autres développeurs n’est impacté. Ils vont en effet mettre à jour leur dépôt (et copie de travail) depuis la branche de référence qui n’est pas modifiée tant que le build du développeur n’est pas stable.
  • Les autres développeurs peuvent partager leurs modifications car un build qui échoue sur une branche d’un développeur n’empêche pas d’effectuer un build des autres branches et de continuer à faire évoluer la branche de référence.

Une source supplémentaire d’échec du build apparait cependant. En effet, si un développeur partage ses modifications avant d’avoir mis à jour sa copie de travail (ou si un autre build est en cours), le build de sa branche peut échouer à cause de conflits qui apparaissent lors du merge dans la branche de référence (étape 3). Dans ce cas, il faudra au développeur mettre à jour sa copie de travail depuis la branche de référence, résoudre les conflits et renvoyer ses modifications. Le reste de l’équipe n’est pas impacté par les erreurs de merge, de la même manière qu’il n’est pas impacté par les erreurs de build.

Un dernier avantage, qui n’est pas si négligeable qu’il n’y parait, est que lorsqu’un build échoue, l’Intégration Continue « connait » de façon certaine le développeur incriminé : celui à qui appartient la branche à partir de laquelle le build a été initié. Elle peut alors notifier uniquement ce développeur et non pas tous les développeurs ayant potentiellement cassé le build comme c’est le cas aujourd’hui (ie. tous les développeurs qui ont partagé des modifications depuis le dernier build en succès). C’est un avantage non négligeable car une des raisons pour lesquelles l’Intégration Continue n’est pas très suivie est qu’elle peut générer une quantité importante de notifications pas toujours bien ciblées qui finissent par être ignorées.

No comment yet.
Scooped by Mickael Ruau
June 5, 2021 3:09 AM
Scoop.it!

Fastmac – Profitez d’un shell Linux ou macOS en un clic –

Fastmac – Profitez d’un shell Linux ou macOS en un clic – | Devops for Growth | Scoop.it

Si vous êtes développeur ou bidouilleur professionnel et que vous avez besoin de tester un outil ou de compiler votre code sur un Linux ou un macOS, pas besoin d’installer une nouvelle machine virtuelle pour l’occasion. Vous pouvez le faire directement avec Github.

Comment ? Grâce au projet FastMac imaginé par Jeremy Howard qui utilise les Github Actions pour vous donner accès gratuitement à un Shell Linux ou un Shell macOS pour faire vos trucs.

No comment yet.
Scooped by Mickael Ruau
October 24, 2018 6:54 AM
Scoop.it!

Jenkins - Le guide complet

Le livre suivant décrit en détails l'utilisation du serveur d'intégration continue Jenkins.

Cette traduction est entièrement basée sur le travail communautaire conduit par John Ferguson Smart.

Ce projet est publié automatiquement à chaque nouvelle modification. Le livre est presqu'entièrement traduit. Il manque quelques paragraphes ou chapitres parmi les plus de 350 pages du livre ! Si vous voulez voir votre nom ajouté à la liste des contributeurs, vous pouvez vous aussi participer sur GitHub !
No comment yet.
Scooped by Mickael Ruau
August 26, 2015 8:51 AM
Scoop.it!

Analyzing a PHP Project with Jenkins

Analyzing a PHP Project with Jenkins | Devops for Growth | Scoop.it
Peter Nijssen will run you through the data that Jenkins can return after building and scanning your project, explaining every aspect.
No comment yet.
Scooped by Mickael Ruau
March 24, 2015 10:16 AM
Scoop.it!

Maven – Maven Getting Started Guide

This guide is intended as a reference for those working with Maven for the first time, but is also intended to serve as a cookbook with self-contained references and solutions for common use cases. For first time users, it is recommended that you step through the material in a sequential fashion. For users more familiar with Maven, this guide endeavours to provide a quick solution for the need at hand. It is assumed at this point that you have downloaded Maven and installed Maven on your local machine. If you have not done so please refer to the Download and Installation instructions.

No comment yet.
Scooped by Mickael Ruau
February 1, 2015 5:49 AM
Scoop.it!

Let's Turn Integration Tests with Maven to a First-Class Citizen

Let's Turn Integration Tests with Maven to a First-Class Citizen | Devops for Growth | Scoop.it
Maven is based around the central concept of a build lifecycle and if you look at the default lifecycle bindings  you see the following phases :
process-resources
compile
process-test-resources
test-compile
test
package
install
deploy
As you can see, unit tests are central in Maven. Package your project with mvn package or deploy it with mvn deploy and this will kick the test phase. Why ? Because in the default lifecycle bindings of Maven, the test phase is automatically called through the Surefire plugin. The maven-surefire-plugin is designed for running unit tests and if any of the tests fail then it will fail the build immediately.
So where are the integration tests ? Not in the default lifecycle, that’s for sure. They are handled by a different plugin : Failsafe. The maven-failsafe-plugin is a fork of Surefire designed to run integration tests (after the package phase, on the integration-test phase).
No comment yet.
Scooped by Mickael Ruau
October 11, 2014 5:34 AM
Scoop.it!

Automatiser les tests fonctionnels d’une API REST – Le Blog...

Automatiser les tests fonctionnels d’une API REST – Le Blog... | Devops for Growth | Scoop.it
Comment mettre à jour sa chaîne d’intégration continue pour y intégrer des tests fonctionnels d’une API REST ? Une API permet d’exposer à des clients des méthodes et des objets de manière simple, mais le client d’une API doit être assuré de la... #apirest #integration #jenkins
Mickael Ruau's insight:

Cet article présente comment, avec SoapUI, Maven et Jenkins, on peut répondre au besoin d’automatisation des tests d’intégration d’une API REST.

No comment yet.
Scooped by Mickael Ruau
July 15, 2014 7:07 AM
Scoop.it!

Gradle ne fait pas que remplacer Maven

Gradle ne fait pas que remplacer Maven | Devops for Growth | Scoop.it
Retour sur la conférence Devoxx 2014 : Gradle ne fait pas que remplacer Maven
Mickael Ruau's insight:

Gérer le build d'un projet logiciel a toujours été une tâche plus ou moins ingrate dans la vie d'un développeur. Les plus anciens d'entre vous peuvent en témoigner, le chemin a été long depuis l'époque des makefiles, des scripts shell et des scripts Ant. Néanmoins, l'arrivée de Maven en 2004 a permis une nette amélioration des choses pour les projets Java. Dix ans après son lancement, Maven est devenu le standard pour la majorité des développements.

N'avez-vous jamais pesté contre la gestion des exclusions et les obscures dépendances transitives ? N'avez-vous jamais détourné le fonctionnement d'un plugin pour arriver à vos fins ? Ne vous êtes-vous jamais sentis frustrés par l'outil ? Si c'est le cas, c'est que vous êtes probablement mûrs pour essayer Gradle.

Cet article trouve son origine dans une conférence donnée au Devoxx France 2014. L'orateur du jour, Cédric Champeau (@CedricChampeau), est un fervent partisan de Groovy le langage sur lequel Gradle repose. Pendant une heure, ce dernier nous a exposé pourquoi il était temps de trouver un successeur à Maven, et en quoi Gradle pouvait reprendre le flambeau et aller plus loin.

No comment yet.
Scooped by Mickael Ruau
April 26, 2014 5:26 AM
Scoop.it!

Au revoir Maven... et place à Gradle !

Au revoir Maven... et place à Gradle ! | Devops for Growth | Scoop.it
Le titre se veut volontairement provocateur tout comme la conférence à Devoxx France de Cédric Champeau : "Gradle ne fait pas que remplacer Maven". Je vous propose un retour sur cette conférence pour voir les différences entre ces deux solutions et les apports de Gradle.
Mickael Ruau's insight:

En mélangeant et en reprenant les meilleurs concepts d'AntMavenIvy etGroovyGradle apporte de la flexibilité et de la souplesse pour répondre aux problématiques de build.

Contrairement à Maven, Gradle permet :

  • de générer plusieurs artifacts pour un même build
  • de décorréler le build et le déploiement

Gradle repose sur le concept de tâches (tasks) qu'il est possible de créerdynamiquement notamment grâce à la puissance du langage Groovy.

No comment yet.
Scooped by Mickael Ruau
January 28, 2014 8:44 AM
Scoop.it!

Java Build Tools - Part 2: A Decision Maker's Comparison of Maven, Gradle and Ant + Ivy

Java Build Tools - Part 2: A Decision Maker's Comparison of Maven, Gradle and Ant + Ivy | Devops for Growth | Scoop.it
Above is a slide show previewing the results for only the truly impatient coders out there ;-) Believe it or not, Java developers don’t consider build tools to be the most interesting topic out there.
Mickael Ruau's insight:

This all started in December 2013, when we published Java Build Tools Part 1. It would help to think of Parts 1 and 2 as a single publication, broken into two sections due to length and time restrictions. In Part 1, we showed developers how to get started with all of the tools mentioned, we reviewed some tips and pointers on creating the build script, interacting with communities and how to use/create plugins for your overall development environment.

In Part 2, we go deeper and get out the proverbial red pen, taking each build tool and ranking them in six categories, then applying those scores to four common user profiles (i.e. use cases) in order to figure out which build tool makes the most sense for you. But now, let’s review where the general Java development industry stands in terms of current and historical build tool usage.

No comment yet.
Scooped by Mickael Ruau
December 6, 2013 8:31 AM
Scoop.it!

Gulp by Eric Schoffstall

Gulp by Eric Schoffstall | Devops for Growth | Scoop.it
Streaming build systems
Mickael Ruau's insight:

Gulp mieux que Grunt?

What's so bad? Plugins do multiple thingsWant a banner? Use the javascript minifierPlugins do things that don't need to be pluginsNeed to run your tests? Use a pluginGrunt config format is a mess that tries to do everythingNot idiomatic with "the node way"Headache of temp files/folders due to bad flow control  Your build system should empower not impedeIt should only manipulate files - let other libraries handle the rest.
No comment yet.
Rescooped by Mickael Ruau from DevOpsShell
October 27, 2013 9:46 AM
Scoop.it!

JenkinsMobi: your Jenkins CI on your iPhone, iPod, iPad and Android

JenkinsMobi: your Jenkins CI on your iPhone, iPod, iPad and Android | Devops for Growth | Scoop.it

Via Julien Lavergne
No comment yet.
Scooped by Mickael Ruau
October 26, 2013 7:59 AM
Scoop.it!

Putting Phing to Work for You

Slides from Phing workshop from 2007 International PHP Conference in Frankfurt.
No comment yet.
Scooped by Mickael Ruau
July 29, 2021 7:37 AM
Scoop.it!

Modernizing How You Build, Part 2—Taking the first step | AWS Cloud Enterprise Strategy Blog

Modernizing How You Build, Part 2—Taking the first step | AWS Cloud Enterprise Strategy Blog | Devops for Growth | Scoop.it

In my previous post, I examined the modern application and highlighted the typical approach used to build modern applications:

  1. Shrink the scope.
  2. Choose the right tool for the job.
  3. Offload the undifferentiated pieces.
  4. Connect the building blocks.
  5. Automate everything.
Mickael Ruau's insight:

Taking the First Step

The approach I just outlined is a journey. No one goes straight from projects to outcome-oriented development…or if they have, I have yet to hear about it!

The first step is quite simple. Identify a product/feature/service/function that can be isolated and given to a small team to own. Form that team from your existing staff and work to fine tune your Agile development practice, which will be difficult. It takes time to figure out how to break down tasks such that they can be delivered (released to production) in a two-week period.

No comment yet.
Scooped by Mickael Ruau
August 23, 2019 3:08 AM
Scoop.it!

Want to be Agile? Drop your DTAP-pipeline - The Liberators

DTAP encourages the creation of queues, whereas Agile software development encourages removal of queues.

Mickael Ruau's insight:

Imagine a team that can reliably deploy a single feature to a live environment without disrupting it. They develop new features on a development-environment. The team integrates work through version-control (e.g. Git). Features are developed on a ‘develop’-branch in their version-control system. When a feature is done, it is committed to a ‘master’-branch in their version-control system. A build server picks up the commit, builds the entire codebase from scratch and runs all the automated tests it can find. When there are no issues, the build is packaged for deployment. A deployment server picks up the package, connects to the webserver/webfarm, creates a snapshot for rapid rollback and runs the deployment. The webfarm is updated one server at a time. If a problem occurs, the entire deployment is aborted and rolled back. The deployment takes place in such a manner that active users don’t experience disruptions. After a deployment, a number of automated smoke tests are run to verify that critical components are still functioning and performing. Various telemetry sensors monitor the application throughout the deployment to notify the team as soon as something breaks down.

No comment yet.
Scooped by Mickael Ruau
March 20, 2017 6:56 AM
Scoop.it!

Buck : un outil de build open source développé par Facebook et qui supporte une variété de langages et de plateformes

Buck : un outil de build open source développé par Facebook et qui supporte une variété de langages et de plateformes | Devops for Growth | Scoop.it
Buck est un moteur de production développé est utilisé par Facebook. Les moteurs de production sont des programmes dont la fonction principale consiste à automatiser (ordonnancer et piloter) l’ensemble des actions (préprocessing, compilation, éditions des liens, etc.) contribuant, à partir de données source, à la production d'un ensemble logiciel opérationnel. En d’autres termes, ces outils automatisent une variété de tâches que les développeurs réalisent dans le cadre de leur activit
No comment yet.
Scooped by Mickael Ruau
August 3, 2015 12:36 PM
Scoop.it!

How to Grunt and Gulp Your Way to Workflow Automation

How to Grunt and Gulp Your Way to Workflow Automation | Devops for Growth | Scoop.it
I will give you the basis for using Grunt and Gulp using a really simple example that you can download here: http://aka.ms/gruntgulpplugin

It is a simple web site composed of three files
No comment yet.
Scooped by Mickael Ruau
February 1, 2015 5:52 AM
Scoop.it!

Standalone web application with executable Tomcat | NoBlogDefFound

Standalone web application with executable Tomcat | NoBlogDefFound | Devops for Growth | Scoop.it
When it comes to deploying your application, simplicity is the biggest advantage. You'll understand that especially when project evolves and needs some changes in the environment. Packaging up your whole application in one, standalone and self-sufficient JAR seems like a good idea, especially compared to installing and upgrading Tomcat in target environment. In the past I would typically include Tomcat JARs in my web application and write thin command-line runner using Tomcat API. Luckily there is a tomcat7:exec-war maven goal that does just that. It takes your WAR artifact and packages it together with all Tomcat dependencies. At the end it also includes Tomcat7RunnerCli Main-class to manifest.
No comment yet.
Scooped by Mickael Ruau
November 27, 2014 4:48 AM
Scoop.it!

Installing Phing Globally with Phar

Installing Phing Globally with Phar | Devops for Growth | Scoop.it
Phing is a build system that allows you to use one command to perform a whole group of actions. For example, with one command you could run code and unit tests, and if the tests pass, automatically upload the new code to your servers and make any neccessary database changes.

Without a tool like Phing, your workflow will be repetitive and time-consuming because you’ll need to go through each step manually.
No comment yet.
Scooped by Mickael Ruau
July 18, 2014 3:25 AM
Scoop.it!

Codeship Releases Free Version of its Continuous Delivery Platform

Codeship Releases Free Version of its Continuous Delivery Platform | Devops for Growth | Scoop.it

Codeship, which offers a continuous delivery platform, has released a freemium version offering an entry-level plan that lets developers access its full suite of capabilities at no charge.

Mickael Ruau's insight:
The free program offers:
- 1 concurrent build
- 100 builds / month
- 5 private projects
- unlimited team members
No comment yet.
Scooped by Mickael Ruau
May 3, 2014 12:50 PM
Scoop.it!

Gulp, l’outil qui devient indispensable - chez Syl

Gulp, l’outil qui devient indispensable - chez Syl | Devops for Growth | Scoop.it

Vous connaissez GruntJS ? Vous ne connaissez peut-être pas Gulp. Ces deux outils permettent d’effectuer des tâches (souvent répétitives) en ligne de commande et très utiles aux développeurs front-end.

Mickael Ruau's insight:

Gulp est plus simple à utiliser et plus performant. Par contre il est plus jeune, moins fourni.

Quelques tâches que l’on retrouve souvent :

  • Compiler son code préprocesseur en CSS (LESS et ses copains).
  • Valider, minifier ses fichiers Javascript.
  • Optimiser ses images.
  • Exécuter des tests unitaires.


Toutes ces tâches peuvent être faites automatiquement !

No comment yet.
Scooped by Mickael Ruau
March 1, 2014 6:11 AM
Scoop.it!

Maven best practices | Java Code Geeks

Maven best practices | Java Code Geeks | Devops for Growth | Scoop.it

Although Maven offers a “convention over configuration” solution, there is still more then enough configuration necessary to cause some serious headache. In this post I will share some best practices with you that will ease maintenance of your POM files.

Mickael Ruau's insight:
Make sure you read the best practices from Sonatype as well.
Reference: Maven best practices from our JCG partner Geert Schuring at the Geert Schuring blog.
No comment yet.
Scooped by Mickael Ruau
January 9, 2014 8:44 AM
Scoop.it!

Gulp, Grunt, Whatever - Pony Foo

Gulp, Grunt, Whatever - Pony Foo | Devops for Growth | Scoop.it

In this article I aim to introduce Gulp, as it's fairly new, having been released around 6 months ago. Then, I'll compare it with Grunt, pointing out which tool does what better, and why.

 

 

Mickael Ruau's insight:

Grunt wins at teaching people how to do builds, and even then, it's pretty hard to put it in terms anyone can understand, but it fails at keeping it short.

 

Gulp wins at being terse and having a gorgeous API, but it fails at the entry level, because of streams being hard to grasp at first. In the low-risk low-gain corner we have npm run. It wins at not doing anything, resulting in no overhead, but it fails at being cross-platform, if that's something that worries you.

 

Make a choice by yourself, don't just pick something because XYZ said so. Pick the tool which works for you. The one you understand, are comfortable with. Above all, the one that fits your needs. Don't go blindly chasing the latest fad because someone else tells you to. Similarly, don't get stuck with monolithic jQuery applications (just to give out an example), try something else. Innovate. Be the change you want to see in the world.

 

No comment yet.
Scooped by Mickael Ruau
December 6, 2013 6:10 AM
Scoop.it!

The Pragmatic Bookshelf | Pragmatic Project Automation

The Pragmatic Bookshelf | Pragmatic Project Automation | Devops for Growth | Scoop.it
title: Pragmatic Project Automation: How to Build, Deploy, and Monitor Java Applications, by: Mike Clark, isbn: 9780974514031, date: 2004-07-01, description: Set up Continuous Integration and automate your development process...
Mickael Ruau's insight:
Printable Summary Card
No comment yet.
Scooped by Mickael Ruau
October 26, 2013 8:01 AM
Scoop.it!

Phing101 or How to staff a build orchestra

Talk about PHP's buildtool Phing and how to bend it to your needs.
No comment yet.