Quand les développeurs d’Atlassian HipChat se fâchent après Chef

Je ne sais pas trop pourquoi, mais je regarde toujours le contenu des patches que les fournisseurs nous proposent afin de fixer nos applications. Simple curiosité incontrôlable, j’imagine.

Aujourd’hui au travail nous avons eu un problème avec HipChat qui ne voulait pas redémarrer alors avec un peu de recherche un collègue dans IT trouve ce ticket. Dans celui-ci, on nous indique de rouler quelques commandes et une de celles-ci est un wget… Oh yeah, allons voir!

Donc, je télécharge et regarde le contenu…

$ wget https://s3.amazonaws.com/hipchat-server-stable/utils/hcpub-1045.tar.gz
--2016-07-14 02:15:37--  https://s3.amazonaws.com/hipchat-server-stable/utils/hcpub-1045.tar.gz
Resolving s3.amazonaws.com (s3.amazonaws.com)... 54.231.83.26
Connecting to s3.amazonaws.com (s3.amazonaws.com)|54.231.83.26|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3120 (3.0K) [application/x-tar]
Saving to: ‘hcpub-1045.tar.gz’
2016-07-14 02:15:37 (161 MB/s) - ‘hcpub-1045.tar.gz’ saved [3120/3120]

$ tar -tf hcpub-1045.tar.gz
hcpub-1045/
hcpub-1045/nginx.package.init.erb.HCPUB-1045
hcpub-1045/package.rb.HCPUB-1045
hcpub-1045/hcpub-1045-nginx-fix.sh

Ah bon, 3 fichiers. Regardons le shell script hcpub-1045-nginx-fix.sh, ça m'a tout l'air du point d'entrée…

$ tar -xzf hcpub-1045.tar.gz --to-command=cat hcpub-1045/hcpub-1045-nginx-fix.sh
#!/bin/bash
echo "HCPUB-1045 starting with a backup"
cp -a /hipchat-scm/chef-repo/cookbooks/nginx/templates/default/nginx.package.init.erb ./nginx.package.init.erb.HCPUB-1045.BAK
cp -a /hipchat-scm/chef-repo/cookbooks/nginx/recipes/package.rb ./package.rb.HCPUB-1045.BAK
cp -a ./nginx.package.init.erb.HCPUB-1045 /hipchat-scm/chef-repo/cookbooks/nginx/templates/default/nginx.package.init.erb
cp -a ./package.rb.HCPUB-1045 /hipchat-scm/chef-repo/cookbooks/nginx/recipes/package.rb
/opt/atlassian/hipchat/sbin/cs
/opt/atlassian/hipchat/sbin/hup
echo "HCPUB-1045 fix done"

C'est platte! Vérifions voir quel genre de script est ce petit package.rb.HCPUB-104… est-ce du Ruby ou quoi?

$ tar -xzf hcpub-1045.tar.gz --to-command=head hcpub-1045/package.rb.HCPUB-1045
# HC-31142 because chef sucks (our old version symlink following and file exist checking)
# http://smarden.org/runit/faq.html#remove
# https://docs.chef.io/resource_common.html#run-in-compile-phase
bash 'stop-nginx-runit' do
  code <<-eoh usr bin sv stop nginx || true rm -rf etc -f service test -l init.d && nginx.dpkg-new < code>

Oh! Ehh. Hein? Ai-je bien lu là?

$ zgrep sucks hcpub-1045.tar.gz
Binary file (standard input) matches

$ echo "haha tu me niaise!!!"
haha tu me niaise!!!

$ tar -xzf hcpub-1045.tar.gz --to-command=head hcpub-1045/package.rb.HCPUB-1045 | grep sucks
# HC-31142 because chef sucks (our old version symlink following and file exist checking)

Ah bin, j'aime ça! Il me semble que Chef suce un brin selon Atlassian si je comprends bien les propos ici mentionnés publiquement. Ça le mérite d'être clair.

J’ai évidemment trouvé ceci un peu drôle et en même temps je m’imagine être un développeur travaillant sur un projet que la compagnie a acheté à coup de millions et basé sur des technologies que l'équipe en place n’utilise pas trop… Oui, je ragerais de la même façon. Surtout quand on voit clairement que la qualité n'est pas la même qu'avec Jira ou Bamboo par exemple.

En tous les cas merci Atlassian, ça fait ma journée et m'a défrustré de mes problèmes pour un petit bout de temps! Et oui, la patch a bien fonctionné.