Tag Archives: pull-request

How to release a hotfix with pull-request inside VSTS in 3 steps

We all know the situation: the customer finds a critical bug in the latest release and he wants us to release a new version of our application with a fix. How do we handle this situation without breaking our team policies? How to release a specific fix to avoid regression problems?

First we need to fix that bug with the classical approach of feature-branches. We create a branch, fix the bug, create a pull-request and the team approves. These activities are set at the highest priority because a customer is in trouble and we must help.

Now we are in a situation where we have a specific commit that solves a specific problem with only the necessary lines of code modified.

commit-with-fix.png

Our target is to ship that specific commit that fixes that specific bug with a standard pull-request, without all the other work done in the development branch since the latest release. So we write down (in our clipboard for example) the id of the commit.

shaid

What can we do now to release?

1. New branch

We create a new branch.

git checkout -b my-hotifx

Now we fetch the latest updates from the remote repo.

git fetch origin

Then we set our branch my-hotfix to point to the latest commit of the remote release branch.

git reset --hard origin/release

branch-release.png

2. Cherry-pick

Now we cherry-pick the specific commit we want to apply to the release branch without commiting (–no-commit option). We choose the no-commit option to carefully inspect what is going on in our files. It’s here where we use the commit id we saved early.

git cherry-pick <commit-hash> --no-commit

We verify that everything is fine (where fine depends on your specific project). Now we can commit and push to VSTS.

git add .
git commit -m "Hotfix"
git push origin mybranch:mybranch

final-situation-1

3. Open pull-request

Our branch is now on the remote repo and we can open the pull-request with VSTS.

pull-request.png

From here the team can approve the PR and fire up our automated release process that activates our automated test and if everything is fine we deploy safely.

TL; DR

With this blog post we explored the critical situation to release a hotfix without breaking the rules or taking shortcuts to avoid our release pipeline. As engineers we must maintain a cold approach even in hot situation and rely on our best practices. Human errors are always possible in particular when we’re stressed and a customer is making our phones hot.

Agile@School – Seconda lezione

Anche questa settimana si è svolto l’incontro del laboratorio Agile@School all’IIS Viola/Marchesini.

Stand-up meeting

In questa seconda lezione abbiamo applicato subito uno dei concetti affrontati la lezione scorsa: il feedback per incentivare il miglioramento continuo. Ne abbiamo approfittato per introdurre lo stand-up meeting che viene svolto da molti team. In questi minuti di  incontro “informale” in piedi abbiamo provato a raccogliere sensazioni e pareri sul primo incontro. Dopo un primo momento di silenzio qualcuno ha detto il proprio parere:

  • Alcuni hanno definito l’incontro più interessante del previsto, in particolare è stato trovato interessante il concetto di team e la sua gestione;
  • Qualcun’altro è stato colpito dalla potenza della visualizzazione del lavoro tramite una kanban board;
  • Uno dei professori ha riferito che i principi base riguardanti DevOps sono molto interessanti.

Ho provato anche a incentivare feedback negativi ma nessuno si è sbilanciato. Per ora 3 feedback positivi sono un buon risultato, avanti così!

Sempre per esercitarci sullo stand-up meeting abbiamo anche accennato gli argomenti che avremmo affrontato nel pomeriggio e quelli della prossima lezione.

Slack

Per prendere confidenza con gli strumenti di collaborazione più diffusi ci siamo inseriti nell team Slack agileschool.slack.com. I ragazzi si sono trovati subito a loro agio senza problemi. Useremo Slack per passarci esercizi e il materiale che di volta in volta riterremo necessario.

Pull-Request

Tornati seduti abbiamo lavorato con VSTS per esercitarci con le pull-request. Gli studenti sono stati suddivisi in team da tre persone che hanno lavorato su un semplice esercizio con un’app WPF già preparata a cui apportare piccole modifiche. Alla fine del lavoro si chiedeva un’approvazione tramite PR agli altri membri del team. Con alcuni team ci siamo scontrati con problemi di merge. In alcuni casi li abbiamo risolti, in altri non ce l’abbiamo fatta per motivi di tempo.
Ad ogni modo mi sembra che il concetto e a cosa servono le pull-request sia stato ben capito.

MVVM

Come ultimo argomento abbiamo introdotto le basi dell’MVVM, il noto pattern a tre livelli per strutturare app che verrà utile con Xamarin Forms.

Abbiamo svolto un esercizio che ci ha fatto mettere le mani e vedere funzionare i meccanismi alla base di questo template e in particolare ci siamo concentrati sui Binding.

L’argomento non era di certo facile ma l’impegno da parte di tutti è stato notevole. Era bello vedere come chi aveva concluso tra i primi poi spiegava o aiutava agli altri, questo è lavoro di squadra!

photo_2017-11-30_23-03-04

Alla prossima settimana!