 Your new post is loading...
 Your new post is loading...
|
Scooped by
Mickael Ruau
September 16, 2021 9:49 AM
|
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.
|
Scooped by
Mickael Ruau
June 5, 2021 3:09 AM
|
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.
|
Scooped by
Mickael Ruau
October 24, 2018 6:54 AM
|
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 !
|
Scooped by
Mickael Ruau
August 26, 2015 8:51 AM
|
Peter Nijssen will run you through the data that Jenkins can return after building and scanning your project, explaining every aspect.
|
Scooped by
Mickael Ruau
March 24, 2015 10:16 AM
|
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.
|
Scooped by
Mickael Ruau
February 1, 2015 5:49 AM
|
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).
|
Scooped by
Mickael Ruau
October 11, 2014 5:34 AM
|
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
|
Scooped by
Mickael Ruau
July 15, 2014 7:07 AM
|
Retour sur la conférence Devoxx 2014 : Gradle ne fait pas que remplacer Maven
|
Scooped by
Mickael Ruau
April 26, 2014 5:26 AM
|
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.
|
Scooped by
Mickael Ruau
January 28, 2014 8:44 AM
|
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.
|
Scooped by
Mickael Ruau
December 6, 2013 8:31 AM
|
|
Rescooped by
Mickael Ruau
from DevOpsShell
October 27, 2013 9:46 AM
|
|
Scooped by
Mickael Ruau
October 26, 2013 7:59 AM
|
Slides from Phing workshop from 2007 International PHP Conference in Frankfurt.
|
|
Scooped by
Mickael Ruau
July 29, 2021 7:37 AM
|
In my previous post, I examined the modern application and highlighted the typical approach used to build modern applications: - Shrink the scope.
- Choose the right tool for the job.
- Offload the undifferentiated pieces.
- Connect the building blocks.
- Automate everything.
|
Scooped by
Mickael Ruau
August 23, 2019 3:08 AM
|
DTAP encourages the creation of queues, whereas Agile software development encourages removal of queues.
|
Scooped by
Mickael Ruau
March 20, 2017 6:56 AM
|
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
|
Scooped by
Mickael Ruau
August 3, 2015 12:36 PM
|
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
|
Scooped by
Mickael Ruau
February 1, 2015 5:52 AM
|
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.
|
Scooped by
Mickael Ruau
November 27, 2014 4:48 AM
|
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.
|
Scooped by
Mickael Ruau
July 18, 2014 3:25 AM
|
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.
|
Scooped by
Mickael Ruau
May 3, 2014 12:50 PM
|
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.
|
Scooped by
Mickael Ruau
March 1, 2014 6:11 AM
|
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.
|
Scooped by
Mickael Ruau
January 9, 2014 8:44 AM
|
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.
|
Scooped by
Mickael Ruau
December 6, 2013 6:10 AM
|
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...
|
Scooped by
Mickael Ruau
October 26, 2013 8:01 AM
|
Talk about PHP's buildtool Phing and how to bend it to your needs.
|
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 :
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.