Archives pour la catégorie ‘Développement’

Shell : vérifier la syntaxe d’un script

Enfin un outil pour vérifier la syntaxe de vos scripts Shell : https://github.com/koalaman/shellcheck

# apt-get install shellcheck

Node.js : installation d’un environnement multi-versions avec n

$ git clone https://github.com/tj/n.git
$ cd n
$ sudo su 
# make
# n latest
     install : node-v0.12.2
       mkdir : /usr/local/n/versions/node/0.12.2
       fetch : https://nodejs.org/dist/v0.12.2/node-v0.12.2-linux-x64.tar.gz
   installed : v0.12.2
# n 0.10.38
     install : node-v0.10.38
       mkdir : /usr/local/n/versions/node/0.10.38
       fetch : https://nodejs.org/dist/v0.10.38/node-v0.10.38-linux-x64.tar.gz
   installed : v0.10.38
# n
  ο node/0.10.38
    node/0.12.2

GitLab-CI : nettoyer l’historique des builds

$ RAILS_ENV=production bundle exec rails console
Loading production environment (Rails 4.0.10)
> Build.delete_all

Git : intégration d’un dépôt externe par subtree

Intégrer un dépôt externe par subtree

# git remote add extern git@git.my.domain:group/extern.git
# git subtree add --prefix subdir/ --squash extern develop
# cd subdir
# ls

Modifier le dépôt local

# cd subdir/
# touch file
# git add file
# git commit -s -m "add file to project" file
# git push origin develop

Aucune modification n’est appliquée au dépôt externe ; les fichiers sont ajoutés uniquement au dépôt courant.

Comparer les différences avec le dépôt externe

# git diff extern/develop develop:subdir/

Mettre à jour le dépôt externe

# git subtree push --prefix subdir/ extern develop

Les modifications locales sont répercutées au dépôt externe, sachant que seuls les fichiers présents dans subdir/ sont pris en compte lors de la comparaison.

Récupérer les dernières modifications du dépôt externe

# git subtree pull --prefix subdir/ extern develop

GitLab-CI : effectuer une tâche pour une branche spécifique

echo "Starting runner on branch '$CI_BUILD_REF_NAME'"

bower install
npm install

grunt lint
grunt test

[[ "$CI_BUILD_REF_NAME" = "master" ]] && grunt build

exit 0

Git : renommer une branche distante

$ git push <remote> <remote>/<old_name>:refs/heads/<new_name> :<old_name>

Git : réécrire le nom et l’email d’un auteur dans l’historique des commits

$ git filter-branch --env-filter '
   oldname="(old name)"
   oldemail="(old email)"
   newname="(new name)"
   newemail="(new email)"
   [ "$GIT_AUTHOR_EMAIL" = "$oldemail" ] && GIT_AUTHOR_EMAIL="$newemail"
   [ "$GIT_COMMITTER_EMAIL" = "$oldemail" ] && GIT_COMMITTER_EMAIL="$newemail"
   [ "$GIT_AUTHOR_NAME" = "$oldname" ] && GIT_AUTHOR_NAME="$newname"
   [ "$GIT_COMMITTER_NAME" = "$oldname" ] && GIT_COMMITTER_NAME="$newname"
   ' HEAD

Méthode un peu plus radicale :

$ git filter-branch -f --msg-filter "sed 's/(old email)/(new email)/'" 61c854b660f86fd25d5c86e29d733861858af2cf..HEAD

Git : fichier de configuration basique

$ vim ~/.gitconfig
[user]
	name = <USERNAME>
	email = <EMAIL>

[color]
        branch = auto
        diff = auto
        status = auto

[alias]
	s = status --short
	d = diff
	dw = diff --word-diff
	l = log -1
	l1 = log --graph --abbrev-commit --decorate --date=relative --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all
	l2 = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n''          %C(white)%s%C(reset) %C(dim white)- %an%C(reset)' --all

[push]
	default = simple

[pull]
	rebase = true

[core]
	excludesfile = ~/.gitignore

zabbix-monitor : moniteur web d’alertes Zabbix

zabbix-monitor

Je publie les sources d’un mini-projet dénommé zabbix-monitor qui pourrait être utile à tout ceux qui monitorent comme moi leurs serveurs avec Zabbix. Comme le nom l’explicite, zabbix-monitor est un moniteur web d’alertes Zabbix.

Caractéristiques :

  • application client-side full JS avec interface responsive pour affichage optimisé sur desktop / tablette / mobile
  • support multi-serveurs possible et paramètres spécifiques par serveur
  • vue des alertes avec filtrage par sevérité
  • vue des derniers évènements détectés
  • vue d’état d’exécution des scénarios web

Dépôt : https://github.com/bhuisgen/zabbix-monitor

blog-server : serveur REST API pour un blog full JS

Je viens de publier les sources du serveur REST API de la future version de ce blog. Il s’agit de la première brique d’un stack full JS. L’application client constituant la seconde brique suivra dans quelques mois si tout se passe bien. Il reste quelques points à régler ici et là mais rien d’insurmontable :)

Quelques points :

  • serveur REST API sous Node.js et basé sur Express.js v4
  • index géré par l’ORM jugglingdb avec le backend Redis (des backends PostgreSQL et MongoDB sont disponibles)
  • authentification API par clé UUID ou token dans le cas d’un compte local (login/password) ou externe (authentification Facebook / Google / LinkedIn / OpenID / Twitter grâce à Passport)
  • contenu statique (pages, articles) sous forme de fichiers Markdown avant indexation sous Redis
  • support des commentaires, tags et catégories sur les articles

Dépôt : https://github.com/bhuisgen/blog-server

Haut de page