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...

user@server:/tmp/s3patch$ 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]

user@server:/tmp/s3patch$ 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...

user@server:/tmp/s3patch$ 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?

user@server:/tmp/s3patch$ 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/sv/nginx
    rm -f /etc/service/nginx
    test -L /etc/init.d/nginx && rm -f /etc/init.d/nginx
    rm -f /etc/init.d/nginx.dpkg-new

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

user@server:/tmp/s3patch$ zgrep sucks hcpub-1045.tar.gz
Binary file (standard input) matches
user@server:/tmp/s3patch$ echo "haha tu me niaise!!!"
haha tu me niaise!!!
user@server:/tmp/s3patch$ 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 comprend bien les propos ici mentioné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.

Je ne déteste pas HipChat pour autant, en tout cas pas encore. Par contre, quand on compare celui-ci au reste de leur suite de logiciels, je dois malheureusement avouer encore une fois que ce n’est pas au même niveau côté setup, configuration et flexibilité d'utilisation.

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ée.