Outils ( 10 / 20 articles - Voir la liste )

Astuce Docker – unauthorized: HTTP Basic: Access denied

Gitlab semble privilégier l’authentification via jeton d’accès personnel, pour se connecter au registre de conteneurs docker.

Remarque : Dans cet article, on considère que l’instance Gitlab hébergeant le registre de conteneurs avec lequel vous souhaitez interagir a pour URL https://my-gitlab.com. Remplacez-la par la vôtre, sans oublier d’y ajouter le port, si besoin.

Si vous n'êtes pas authentifié via un jeton, vous obtenez l’erreur suivante à chaque git pull ou git push :

# Utilisez l’URL de votre instance gitlab privée ou celle de gitlab.com
> docker pull my-gitlab.com/my-project-group/my-project/my/image:latest
Error response from daemon: Head "https://my-gitlab.com/my-project-group/my-project/my/image/manifests/latest": 
unauthorized: HTTP Basic: Access denied. The provided password or token is incorrect or your account has 2FA enabled 
and you must use a personal access token instead of a password. 
See https://my-gitlab.com/help/user/profile/account/two_factor_authentication#troubleshooting

Génération d’un jeton d’accès personnel

Pour éviter cela, il vous faut générer un nouveau jeton d’accès dans Gitlab :

  • Accédez à la page Personal access tokens de gitlab (https://my-gitlab.com/-/user_settings/personal_access_tokens)
  • Cliquez sur le bouton « Ajouter un nouveau jeton »
  • Précisez un nom de jeton (évitez les guillemets " et antislash \)
  • Définissez éventuellement la date d’expiration du jeton
  • Cochez les cases read_api, read_registry (et éventuellement write_registry si vous comptez faire des docker push)
  • Sauvegardez le jeton généré dans un espace sécurisé

Authentification avec le jeton

Authentifiez-vous auprès de votre instance Gitlab, en ligne de commande :

docker login my-gitlab.com --username "My token name" --password "glpat-as767nCwxmEfDhf_yHA7"

Cette commande revient à celle de login classique de docker, avec :

  • pour nom d’utilisateur, le nom du jeton tel qu’affiché dans le tableau listant les jetons
  • pour mot de passe, le jeton sauvegardé

Remarque :
Comme docker l’indique en message d’alerte au lancement de la commande, celle-ci n’est pas sécurisée. En effet, votre mot de passe sera stocké dans l’historique bash des commandes lancées.

Pour éviter cela, stockez plutôt le jeton dans un fichier :

# Créez un fichier ~/my_token.txt contenant votre jeton d’accès
cat ~/my_token.txt | docker login my-gitlab.com --username "My token name" --password-stdin
rm ~/my_token.txt

ou en variable d’environnement :

echo "$MY_TOKEN" | docker login my-gitlab.com --username "My token name" --password-stdin

Astuce Modifier l'auteur des commits Git

Il est possible de modifier l’auteur de tous les anciens commits d’un dépôt Git.

Pour cela, utilisez la commande suivante, après l’avoir personnalisée selon vos besoins :

git filter-branch --env-filter '
WRONG_EMAIL="wrong@email.com"
NEW_NAME="John Doe"
NEW_EMAIL="j.doe@email.com"

if [ "$GIT_COMMITTER_EMAIL" = "$WRONG_EMAIL" ]
then
    export GIT_COMMITTER_NAME="$NEW_NAME"
    export GIT_COMMITTER_EMAIL="$NEW_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$WRONG_EMAIL" ]
then
    export GIT_AUTHOR_NAME="$NEW_NAME"
    export GIT_AUTHOR_EMAIL="$NEW_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags

Explications :

On indique l’adresse email utilisée par tous les commits que l’on souhaite modifier, ainsi que le nom d’utilisateur et l’adresse email correcte que l’on souhaite utiliser à la place.

Astuce Créer un patch avec TortoiseSVN

TortoiseSVN permet de générer des patchs pour passer d'une version à une autre du projet.

Il y a deux types de patch :

  • Les patchs contenant toutes les lignes des fichiers modifiés qui ne sont pas encore "commités".
  • Les patchs contenant l'arborescence de tous les fichiers modifiés entre deux tags.

Description

Le premier type génère un fichier .patch, qui ressemble à quelque chose comme ça :

Index: settings/siteaccess/bo/site.ini.append.php
===================================================================
--- settings/siteaccess/bo/site.ini.append.php    (révision 864)
+++ settings/siteaccess/bo/site.ini.append.php    (copie de travail)
@@ -37,4 +37,23 @@
 CachedViewPreferences[full]=admin_navigation_content=1;admin_children_viewmode=list;admin_list_limit=1
 TranslationList=

+[DebugSettings]
+DebugOutput=enabled
+DebugToolbar=enabled
+DebugRedirection=disabled
+
+[TemplateSettings]
+Debug=disabled
+
+[DatabaseSettings]
+SQLOutput=disabled
+
 */ ?>
\ No newline at end of file

On peut y voir pour chaque fichier modifié, les lignes ajoutées et supprimées depuis le dernier commit.

Le second type génère l'arborescence et les fichiers entiers.

Utilisation

Pour générer un fichier .patch, il suffit de :

  • Faire un clic-droit sur l'arborescence
  • > TortoiseSVN
  • > Create patch...
  • Sélectionner les fichiers à patcher
  • Choisir (via le bouton Options) si on considère les modifications d'espaces blancs.

Pour utiliser ce fichier, il faut :

  • Le placer à l'endroit d'où on l'a généré
  • Faire un clic-droit sur le fichier
  • > TortoiseSVN
  • > Apply patch...

La liste des fichiers modifiés apparait, et on peut voir pour chacun d'eux les lignes impactées. On peut alors choisir de patcher tous les fichiers ou seulement certains.

Pour générer toute l'arborescence des fichiers modifiés entre deux tags, il faut :

  • Faire un clic-droit sur l'arborescence
  • > TortoiseSVN
  • > Repo-browser
  • Faire un clic-droit dans l'arborescence, sur la version la plus récente à comparer
  • > Mark for comparison
  • Faire un clic-droit dans l'arborescence, sur la version la plus ancienne à comparer
  • > Compare URLs

La liste des fichiers modifiés entre les deux versions apparaît. Il suffit alors de :

  • Les sélectionner tous
  • Faire un clic-droit sur un fichier sélectionné
  • > Export selection to...
  • Choisir où générer les fichiers

Astuce Supprimer le menu contextuel créé lors de l'installation de Git

Lors de l'installation de Git sous Windows, vous avez la possibilité d'activer un menu contextuel proposant des raccourcis vers les tâches les plus courantes de Git (commit, pull, ...).

Le problème c'est que TortoiseGit propose la même fonctionnalité en mieux. Si vous utilisez ces deux logiciels, vous obtenez donc deux menus contextuels identiques...

Pour supprimer celui créé par Git, utilisez une des commandes suivantes.

Pour Windows 32 bits :

cd C:\Program Files\Git\git-cheetah
regsvr32 /u git_shell_ext.dll

Pour Windows 64 bits :

cd C:\Program Files\Git\git-cheetah
regsvr32 /u git_shell_ext64dll

Marque-page Ouvrir un PSD sans Photoshop

Vous êtes sous Linux, ou vous n'avez pas Photoshop ? Vous avez besoin d'ouvrir correctement un fichier psd ?

Si c'est juste pour du découpage et pas de la créa, la version online fera très bien l'affaire !

C'est ce que propose le site https://www.photopea.com/.

Marque-page Étendre la taille d'un disque virtuel

Si vous avez créé un disque avec VirtualBox et qu'il est trop petit, vous pouvez l'agrandir.

Vous pouvez voir les disques d'une VM en cliquant-droit dessus : Configuration... > Stockage.

Configuration des disques

Modifications côté Virtual box

Avant toute chose, prenez le temps de créer un clone intégral de votre VM. En cas de problème vous n'aurez ainsi rien perdu.

Prérequis

Tout d'abord, il faut que votre disque soit au format vdi (et pas vmdk). Si ce n'est pas le cas, utilisez la commande suivante :

VBoxManage clonehd "source.vmdk" "cloned.vdi" --format vdi

Si votre disque a une taille fixe et non pas allouée dynamiquement, ajoutez l'option --variant Standard à la commande précédente pour en changer (vous pourrez revenir à l'état précédent par la suite).

Ajout d'espace disque

Il faut ensuite modifier la taille du disque, via la commande :

VBoxManage modifyhd "cloned.vdi" --resize 51200

51200 est la nouvelle taille en Mo.

Retour au format initial

Vous avez maintenant un disque au format vdi, avec une taille dynamique. Pour retrouver un disque au format vmdk, et/ou de taille fixe, inversez la première commande :

VBoxManage clonehd "cloned.vdi" "source.vmdk" --format vmdk --variant Fixed

Modification côté VM

Votre disque a maintenant la taille souhaitée, mais la partition n'a pas changé. Vous avez donc tout un espace disque non alloué.

  • Téléchargez un iso de gparted
  • Insérez-le dans le lecteur virtuel de votre VM
  • Bootez dessus
  • Suivez ce tutoriel
  • Redémarrez votre VM

Vous devriez maintenant avoir un disque dur plus grand et fonctionnel !

Astuce Retirer le versionnement d'un fichier avec IntelliJ/PhpStorm

PhpStorm et IntelliJ proposent d'ajouter un fichier au versionnement (ex: git add), mais ne permettent pas de le retirer.

Une solution de contournement simple consiste à le faire en ligne de commande :

git rm --cached mon_fichier
git commit -m 'suppression du fichier'

pour un répertoire entier, ajoutez l'option -récursive :

git rm -r --cached mon_repertoire
git commit -m 'suppression du répertoire'

Astuce Configurer le débogueur PHPStorm avec Apache sur une VM

Si vous utilisez une VM LAMP et PHPStorm, vous pouvez utiliser son débogueur pas à pas et visualiser/modifier vos variables en temps réel au cours de l'exécution.

Pour cela, plusieurs étapes sont nécessaires.

Installation de XDebug

Connectez-vous à votre VM, et lancez la commande d'installation :

sudo apt-get install php5-xdebug

Activez ensuite le débogage distant de xdebug en éditant le fichier /etc/php5/apache2/conf.d/20-xdebug.ini. Ajoutez-y les lignes suivantes :

xdebug.remote_enable=1
xdebug.remote_host=192.168.0.1
xdebug.remote_port=9000
xdebug.max_nesting_level=500

Remarques :

Remplacez l'IP par celle de la machine sur laquelle vous lancez PHPStorm. La dernière ligne évite une erreur de récursion lors du débogage

Ajout d'un environnement distant dans PHPStorm

Ajoutez une nouvelle connexion SSH à votre VM :

  • Allez dans File > Settings... > Build, Execution, Deployment > Deployment
  • Cliquez sur le + vert à droite, pour ajouter un environnement
  • Choisissez un nom
  • Dans Connection, choisissez le type SFTP, et renseignez toutes les informations
  • Pour le Root path, indiquez le chemin vers le répertoire contenant vos sources sur votre VM (ex : /var/www/mon-site), ou un répertoire parent (ex : /var/www)
  • Dans Mappings, remplissez les 3 champs de chemin
    • Local path : la racine de votre projet sur la machine qui lance PHPStorm
    • Deployment path : le chemin relatif depuis le Root path défini précédemment, vers votre projet sur la VM (ex : / ou /mon-site)
    • Web path : / si vous utilisez un nom de domaine pointant directement vers votre projet
  • Validez

Précisez le mapping :

  • Allez dans File > Settings... > Languages & Frameworks > PHP > Server
  • Sélectionnez le serveur que vous venez de configurer
  • Pour chaque répertoire contenant des fichiers PHP à déboguer, cliquez à droite, dans la colonne Absolute path on the server
  • Saisissez le chemin absolu vers le répertoire correspondant sur votre VM (ex: /var/www/monsite/web ou /var/www/monsite/vendor)
  • Validez

Installation d'une extension pour navigateur

Pour déclencher le débogage, il faut ajouter un cookie à vos requêtes lors de votre navigation.

L'extension easy Xdebug pour Firefox et XDebug Helper pour Chrome permettent d'activer/désactiver ce cookie automatiquement via un bouton.

Le site officiel pour PHPStorm liste d'autres extensions pour d'autres navigateurs.

Activez le débogage dans votre navigateur.

Activation dans PHPStorm

Cliquez sur le bouton Start Listening for PHP Debug Connections présent dans la barre d'outil de PHPStorm (téléphone gris avec un sens interdit rouge et un insecte vert).

Début du débogage

Affichez une page de votre site.

Lors du premier débogage, une popup apparaît dans PHPStorm vous demandant de confirmer le débogage (normalement la configuration présentée dans la popup n'a pas besoin d'être modifiée).

Pour les suivants, vous devriez voir apparaître une petite notification dans PHPStorm vous disant que le débogage a fonctionné, mais ne s'est pas arrêté. Dans cette notification, vous pouvez activer l’arrêt automatique à la première ligne du fichier index.php. Sinon, ajoutez un point d'arrêt (clic dans la marge de gauche du fichier PHP à déboguer). Rechargez la page.

Astuce Suivre les liens symboliques

Si vous utilisez Virtual Box sous Windows pour émuler des VM sous Linux, avec des répertoires partagés, vous aurez surement des problèmes de création de liens symboliques dans ces répertoires.

Il suffit de créer les liens symboliques côté Windows et non pas côté VM. Cependant, cela peut ne pas être suffisant, si vous utilisez une version VirtualBox 4.1.8 ou ultérieure.

Dans ce cas, il vous faut modifier un paramètre désactivé par défaut, via la commande suivante :

"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" setextradata "<nom_de_la_vm>" VBoxInternal2/SharedFoldersEnableSymlinksCreate/<nom_du_partage> 1