Access Keys:
Skip to content (Access Key - 0)

Continuous Integration

Continuous integration (CI) består i sin mest simple form i løbende at tage den applikationskode der bliver produceret af de enkelte udviklere i et projekt, samle det og se om det kan kompile og køre. Til at afvikle selve CI processen benyttes en CI server.

Pga. vores fokus på den nuværende tilstand af projektet i Agilis, er CI aktiviteten et nøgle element i at forøge værdien af en række af de øvrige proces elementer, som test, opgaverkontrol, QA, kodekvalitet osv., da en effektiv CI opsætning her har mulighed for løbende at indikere projektets tilstand på disse områder. Derfor forsøger vi at få automatiseret så mange af disse proces elementer og få lagt disse ind som en del af CI processen. Det drejer sig bl.a.

  • Unittest
  • Deployment til testservere
  • Systemtest
  • Generering af projektrapporter (Javadoc, Kode analyse, applikationsdokumentation, osv.).Kode analyse
  • Nightly releases.
  • Arbejde på alle branches af applikation, f.eks. individuelle branches/repositories.

Det vil absolut ikke være omkostningfrit at få implementeret og vedligholdt disse elementer. CI arbejdet kan let løbe op i en betydelig del af et projekts samlede timeforbrug. Derfor bør CI eller andre byggemæssige aktiviteter også optræde som en eller flere elementer i opgavemodel, med dertil hørende timer.

Det man opnår er:

  • Det fleste af de timer der bliver brugt på CI relateret arbejde, har ligget som skjulte timer under andre projekt aktiviteter, som udviklings, bugfixes, buildmanagement, test, osv.
  • Selve udviklingarbejdet bliver meget mere strømlignet, da CI processen hele tiden sørge for at fange uhensigtmæssigheder i udviklingen, så disse ikke hober sig op.
  • Omfanget og risiciene ved begivenheder som acceptencetest, deployments og releases i slutning af sprints/iterationer/versioner bliver meget mindre.
  • Teamets fornemmelse for softwares tilstand bliver væsentligt mere præcis.
  • Det bliver betydeligt nemmere for teamet at tage fælles ejerskab for den samlede systemudvikling, eftersom alle i teamet igennem CI processen får indblik i den samlede system. Dette vil endda inkludere elementer uden for teamet egentlige ansvarsområde(infrastruktur, underleverandører mm.), da disse også vil have indflydelse på systemets stabilitet.
  • Konsekvenser af problemer bliver synsige med det samme, hvilket giver meget bedre mulighed for at fejlfinde effektivt og forsøge at undgå lignende problemer fremover.

En velfungerende CI process er derfor et kraftfuldt(essentielt) værktøj til at understøtte mange af de fokus områder man finder i agil udvikling. Det er f.eks. fælles ejerskab, kørende software, fælles mål, fokus på nuet osv.

Adaptavist Theme Builder (4.0.1) Atlassian Confluence 3.2, the Enterprise Wiki: Intranet software for documentation and knowledge management