{"@attributes":{"version":"2.0"},"channel":{"title":"Articles on Jean-Yves Gastaud","link":"https:\/\/gastaud.io\/article\/","description":"Recent content in Articles on Jean-Yves Gastaud","generator":"Hugo -- gohugo.io","language":"fr-fr","lastBuildDate":"Sat, 27 Nov 2021 16:14:35 +0100","item":[{"title":"Installer et configurer Renovate Bot sur GitLab CE","link":"https:\/\/gastaud.io\/article\/gitlab-renovatebot\/","pubDate":"Sat, 27 Nov 2021 16:14:35 +0100","guid":"https:\/\/gastaud.io\/article\/gitlab-renovatebot\/","description":"<p><a href=\"https:\/\/renovatebots.com\">Renovate Bot<\/a> est un outil permettant de contr\u00f4ler les versions des d\u00e9pendances de ses projets.<\/p>\n<p>On peut le comparer au projet <a href=\"https:\/\/github.com\/dependabot\">Dependabot<\/a> qui est disponible sur GitHub.<\/p>\n<p>Dans cette article, nous allons explorer comment installer et configurer Renovate pour fonctionner sur une instance de Gitlab CE.<\/p>"},{"title":"Git - Trier les tags d'un repo utilisant du semantic versioning","link":"https:\/\/gastaud.io\/article\/git-sort-tags-semantic-version\/","pubDate":"Mon, 20 Sep 2021 23:10:00 +0200","guid":"https:\/\/gastaud.io\/article\/git-sort-tags-semantic-version\/","description":"<p>Un rapide article aujourd&rsquo;hui pour vous parler d&rsquo;une d\u00e9couverte r\u00e9cente dans les fonctions de tri de Git et les tags bas\u00e9s sur le <a href=\"https:\/\/semver.org\/lang\/fr\/\">semantic versioning<\/a>.<\/p>"},{"title":"Mettre \u00e0 jour Buildx dans Docker CLI","link":"https:\/\/gastaud.io\/article\/docker-buildx-upgrade\/","pubDate":"Sat, 02 May 2020 14:29:42 +0200","guid":"https:\/\/gastaud.io\/article\/docker-buildx-upgrade\/","description":"Docker CLI, depuis la version 19.03 inclut le plugin buildx permettant d&rsquo;\u00e9tendre les fonctions de build de Docker en s&rsquo;appuyant sur Buildkit.\nParmis les principaux points qu&rsquo;apportent Buildkit on notera les suivants :\n r\u00e9solution en parall\u00e8le des d\u00e9pendences meilleure gestion du cache (import\/export, r\u00e9solution) possibit\u00e9 de distribuer les charges de travail ex\u00e9cution sans droits root  Et donc, comme indiqu\u00e9 plus haut, buildkit est maintenant inclut dans docker CLI. Probl\u00e8me, la version disponible et pr\u00e9-paquag\u00e9e n&rsquo;est pas \u00e0 jour des derni\u00e8res \u00e9volutions."},{"title":"Azure-cli, activer l'auto-compl\u00e9tion sur Zsh","link":"https:\/\/gastaud.io\/article\/azure-cli-autocomplete\/","pubDate":"Tue, 26 Nov 2019 23:35:18 +0100","guid":"https:\/\/gastaud.io\/article\/azure-cli-autocomplete\/","description":"Azure-cli n&rsquo;a pas d&rsquo;auto-compl\u00e9tion activ\u00e9e sur Zsh et le framework Oh-My-Zsh n&rsquo;a pas de plugin disponible en natif.\nCependant, Azure-cli est install\u00e9 avec un script d&rsquo;auto-compl\u00e9tion pour bash qui devrait se trouver dans le r\u00e9pertoire bash_completion.d.\nDans ma configuration, en utilisant Ubuntu 18.04, j&rsquo;ai trouv\u00e9 le script azure-cli dans un r\u00e9pertoire \/etc\/bash_completion.d\/.\nMaintenant nous avons juste besoin de charger le script autocomplete dans notre ~\/.zshrc avec la ligne suivante :"},{"title":"Gitlab CI, After Script et Merge Request","link":"https:\/\/gastaud.io\/article\/gitlab-ci-after-script-merge-request\/","pubDate":"Wed, 23 Oct 2019 09:52:49 +0200","guid":"https:\/\/gastaud.io\/article\/gitlab-ci-after-script-merge-request\/","description":"Gitlab CI propose de nombreuses int\u00e9grations lorsque vous lancez vos tests (junit par exemple).\nEn compl\u00e9ment, ou parfois \u00e0 d\u00e9faut d&rsquo;avoir acc\u00e8s \u00e0 la version entreprise de Gitlab, il peut \u00eatre utile de voir le r\u00e9sultat d&rsquo;une commande ou d&rsquo;un export en commentaire de votre Merge Request.\nPour r\u00e9aliser cela nous allons utiliser les options suivantes :\n les variables d&rsquo;environnement pr\u00e9d\u00e9finies dans Gitlab CI l&rsquo;option only:merge_requests de Gitlab CI la fonction after_script de Gitlab CI l&rsquo;API Gitlab pour les Merge Request un jeton (token) Gitlab \u00e0 g\u00e9n\u00e9rer en amont curl JQ  Avec ce process, nous pourrons ainsi avoir un retour dans notre Merge Request"},{"title":"Git - Tips & Tricks","link":"https:\/\/gastaud.io\/article\/git-tips-tricks\/","pubDate":"Tue, 23 Apr 2019 14:44:54 +0200","guid":"https:\/\/gastaud.io\/article\/git-tips-tricks\/","description":"<p>Git est un outil tr\u00e8s puissant et il propose de nombreuses fonctionnalit\u00e9s qui ne sont pas toujours connues ou simple \u00e0 appr\u00e9hender.<\/p>\n<p>Vous trouverez ci-dessous quelques astuces pour vous aider au quotidien et ne plus avoir peur de faire une b\u00eatise !<\/p>"},{"title":"GoHugo - G\u00e9n\u00e9rer des d\u00e9clinaisons d'images utilisables en page d'accueil","link":"https:\/\/gastaud.io\/article\/hugo-homepage-images-processing\/","pubDate":"Thu, 11 Apr 2019 16:51:22 +0200","guid":"https:\/\/gastaud.io\/article\/hugo-homepage-images-processing\/","description":"GoHugo, depuis la version 0.32, est capable de g\u00e9rer des ressources d\u00e9di\u00e9es \u00e0 une page ainsi que de g\u00e9n\u00e9rer des d\u00e9clinaisons d&rsquo;images.\nCette fonctionnalit\u00e9 est notamment tr\u00e8s pratique pour g\u00e9rer automatiquement des d\u00e9clinaisons responsives de ces images et les utiliser dans un template ou shortcode.\nCela fonctionne parfaitement lorsque l&rsquo;on est dans un contenu.\nAlors c&rsquo;est quoi le soucis ? Admettons que nous voulions utiliser des images responsives sur la page d&rsquo;accueil de notre site."},{"title":"Drupal, Gitlab CI et Clever Cloud sont dans un bateau","link":"https:\/\/gastaud.io\/article\/drupal-clever-cloud\/","pubDate":"Wed, 10 Apr 2019 15:15:36 +0200","guid":"https:\/\/gastaud.io\/article\/drupal-clever-cloud\/","description":"<p>D\u00e9ployer un site Drupal 8 sur Clever Cloud avec Gitlab CI<\/p>"},{"title":"G\u00e9rer des profils distincts dans Git","link":"https:\/\/gastaud.io\/article\/git-gerer-profils\/","pubDate":"Thu, 24 Jan 2019 00:02:55 +0100","guid":"https:\/\/gastaud.io\/article\/git-gerer-profils\/","description":"Vous utilisez votre ordinateur pour travailler et, plus que jamais, il vous arrive s\u00fbrement d&rsquo;utiliser Git (que feriez-vous sur cet article sinon ?).\nPeut-\u00eatre vous arrive-t-il aussi de travailler sur un projet personnel sur ce m\u00eame ordinateur ?\nOu de contribuer \u00e0 un projet Open-Source, toujours sur la m\u00eame machine.\nVous avez probablement d\u00e9fini une identit\u00e9 (nom + mail) globale \u00e0 votre machine et vous la surcharg\u00e9e pour chaque projet en fonction du contexte."},{"title":"Mon workflow Git","link":"https:\/\/gastaud.io\/article\/git-workflow\/","pubDate":"Tue, 22 Jan 2019 08:51:19 +0100","guid":"https:\/\/gastaud.io\/article\/git-workflow\/","description":"R\u00e9sum\u00e9 du workflow Git, en ligne de commande, que j&rsquo;applique de fa\u00e7on quasi-syst\u00e9matique \u00e0 mes projets.\nDans cet article, je n&rsquo;entrerai pas le d\u00e9tail de la gestion des Pull Request \/ Merge Request, des process de validation&hellip;\nCes \u00e9l\u00e9ments peuvent, bien entendu, modifier l\u00e9g\u00e8rement le process en fonction des contraintes que peuvent avoir les outils utilis\u00e9s.\nBranches principales Au d\u00e9marrage du projet, 3 branches principales et permanentes (qui seront toujours pr\u00e9sentes) sont cr\u00e9\u00e9es."},{"title":"Git - Comparer les commits de 2 branches Git","link":"https:\/\/gastaud.io\/article\/git-compare-branches\/","pubDate":"Fri, 18 Jan 2019 09:50:14 +0100","guid":"https:\/\/gastaud.io\/article\/git-compare-branches\/","description":"Listing des diff\u00e9rentes mani\u00e8res de comparer des branches dans Git.\nTLDR; Toute la magie r\u00e9side dans l&rsquo;utilisation des plages de r\u00e9vision et la syntaxe BRANCH_1..BRANCH_2\nConnaitre les diff\u00e9rences entre 2 branches git diff [BRANCH_1]..[BRANCH_2] retourne les diff\u00e9rences de code entre 2 branches.\ndiff --git a\/readme.txt b\/readme.txt index ac28f91..ae362e4 100644 --- a\/readme.txt +++ b\/readme.txt @@ -1 +1 @@ -Coucou +Coucou2 On constate ici que dans le fichier readme.txt de a branche b, le mot Coucou a \u00e9t\u00e9 remplac\u00e9 par Coucou2."},{"title":"Split JSON avec jq","link":"https:\/\/gastaud.io\/article\/split-json-jq\/","pubDate":"Wed, 16 Jan 2019 16:36:46 +0100","guid":"https:\/\/gastaud.io\/article\/split-json-jq\/","description":"Vous \u00eates vous d\u00e9j\u00e0 demand\u00e9 comment d\u00e9couper un JSON en plusieurs &ldquo;sous-&ldquo;fichiers&rdquo; ?\nSi oui, cette ligne de commande est faite pour vous !\nLa seule d\u00e9pendance ici est l&rsquo;utilisation de l&rsquo;outils jq.\nJe vous encourage d&rsquo;ailleurs \u00e0 regarder cet outil tr\u00e8s puissant sur la manipulation de JSON.\nTL;DR jq -c -M '.[]' myfile.json | \\ while read line; do echo $line &gt; $(echo $line | jq -r -c &quot;.id&quot;).json; done La commande va parser le fichier myfile."},{"title":"Makefile et parall\u00e9lisation des jobs","link":"https:\/\/gastaud.io\/article\/makefile-parallel\/","pubDate":"Wed, 16 Jan 2019 15:18:58 +0100","guid":"https:\/\/gastaud.io\/article\/makefile-parallel\/","description":"PoC \/ Tests sur l&rsquo;utilisation des jobs parall\u00e8les via Make et r\u00e9sultats constat\u00e9s\nhttps:\/\/www.gnu.org\/software\/make\/manual\/html_node\/Parallel.html\nTests basiques Makefile all: test test2 test3 test4 test5 test6 test7 test: @sleep 2 &amp;&amp; \\ echo &quot;---&gt; 1&quot; test2: @sleep 2 &amp;&amp; \\ echo &quot;---&gt; 2&quot; test3: test test2 .FORCE @sleep 2 &amp;&amp; \\ echo &quot;---&gt; 3&quot; test4: @sleep 2 &amp;&amp; \\ echo &quot;---&gt; 4&quot; test5: @sleep 2 &amp;&amp; \\ echo &quot;---&gt; 5&quot; test6: @sleep 2 &amp;&amp; \\ echo &quot;---&gt; 6&quot; test7: @sleep 2 &amp;&amp; \\ echo &quot;---&gt; 7&quot; ."},{"title":"Kubernetes a gagn\u00e9 la bataille des orchestrateurs","link":"https:\/\/gastaud.io\/article\/kubernetes-a-gagne\/","pubDate":"Thu, 05 Jul 2018 00:00:00 +0000","guid":"https:\/\/gastaud.io\/article\/kubernetes-a-gagne\/","description":"L&rsquo;arriv\u00e9e il y a quelques ann\u00e9es de solutions permettant de simplifier la cr\u00e9ation et gestion de conteneurs, telles que Docker ou rkt, combin\u00e9es aux approches micro-services et leurs popularit\u00e9s croissantes ont entra\u00een\u00e9 rapidement le besoin de solutions dites d'orchestration de conteneurs.\nDe nombreuses solutions d&rsquo;orchestration ont vu le jour et se sont retrouv\u00e9es disponibles en Open-Source.\nApache Mesos Marathon, Docker Swarm, Kubernetes ou encore OpenStack Magnum permettent toutes de traiter ces probl\u00e9matiques."},{"title":"Drupal Behat afterFeature","link":"https:\/\/gastaud.io\/article\/behat-afterfeature\/","pubDate":"Fri, 02 Sep 2016 17:12:10 +0200","guid":"https:\/\/gastaud.io\/article\/behat-afterfeature\/","description":"Snippet permettant d&rsquo;\u00e9x\u00e9cuter des actions \u00e0 la fin de l&rsquo;\u00e9x\u00e9cution d&rsquo;une feature Behat.\n\/** * Defines application features from the specific context. *\/ class FeatureContext extends RawDrupalContext implements SnippetAcceptingContext { \/** * That function will be executed after the end of the feature. * * @AfterFeature *\/ public static function cleanupSomethingAfterFeatureExcution() { \/\/ Do something. } } Ressources  http:\/\/docs.behat.org\/en\/v2.5\/guides\/3.hooks.html https:\/\/www.webomelette.com\/content-fixtures-behat-testing-drupal-7 http:\/\/www.metaltoad.com\/blog\/what-i-learned-today-drupal-behat-scenario-cleanup  "},{"title":"Obtenir l'url d'une page g\u00e9r\u00e9e via page_manager","link":"https:\/\/gastaud.io\/article\/panel-page-manager-obtenir-url\/","pubDate":"Tue, 09 Aug 2016 14:48:18 +0200","guid":"https:\/\/gastaud.io\/article\/panel-page-manager-obtenir-url\/","description":"Ci-dessous une technique pour r\u00e9cup\u00e9rer l&rsquo;url d\u00e9finie dans une page g\u00e9r\u00e9e via le module page_manager (inclus dans Ctools).\n\/\/ Load ctools plugins. ctools_include(&#39;page&#39;, &#39;page_manager&#39;, &#39;plugins\/tasks&#39;); \/\/ Load path &#34;my-page&#34; page. $path = page_manager_page_load(&#39;my-page&#39;)-&gt;path; "},{"title":"Drupal 8 - Suppression de configurations \u00e0 la d\u00e9sinstallation du module","link":"https:\/\/gastaud.io\/article\/drupal-8-suppression-config-desinstallation\/","pubDate":"Mon, 02 May 2016 15:21:25 +0200","guid":"https:\/\/gastaud.io\/article\/drupal-8-suppression-config-desinstallation\/","description":"Lors de l&rsquo;impl\u00e9mentation d&rsquo;un module, il va vous arriver de cr\u00e9er des configurations lors de l&rsquo;installation.\nIl est n\u00e9cessaire de penser \u00e0 les supprimer \u00e0 la d\u00e9sinstallation.\nPour cela, il vous suffit d&rsquo;utiliser le hook_uninstall dans le fichier .install de votre module, comme cela pouvait \u00eatre fait sur Drupal 7.\nExemple avec une configuration du type migration nomm\u00e9e communique:\n\/** * Implements hook_uninstall(). *\/ function migrate_communique_uninstall() { \\Drupal::entityTypeManager()-&gt;getStorage('migration')-&gt;load('communique')-&gt;delete(); }  A lire aussi   R\u00e9aliser un import de fichier XML sous Drupal 8 Import de fichier XML sous Drupal 8 - Traitements sp\u00e9cifiques sur la source    "},{"title":"Import de fichier XML sous Drupal 8 - Traitements sp\u00e9cifiques sur la source","link":"https:\/\/gastaud.io\/article\/drupal-8-migration-xml-surcharge-source\/","pubDate":"Mon, 02 May 2016 10:13:54 +0200","guid":"https:\/\/gastaud.io\/article\/drupal-8-migration-xml-surcharge-source\/","description":"Dans l&rsquo;article pr\u00e9c\u00e9dent, R\u00e9aliser un import de fichier XML sous Drupal 8, nous avons vu comment importer un fichier XML via Migrate. La configuration \u00e9tait simple et nous avons pu faire l&rsquo;ensemble du mapping sans manipuler les donn\u00e9es du fichier XML.\nNous allons \u00e9tendre notre exemple pr\u00e9c\u00e9dent pour importer une date.\nCependant cette date n&rsquo;a pas un format de date standard et n&rsquo;est pas valide pour \u00eatre import\u00e9e dans Drupal directement."},{"title":"R\u00e9aliser un import de fichier XML sous Drupal 8","link":"https:\/\/gastaud.io\/article\/drupal-8-migration-xml\/","pubDate":"Mon, 02 May 2016 10:13:54 +0200","guid":"https:\/\/gastaud.io\/article\/drupal-8-migration-xml\/","description":"Dans cette article nous allons voir comment r\u00e9aliser un import de contenu XML dans Drupal 8 \u00e0 l&rsquo;aide des modules migrate, migrate_plus et migrate_source_xml.\nR\u00e9cup\u00e9ration des modules et installation  migrate est disponible dans le coeur de Drupal 8. Cependant il ne contient \u00e0 ce jour que la possibilit\u00e9 de migrer des contenus en provenance d&rsquo;une base SQL. migrate_plus est un module contribu\u00e9 qui permet notamment d&rsquo;obtenir la possibilit\u00e9 de migrer des contenus \u00e0 partir d&rsquo;une URL."},{"title":"Utiliser Tmux et Tmuxinator pour g\u00e9rer vos confs projets","link":"https:\/\/gastaud.io\/article\/tmux-tmuxinator-confs-projets\/","pubDate":"Wed, 27 Apr 2016 19:00:00 +0200","guid":"https:\/\/gastaud.io\/article\/tmux-tmuxinator-confs-projets\/","description":"Pr\u00e9-requis Avoir install\u00e9 sur vos machines\n Tmux Tmuxinator  Votre nouveau projet en 3 \u00e9tapes  tmuxinator new [project_name] : Cette commande va g\u00e9n\u00e9rer un fichier YAML avec la configuration par d\u00e9faut Editer le fichier g\u00e9n\u00e9r\u00e9 : ~\/.tmuxinator\/[project_name].yml (voir exemple ci-dessous) Lancer mux [project_name] dans votre terminal  Exemple de configuration Tmuxinator pour le projet Store sous Drupal Dans le terminal, lancer mux store permettra ainsi de lancer 5 fen\u00eatres tmux + phpstorm."},{"title":"Oubliez cURL et Wget gr\u00e2ce \u00e0 HTTPie","link":"https:\/\/gastaud.io\/article\/httpie\/","pubDate":"Thu, 14 Apr 2016 11:49:35 +0200","guid":"https:\/\/gastaud.io\/article\/httpie\/","description":"HTTPie est un utilitaire en ligne de commande qui a vocation \u00e0 remplacer simplement l&rsquo;utilisation des commandes cURL et wget tout en ajoutant une petite touche bien agr\u00e9able.\nInstallation Plusieurs modes d&rsquo;installation sont possibles. En effet HTTPie est disponible via les packages officiels (pas forcement la derni\u00e8re version) ou via pip.\nVous trouverez toutes les informations n\u00e9cessaires dans le Readme du projet.\nFormatage et couleur Formatage Si vous avez d\u00e9j\u00e0 lanc\u00e9 des requ\u00eates \u00e0 une API via cURL, vous avez d\u00e9j\u00e0 du voir des r\u00e9sultats comme ci-dessous."},{"title":"Tmux - Exemple de fichier de configuration","link":"https:\/\/gastaud.io\/article\/tmux-exemple-config\/","pubDate":"Thu, 07 Apr 2016 13:49:38 +0200","guid":"https:\/\/gastaud.io\/article\/tmux-exemple-config\/","description":"Exemple de fichier .tmux.conf\n# Update default binding of `Enter` to also use copy-pipe unbind -t vi-copy Enter bind-key -t vi-copy Enter copy-pipe &quot;reattach-to-user-namespace pbcopy&quot; # Mouse scrolling and selection set -g mode-mouse on set -g default-terminal &quot;screen-256color&quot; # Allows for faster key repetition set -s escape-time 0 # C-b is not acceptable -- Vim uses it; Set ctrl+a as a prefix set -g prefix C-a unbind-key C-b bind-key a send-prefix bind-key C-a last-window # Kill windows and panes faster, by rebinding the confirmation key bind-key &amp;amp; kill-window bind-key x kill-pane bind-key q kill-server # Renumber windows sequentially after closing any of them set -g renumber-windows on # set window and pane index to 1 (0 by default) set-option -g base-index 1 setw -g pane-base-index 1 # increase scrollback lines set -g history-limit 10000 # get notification when something happend on a tmux window setw -g monitor-activity on # disable auto-rename from tmux set-window-option -g allow-rename off "},{"title":"[Vid\u00e9o] La gestion de produit Agile en 2 mots","link":"https:\/\/gastaud.io\/article\/gestion-produit-agile-2-mots\/","pubDate":"Thu, 07 Apr 2016 13:32:21 +0200","guid":"https:\/\/gastaud.io\/article\/gestion-produit-agile-2-mots\/","description":"J&rsquo;ai (re)d\u00e9couvert cette vid\u00e9o il y a quelque temps.\nC&rsquo;est une pr\u00e9sentation synth\u00e9tique de 15 minutes permettant de comprendre tr\u00e8s simplement les grands concepts de l&rsquo;agilit\u00e9 d&rsquo;un point de vue m\u00e9tier dans le cadre de d\u00e9veloppement logiciel Agile.\nLa vid\u00e9o a \u00e9t\u00e9 r\u00e9alis\u00e9e par de Henrik Kniberg, traduite par C\u00e9dric Cheval\u00e9rias et doubl\u00e9e par Florent Lothon.\nA diffuser sans mod\u00e9ration !"},{"title":"HTTP 1.x ou HTTP\/2  - Lequel choisir ?","link":"https:\/\/gastaud.io\/article\/http1x-http2-lequel-choisir\/","pubDate":"Tue, 02 Feb 2016 13:45:17 +0200","guid":"https:\/\/gastaud.io\/article\/http1x-http2-lequel-choisir\/","description":"Le support de HTTP\/2 est maintenant suffisamment stable et impl\u00e9ment\u00e9 dans les serveurs les plus couramment utilis\u00e9s alors qu&rsquo;elles sont les raisons qui pourraient nous pousser \u00e0 choisir une version ou l&rsquo;autre dans nos projets ?\nHTTP 1.x Vous serez obliger de continuer \u00e0 utiliser HTTP 1.x dans les cas suivants :\n site en HTTP non s\u00e9curis\u00e9  Bien qu&rsquo;HTTP\/2 supporte officiellement le protocole HTTP non s\u00e9curis\u00e9, l&rsquo;ensemble des navigateurs ont pour le moment fait le choix de ne pas l&rsquo;impl\u00e9menter."},{"title":"Bash - R\u00e9cup\u00e9rer le chemin absolu d'ex\u00e9cution du script","link":"https:\/\/gastaud.io\/article\/bash-chemin-absolu\/","pubDate":"Thu, 10 Dec 2015 13:50:52 +0200","guid":"https:\/\/gastaud.io\/article\/bash-chemin-absolu\/","description":"Lors de l&rsquo;ex\u00e9cution d&rsquo;un fichier bash, il est parfois n\u00e9cessaire de r\u00e9cup\u00e9rer le chemin d&rsquo;ex\u00e9cution du script.\nTL;DR $(dirname $(readlink -f $0))  Attention :Sur Mac OS X, readlink ne fonctionne pas de la m\u00eame fa\u00e7on que sur Linux. Il vous faudra chercher une alternative. 3 pistes :\n la plus universelle $( cd &ldquo;$( dirname &ldquo;${0}&rdquo; )&rdquo; &amp;&amp; pwd ) utiliser realpath -s $0 installer greadlink    La commande dirname L&rsquo;un des moyens les plus courant est d&rsquo;utiliser la commande"},{"title":"Git : Supprimer toutes les branches merg\u00e9es sur le d\u00e9pot distant","link":"https:\/\/gastaud.io\/article\/git-supprimer-branches-mergees\/","pubDate":"Thu, 03 Dec 2015 13:51:38 +0200","guid":"https:\/\/gastaud.io\/article\/git-supprimer-branches-mergees\/","description":"Supprimer toutes les branches merg\u00e9es sur votre d\u00e9pot distant en 1 ligne de commande c&rsquo;est possible !\nTL;DR git branch -r --merged master | grep -v master | sed 's\/origin\\\/\/\/' | xargs -n 1 git push --delete origin  Attention :cette commande permet de v\u00e9ritablement supprimer des branches dans le d\u00e9p\u00f4t distant. Par exemple, si developest merg\u00e9 avec master, cela supprimera develop. Mais peut-\u00eatre que les d\u00e9veloppeurs n&rsquo;ont pas le droit de pousser du code sur masterdirectement\u2026 et se retrouveront, du coup, bloqu\u00e9s."},{"title":"Envoyer des mails HTML via Drupal et Rules","link":"https:\/\/gastaud.io\/article\/drupal-rules-mails-html\/","pubDate":"Tue, 03 Nov 2015 13:54:56 +0200","guid":"https:\/\/gastaud.io\/article\/drupal-rules-mails-html\/","description":"Modules de la contribution  HTML Mail pour la gestion pure du mail au format HTML Mail System pour d\u00e9finir quel type de mail on envoi en fonction des actions Variable Email vous permettra de stocker le mail dans une variable et l&rsquo;envoyer via Rules.  Configuration du module HTML Mail D\u00e9finissez dans le module HTMLMail le th\u00e8me de votre site. Cela permettra de centraliser vos templates au sein de votre th\u00e8me."},{"title":"Tests unitaires avec Simpletest dans Drupal 7","link":"https:\/\/gastaud.io\/article\/tests-unitaires-simpletest-drupal-7\/","pubDate":"Thu, 22 Oct 2015 22:18:35 +0200","guid":"https:\/\/gastaud.io\/article\/tests-unitaires-simpletest-drupal-7\/","description":"Si vous ne l&rsquo;avez pas encore lu, allez lire l&rsquo;article Tester ses modules Drupal 7.\n  Les tests fonctionnels via Simpletest sont g\u00e9r\u00e9s par la class DrupalUnitTestCase qu&rsquo;il faut ensuite \u00e9tendre dans son module.\nDrupal va ex\u00e9cuter chaque fonction commen\u00e7ant par test d\u00e9finie dans la class.\nContrairement aux tests fonctionnels, Drupal ne va pas reconstruire d&rsquo;environnement pour lancer ce type de tests. Il va se contenter de charger les modules sp\u00e9cifi\u00e9s dans l&rsquo;initialisation et lancer les fonctions donner avec les bons param\u00e8tres."},{"title":"Tests fonctionnels avec Simpletest dans Drupal 7","link":"https:\/\/gastaud.io\/article\/tests-fonctionnels-simpletest-drupal-7\/","pubDate":"Thu, 22 Oct 2015 22:17:56 +0200","guid":"https:\/\/gastaud.io\/article\/tests-fonctionnels-simpletest-drupal-7\/","description":"Si vous ne l&rsquo;avez pas encore lu, allez lire l&rsquo;article Tester ses modules Drupal 7.\n  Les tests fonctionnels via Simpletest sont g\u00e9r\u00e9s par la class DrupalWebTestCase qu&rsquo;il faut ensuite \u00e9tendre dans son module.\nPour chaque fonction commen\u00e7ant par test d\u00e9finie dans la class, Simpletest va reconstruire enti\u00e8rement une instance de Drupal, activer les modules d\u00e9sir\u00e9s et ex\u00e9cuter les tests.\nL&rsquo;avantage de ce type de tests r\u00e9side dans le fait que Drupal a acc\u00e8s aux informations de la base de donn\u00e9es et est donc en capacit\u00e9 d\u2019ex\u00e9cuter la totalit\u00e9 des fonctions disponibles."},{"title":"Tester ses modules Drupal","link":"https:\/\/gastaud.io\/article\/tester-modules-drupal-7\/","pubDate":"Thu, 22 Oct 2015 22:17:21 +0200","guid":"https:\/\/gastaud.io\/article\/tester-modules-drupal-7\/","description":"Les tests fonctionnels et encore plus unitaires sous Drupal c&rsquo;est la gal\u00e8re.\n  Voil\u00e0 une phrase qu&rsquo;il est fr\u00e9quent d&rsquo;entendre.\nNous allons donc essayer via une s\u00e9rie d&rsquo;articles de voir quels types de tests s&rsquo;offrent \u00e0 nous, que ce soit via les outils fournis directement par Drupal ou via l&rsquo;utilisation d&rsquo;outils externes.\nD\u00e9marrons donc par une pr\u00e9sentation du framework de tests embarqu\u00e9 dans Drupal 7 : Simpletest.\nTypes de tests disponibles Simpletest met \u00e0 disposition 2 types de tests :"},{"title":"R\u00e9initiliser tous les emails et mots de passe utilisateur avec Drush","link":"https:\/\/gastaud.io\/article\/reinitiliser-tous-les-emails-et-mots-de-passe-utilisateur-avec-drush\/","pubDate":"Mon, 05 Oct 2015 13:51:52 +0200","guid":"https:\/\/gastaud.io\/article\/reinitiliser-tous-les-emails-et-mots-de-passe-utilisateur-avec-drush\/","description":"Si vous r\u00e9cup\u00e9rez une base de donn\u00e9es Drupal en local, il peut \u00eatre utile d&rsquo;assigner des valeurs par d\u00e9faut aux comptes utilisateurs.\nCela permet entre autre :\n de se connecter simplement \u00e0 l&rsquo;ensemble des comptes d&rsquo;\u00e9viter que des mails de tests soient envoy\u00e9s aux contacts r\u00e9els  Avec Drush, cela est possible en une ligne de commande :\ndrush sql-sanitize --sanitize-email=&quot;user+%uid@localhost&quot; --sanitize-password=&quot;password&quot; "},{"title":"Installer la derni\u00e8re version de Git sur Ubuntu","link":"https:\/\/gastaud.io\/article\/ubuntu-git-latest\/","pubDate":"Wed, 30 Sep 2015 10:44:14 +0200","guid":"https:\/\/gastaud.io\/article\/ubuntu-git-latest\/","description":"Si vous utilisez r\u00e9guli\u00e8rement les syst\u00e8mes de paquets fournis avec vos distributions, vous avez surement remarqu\u00e9 que les versions fournies sont g\u00e9n\u00e9ralement anciennes.\nSur Ubuntu, Git ne d\u00e9roge pas \u00e0 la r\u00e8gle.\nEn effet, Ubuntu 14.04 LTS donne acc\u00e8s \u00e0 Git 1.9 et Ubuntu 15.05, Git 2.1. Au mieux une version sortie en fin 2014.\nFaites le test par vous m\u00eame en ouvrant votre terminal et en lan\u00e7ant la commande suivante :"},{"title":"Gestion et surcharge d'un field instance sous Drupal 8","link":"https:\/\/gastaud.io\/article\/entityconnect-d8\/conversion-form-instance\/","pubDate":"Mon, 31 Aug 2015 23:54:38 +0200","guid":"https:\/\/gastaud.io\/article\/entityconnect-d8\/conversion-form-instance\/","description":"Retour sur le portage des options de configuration de champs pour le module Entity Connect sous Drupal 8.\nEntity Connect vient ajouter de nouvelles fonctionnalit\u00e9s aux champs de type Entity Reference. Le module propose de d\u00e9finir, pour chaque instance de champ, si les fonctionnalit\u00e9s propos\u00e9es doivent \u00eatre activ\u00e9es ou non.\nSurcharge de l&rsquo;instance du champ Entity Reference Dans notre cas, nous avons besoin de surcharger la class ConfigurableEntityReferenceItem.\n&lt;?php namespace Drupal\\entityconnect; use Drupal\\entity_reference\\ConfigurableEntityReferenceItem; use Drupal\\Core\\Form\\FormStateInterface; class ConfigurableEntityconnectItem extends ConfigurableEntityReferenceItem { \/\/ Do something."},{"title":"Cr\u00e9ation d'un formulaire d'administration sous Drupal 8","link":"https:\/\/gastaud.io\/article\/entityconnect-d8\/formulaire-administration\/","pubDate":"Thu, 27 Aug 2015 15:47:06 +0200","guid":"https:\/\/gastaud.io\/article\/entityconnect-d8\/formulaire-administration\/","description":"Retour sur le portage de la partie d&rsquo;administration du module Entity Connect sous Drupal 8.\nConversion du fichier .info  Le nom du fichier change l\u00e9g\u00e8rement. Il passe ainsi de *.info \u00e0 *.info.yml Comme vous pouvez vous en douter en lisant le nom du nouveau fichier, le format utilis\u00e9 dans ce fichier est le YAML.  Drupal 7 .info\nname = &#34;Entity Connect&#34; description = &#34;Allows for referenced entity to be created and edited from the entity reference field&#34; core = &#34;7."},{"title":"Docker - Comprendre le fonctionnement du tag latest","link":"https:\/\/gastaud.io\/article\/docker-comprendre-tag-latest\/","pubDate":"Thu, 09 Apr 2015 00:00:00 +0000","guid":"https:\/\/gastaud.io\/article\/docker-comprendre-tag-latest\/","description":"Cet article est une synth\u00e8se d&rsquo;une publication parue sur Medium qui explique de mani\u00e8re pr\u00e9cise le fonctionnement du tag latest disponible sur les images Docker.\nComme vous le savez surement, il est possible de tagger ces images Docker pour les d\u00e9poser sur un registry.\nCependant si vous avez essay\u00e9 d&rsquo;utiliser le tag lastest disponible pour certaines images, notamment sur le Hub Docker, vous avez pu vous rendre compte que ce tag n&rsquo;a pas toujours le comportement esp\u00e9r\u00e9."},{"title":"Docker - Erreurs de d\u00e9butant","link":"https:\/\/gastaud.io\/article\/docker-erreurs-debutant\/","pubDate":"Tue, 12 Aug 2014 00:00:00 +0000","guid":"https:\/\/gastaud.io\/article\/docker-erreurs-debutant\/","description":"Dans l&rsquo;article pr\u00e9c\u00e9dent, je parlais du projet [Wintersmith Docker]((https:\/\/github.com\/jygastaud\/wintersmith_docker) et mentionnais le fait que j&rsquo;avais fait des erreurs dans la conception initiale, d\u00fbes \u00e0 un manque de connaissance de Docker.\nLe Dockerfile L&rsquo;une des premi\u00e8res erreurs que j&rsquo;ai fait a \u00e9t\u00e9 de vouloir tout mettre dans le Dockerfile en pensant que tout doit passer par l\u00e0 pour automatiser les choses.\nC&rsquo;est en partie vrai mais il est parfois pr\u00e9f\u00e9rable de s\u00e9parer la partie stack logiciel, data et build."},{"title":"Wintersmith Docker - Introduction","link":"https:\/\/gastaud.io\/article\/projet-wintersmith-docker-introduction\/","pubDate":"Fri, 08 Aug 2014 00:00:00 +0000","guid":"https:\/\/gastaud.io\/article\/projet-wintersmith-docker-introduction\/","description":"Apr\u00e8s plusieurs lectures et essais rapides de Docker, j&rsquo;ai d\u00e9cid\u00e9 d&rsquo;y consacrer une peu plus de temps de mani\u00e8re concr\u00eate.\nEtant en pleine r\u00e9flexions sur l&rsquo;outil que j&rsquo;allais utilis\u00e9 pour la r\u00e9alisation de ce blog, j&rsquo;ai donc d\u00e9cid\u00e9 de lancer le projet Wintersmith Docker afin de pouvoir tester Wintersmith, un g\u00e9n\u00e9rateur de site statique bas\u00e9 sur Nodejs, dans un conteneur Docker.\nCa sert \u00e0 quoi ce projet? Le projet donne acc\u00e8s \u00e0 2 types d&rsquo;utilisation:"},{"title":"Mes notes sur Docker","link":"https:\/\/gastaud.io\/article\/notes-docker\/","pubDate":"Mon, 04 Aug 2014 00:00:00 +0000","guid":"https:\/\/gastaud.io\/article\/notes-docker\/","description":"Le fichier Dockerfile produit une Image\n  Dans le Dockerfile il n&rsquo;est possible de mettre qu&rsquo;une seule instruction CMD.\n Si 2 intructions (ou plus) sont dans le m\u00eame fichier, seule la derni\u00e8re sera ex\u00e9cut\u00e9e.    Il est possible de commiter, pusher ou r\u00e9cup\u00e9rer une image (\u00e0 la fa\u00e7on de GIT)\n  docker run ... produit une instance de l&rsquo;image\n  Les fichiers ajout\u00e9s via l&rsquo;image (et le Dockerfile) sont fixes \u00e0 chaque lancement de run"},{"title":"Configurer Nginx pour g\u00e9rer automatiquement vos sous-domaines locaux","link":"https:\/\/gastaud.io\/article\/nginx-sousdomaines-auto\/","pubDate":"Tue, 07 Jan 2014 00:00:00 +0000","guid":"https:\/\/gastaud.io\/article\/nginx-sousdomaines-auto\/","description":"Lors des d\u00e9veloppements locaux, nous avons pris l&rsquo;habitude de toujours d\u00e9finir un nom de domaine local (mon_site.local dans notre exemple) afin de coller au plus proche de la r\u00e9alit\u00e9 du site final.\nLe processus classique \u00e9tait le suivant  Ajout d&rsquo;un nouveau dossier allant contenir notre site dans notre r\u00e9pertoire de d\u00e9veloppement (\/var\/www dans notre exemple). On obtient ainsi l&rsquo;arborescence suivante:  \/var\/www\/ \u251c\u2500\u2500 mon_site1 \u2502\u00a0\u2514\u2500\u2500 index.html \u251c\u2500\u2500 mon_site2 \u2502\u00a0\u2514\u2500\u2500 index."},{"title":"Drupal Export des noeuds en Markdown","link":"https:\/\/gastaud.io\/article\/drupal-export-noeud-markdown\/","pubDate":"Wed, 01 Jan 2014 00:00:00 +0000","guid":"https:\/\/gastaud.io\/article\/drupal-export-noeud-markdown\/","description":"Ressources utiles:\n* https:\/\/github.com\/lukaswhite\/Drupal-Markdownify * https:\/\/github.com\/lukaswhite\/Drupal-Jekyll-Export * http:\/\/www.gizra.com\/content\/dekyll-drupal-on-jekyll\/  "},{"title":"DrupalCamp Paris2013 - Behat et Drupal","link":"https:\/\/gastaud.io\/article\/drupalcamp\/paris2013\/behat\/","pubDate":"Sat, 22 Jun 2013 15:00:28 +0100","guid":"https:\/\/gastaud.io\/article\/drupalcamp\/paris2013\/behat\/","description":"Behat et Drupal Selenium API et IDE  Comment automatiser les tests?  Selenium Server PHPUnit Selenium IDE &hellip;   Comment tester l&rsquo;ajax?  Selenium \u00e0 installer   Comment tester le multi-domaine  Behaviour Driven Development (BDD) CF: Ryan Weaver portland 2013\nGherkin Langage qui permet de d\u00e9finir des tests\n Feature  Scenario  Steps  Context: Given  And   When  And   Result: Then        Cucumber  Gherkin + Ruby  Behat + Mink Behat  Gherkin + PHP =&gt; Behat  Mink   Drivers"},{"title":"DrupalCamp Paris2013 - GED","link":"https:\/\/gastaud.io\/article\/drupalcamp\/paris2013\/ged\/","pubDate":"Fri, 21 Jun 2013 15:00:28 +0100","guid":"https:\/\/gastaud.io\/article\/drupalcamp\/paris2013\/ged\/","description":"GED Acquisition  Imports: Feed, custom Services, CMIS API Solr  Stockage Versionning + diff Archivage: Taxonomie Workflow: Maestro\nClassement  Gestion des permissions FacetAPI  Principales Alfresco Knowledge Tree\nAnnexes  ExoPatform Quotero  Comparaison Faiblesses de Drupal:\n Int\u00e9gration avec MS et Google Docs WebDav  Avantages de Drupal :\n Garantie de support et d&rsquo;\u00e9volutivit\u00e9 Confiance 431 modules uniquement pour la gestion de fichiers Couverture fonctionnelle &ldquo;sans limite&rdquo;  Cas clients Intranet collaboratif : M\u00e9decin Sans Fronti\u00e8re Probl\u00e8mes:"},{"title":"DrupalCamp Paris2013 - Livraison continue avec Drupal 7","link":"https:\/\/gastaud.io\/article\/drupalcamp\/paris2013\/livraison-continue\/","pubDate":"Fri, 21 Jun 2013 15:00:28 +0100","guid":"https:\/\/gastaud.io\/article\/drupalcamp\/paris2013\/livraison-continue\/","description":"Prise de note lors de la conf\u00e9rence du DrupalCamp Paris 2013.\nComment faire un site en 1,5 mois sans le faire \u00e0 l&rsquo;arrache? Faut le faire en agile!\n On s&rsquo;engage sur une date ou sur un p\u00e9rim\u00e8tre mais pas les 2 D\u00e9finition du &ldquo;Minimum Viable Product&rdquo;  Comment livrer le plus souvent possible:\n Tout automatis\u00e9  Construction d&rsquo;un build pipeline Flux automatis\u00e9 jusqu&rsquo;\u00e0 la mise en production\ncommit -&gt; Int\u00e9 continue -&gt; recette d\u00e9veloppeur -&gt; d\u00e9ploiement en int\u00e9gration -&gt; recette m\u00e9tier -&gt; d\u00e9ploiement en pr\u00e9 prod -&gt; validation finale -&gt; d\u00e9ploiement en production"},{"title":"DrupalCamp Paris2013 - Magnifiez votre backend","link":"https:\/\/gastaud.io\/article\/drupalcamp\/paris2013\/magnifiez-backend\/","pubDate":"Fri, 21 Jun 2013 01:14:28 +0100","guid":"https:\/\/gastaud.io\/article\/drupalcamp\/paris2013\/magnifiez-backend\/","description":"Les formulaires peuvent \u00eatre tr\u00e8s long Cr\u00e9ation d&rsquo;un concept =&gt; FormMode bas\u00e9 sur le concept des ViewsMode : https:\/\/drupal.org\/sandbox\/Artusamak\/1796634\nField Extra Widget : https:\/\/drupal.org\/project\/field_extrawidgets\nViews Megarow =&gt; Edition en ligne dans le backend : https:\/\/drupal.org\/project\/views_megarow\nD\u00e9mo du Back Cartier\nBundle Switcher : https:\/\/drupal.org\/project\/bundleswitcher\nCr\u00e9er vos propres plugins pour l&rsquo;api de views Views Matrix\nG\u00e9rer les transitions de workflow Une 12ene de type d&rsquo;entit\u00e9 Probl\u00e9matique avec les modules contrib qui ne g\u00e8rent que les nodes"}]}}