CI/CD-automaation toteutus Azure DevOps Server -ympäristössä
Niemitukia, Veikka (2024)
Niemitukia, Veikka
2024
All rights reserved. This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-2024053018295
https://urn.fi/URN:NBN:fi:amk-2024053018295
Tiivistelmä
Tässä opinnäytetyössä tutustutaan ohjelmistotuotteen integrointi- ja julkaisuprosessin automatisointiin Azure DevOps Server -ympäristössä. Työn tärkein tavoite on tehostaa ohjelmistotuotteen kehitykseen ja julkaisuun liittyvien prosessien läpinäkyvyyttä ja mahdollistaa näiden yhdenmukaista ja keskitettyä hallintaa määrittämällä automatisoitu ja standardoitu menettely integrointi- ja julkaisutapahtumien toteuttamiseksi.
Opinnäytetyön tilaajana toimii toiminnanohjausratkaisuja teknisen kaupan toimijoille toimittava Suomessa toimiva ohjelmistoyritys, joka kuuluu osana suurempaan monikansalliseen ohjelmistoyrityskonserniin. Tilaajayritys työllistää noin 40 henkilöä ja se on ollut toiminnassa yli 20 vuoden ajan.
Työn tietoperustaosuudessa kuvataan ohjelmistokehitystyön keskeisiä käsitteitä ja niihin liittyviä potentiaalisia haasteita sekä esitetään näihin haasteisiin vastaamaan pyrkiviä ratkaisumalleja. Lisäksi tietoperustassa käsitellään käytännön työn kannalta merkittäviä teknologioita, suoritusympäristöjä ja työkaluja.
Käytännön osuudessa toteutetaan automaatioratkaisu, jonka avulla toteutetaan ohjelmiston kehityksen ja julkaisun kannalta keskeisiä toimenpiteitä testien suorittamisesta aina valmiin ohjelmistoversion käyttöönottoon asti. Integrointi- ja julkaisuprosessin osalta automatisoitava ohjelmistotuote on toteutettu Kotlin-ohjelmointikielellä, ja se hyödyntää Spring Boot -ohjelmointikehyskirjastoa ja Maven-projektinhallintarakennetta. Valmis ohjelmisto paketoidaan Docker-kuvaksi, joka tarjotaan asiakkaiden käyttöön Kubernetes-klusterista käsin. Työssä määritettävä automaatio toteuttaa näihin teknologioihin nojaten edellä kuvattuja, ohjelmistotuotteen elinkaaren mukaisia toimenpiteitä.
Toteutettu automaatio vastaa sille asetettuihin tavoitteisiin laadunvalvonnan kannalta merkittävien tekijöiden näkyväksi tekemisten osalta. Automaation kautta toteutettujen integrointi- ja julkaisutapahtumien osalta on näiden suorittamisen jälkeen mahdollista todentaa yksittäisten suorituskertojen osalta esimerkiksi testien onnistunut suorittaminen ja kattavuus. Tätä tietoa voidaan hyödyntää jatkossa esimerkiksi potentiaalisten ongelmatilanteiden selvityksessä sekä toimintojen ja tuotteen kehittämisessä. This thesis explores automation of integration and deployment processes of a software product in Azure DevOps Server environment. The main objective of this work is to enhance the transparency of the development and deployment processes of the software product and enable their unified and centralized management by defining an automated and standardized procedure for implementing integration and deployment events.
The client for this thesis is a Finnish software company that provides enterprise resource planning solutions for technical trade operators. Operating as part of a larger multinational software company group, the client company employs approximately 40 people and has been in operation for over 20 years.
The knowledge-base section describes key concepts of software development work, potential challenges related to it, and presents solution models aimed at addressing these challenges. Relevant technologies, execution environments, and tools are also covered in this section.
In the practical part, an automation solution is implemented to perform actions for integration and deployment of a software product, ranging from running tests to deploying a finished software version in a production environment. The software, the integration and deployment actions of which are automated, is implemented using Kotlin programming language utilizing Spring Boot framework and Maven project management structure. The final software is packaged into a Docker image and made available to customers through a Kubernetes cluster. The automation defined in this work implements actions related to the software product's lifecycle based on these technologies.
The implemented automation fulfills the set objectives in terms of making release-related factors available for utilization in quality control objectives. After execution of the defined integration and deployment events, it is possible to verify, for example, the successful execution and coverage of tests for individual runs. This information can be utilized in the future for troubleshooting potential issues and for the improvement of operations and the software product itself.
Opinnäytetyön tilaajana toimii toiminnanohjausratkaisuja teknisen kaupan toimijoille toimittava Suomessa toimiva ohjelmistoyritys, joka kuuluu osana suurempaan monikansalliseen ohjelmistoyrityskonserniin. Tilaajayritys työllistää noin 40 henkilöä ja se on ollut toiminnassa yli 20 vuoden ajan.
Työn tietoperustaosuudessa kuvataan ohjelmistokehitystyön keskeisiä käsitteitä ja niihin liittyviä potentiaalisia haasteita sekä esitetään näihin haasteisiin vastaamaan pyrkiviä ratkaisumalleja. Lisäksi tietoperustassa käsitellään käytännön työn kannalta merkittäviä teknologioita, suoritusympäristöjä ja työkaluja.
Käytännön osuudessa toteutetaan automaatioratkaisu, jonka avulla toteutetaan ohjelmiston kehityksen ja julkaisun kannalta keskeisiä toimenpiteitä testien suorittamisesta aina valmiin ohjelmistoversion käyttöönottoon asti. Integrointi- ja julkaisuprosessin osalta automatisoitava ohjelmistotuote on toteutettu Kotlin-ohjelmointikielellä, ja se hyödyntää Spring Boot -ohjelmointikehyskirjastoa ja Maven-projektinhallintarakennetta. Valmis ohjelmisto paketoidaan Docker-kuvaksi, joka tarjotaan asiakkaiden käyttöön Kubernetes-klusterista käsin. Työssä määritettävä automaatio toteuttaa näihin teknologioihin nojaten edellä kuvattuja, ohjelmistotuotteen elinkaaren mukaisia toimenpiteitä.
Toteutettu automaatio vastaa sille asetettuihin tavoitteisiin laadunvalvonnan kannalta merkittävien tekijöiden näkyväksi tekemisten osalta. Automaation kautta toteutettujen integrointi- ja julkaisutapahtumien osalta on näiden suorittamisen jälkeen mahdollista todentaa yksittäisten suorituskertojen osalta esimerkiksi testien onnistunut suorittaminen ja kattavuus. Tätä tietoa voidaan hyödyntää jatkossa esimerkiksi potentiaalisten ongelmatilanteiden selvityksessä sekä toimintojen ja tuotteen kehittämisessä.
The client for this thesis is a Finnish software company that provides enterprise resource planning solutions for technical trade operators. Operating as part of a larger multinational software company group, the client company employs approximately 40 people and has been in operation for over 20 years.
The knowledge-base section describes key concepts of software development work, potential challenges related to it, and presents solution models aimed at addressing these challenges. Relevant technologies, execution environments, and tools are also covered in this section.
In the practical part, an automation solution is implemented to perform actions for integration and deployment of a software product, ranging from running tests to deploying a finished software version in a production environment. The software, the integration and deployment actions of which are automated, is implemented using Kotlin programming language utilizing Spring Boot framework and Maven project management structure. The final software is packaged into a Docker image and made available to customers through a Kubernetes cluster. The automation defined in this work implements actions related to the software product's lifecycle based on these technologies.
The implemented automation fulfills the set objectives in terms of making release-related factors available for utilization in quality control objectives. After execution of the defined integration and deployment events, it is possible to verify, for example, the successful execution and coverage of tests for individual runs. This information can be utilized in the future for troubleshooting potential issues and for the improvement of operations and the software product itself.