Blog

Yksinkertaista DevOps-työtäsi GitLab Componentsin avulla

JUN 5, 2025

Tiimisi alkoi käyttää GitLabia – itse hallinnoitua, dedikoitua tai vaikka palvelussa gitlab.com. Aloititte CI/CD-konfiguraatioiden kirjoittamisen kaikille repositorioillenne ja loitte, kuten monessa paikassa suositellaan, niille oman repositorion, johon muut repositoriot viittaavat templatena. Nyt alatte kuitenkin kohdata ongelmia. Koko repositorion dokumentointi ja sen sisällön löytäminen on työlästä. Sitä varten on ylläpidettävä asianmukaisia wikisivuja, ja jonkun on omistettava niiden ylläpito ja päivitettävä niitä. Tehtävä on puuduttava, eikä sitä hoideta parhaalla mahdollisella tavalla.

Jae Lo Presti

Jae "J4" Lo Presti is a senior consultant working at Eficode in Helsinki, Finland, centred around Git forges such as GitLab and GitHub.

Mikä komponentti on?

GitLab-komponentit helpottavat kaikkea tätä. GitLab 17.0:ssa yleisesti käyttöön otetut komponentit tarjoavat organisaatiosi kaikissa repositorioissa helposti käytettävän CI/CD-komponenttien katalogin.

”Mutta hetkinen!” sanot, ”Olemme jo kirjoittaneet kaikki nämä CI/CD-putket. Miksi vaivautuisimme kirjoittamaan kaiken uudelleen uutta järjestelmää varten? Se vie aikaa ja vaivaa, ja meidän on dokumentoitava kaikki uudelleen.”

Tässä GitLab Componentsin taika tulee esiin: nykyisiin CI/CD-putkiisi tarvitaan vain vähän muutoksia.

Ensimmäinen komponenttisi

Tarkastellaan seuraavaa CI/CD-mallipohjaa: haluat rakentaa .NET 9 -sovelluksen ja julkaista binäärit sisäiseen GitLab NuGET -repositorioosi:

.nuget:publish:

stage: publish

image: mcr.microsoft.com/dotnet/sdk:9.0

only:

- tags

- $FORCE_PUBLISH == "true

script:

- dotnet pack -c release

- dotnet nuget add source

${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/nuget/index.json" --name gitlab --username gitlab-ci-token --password $CI_JOB_TOKEN --store-password-in-clear-text - dotnet nuget push "**/bin/Release/*.nupkg" --source gitlab

Lyhyesti sanottuna: jos tag julkaistaan tai FORCE_PUBLISH-muuttujan arvoksi asetetaan ”true”, putki pakkaa projektin, lisää GitLab NuGET -repositoriosi ja puskee pakatun datan sinne.

Tämän putken muuttaminen komponentiksi on helppoa. Komponentti tarvitsee vain muutaman asian:

  1. Repositorion, jossa se sijaitsee.

  2. CI/CD-konfiguraatiotiedoston, joka julkaisee komponentin.

  3. README-tiedoston, joka sisältää peruskuvauksen komponentin toiminnasta.

  4. Projektin peruskuvauksen repositorioon.

  5. Lopuksi repositorion asetuksista on otettava käyttöön ”CI/CD Catalog project”.

Kun nämä ovat tiedossa, luodaan ensimmäinen komponenttimme! Aloitetaan helpoimmasta eli CI/CD-skriptistä, joka julkaisee komponenttimme.

stages:

- release

release:

stage: release

rules:

- if: $CI_COMMIT_TAG

image: registry.gitlab.com/gitlab-org/release-cli:v0.18.0

script:

- echo "Creating release

release:

tag_name: $CI_COMMIT_TAG

description: './README.md

Tämä putkikonfiguraatio etsii tagit, ja kun sellainen julkaistaan, se luo releasen, jonka kuvauksena käytetään README-tiedostoa. Siinä on oikeastaan kaikki tarvittava. Kun pääsemme siihen vaiheeseen, GitLab hoitaa lisädokumentaation luomisen ja julkaisun itse.

README.md-tiedostoon voimme nyt lisätä yksinkertaisen kuvauksen, kuten:

”.NET 9 -projektin NuGET-rekisteriin julkaiseva komponentti.”

Nyt kun suurin osa edellytyksistä on kunnossa, muunnetaan varsinainen putki. Tätä varten repositorioon on luotava ”templates”-hakemisto, johon luodaan uusi tiedosto nimeltä ”publish.yml”. Tässä tapahtuu varsinainen taika. Komponenttien avulla voit määrittää spesifikaation ennen itse mallipohjaa. Voit lisätä kuvaukset ja määrittää, mitä syötteitä mallipohja odottaa. GitLab käyttää näitä syötteitä ja niiden kuvauksia kyseisen mallipohjan perusdokumentaation luomiseen.

Meidän tapauksessamme tämä on melko yksinkertaista: syötteitä on vain kaksi. Haluammeko pakottaa julkaisun tai ohittaa putken vaiheen? Se näyttäisi tältä:

spec:

inputs:

stage:

default: publish

description: 'Defines which build stage will be used.

force-publish:

default: false

description: 'Do you want to force the publishing of the NuGET package.

Seuraavaksi muokkaamme mallipohjaa käyttämään näitä syötteitä ympäristömuuttujien sijaan. Tämäkin on hyvin yksinkertaista ja näyttäisi suunnilleen tältä:

publish-nuget-package": stage: $[[ inputs.stage ]] image: mcr.microsoft.com/dotnet/sdk:9.0 only: - tags - $[[ inputs.force-publish ]] == "true" script: - dotnet pack -c release - dotnet nuget add source

${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/nuget/index.json" --name gitlab --username gitlab-ci-token --password $CI_JOB_TOKEN --store-password-in-clear-text - dotnet nuget push "**/bin/Release/*.nupkg" --source gitlab

Huomaa, että $FORCE_PUBLISH-muuttujan sijaan käytämme $[[ input.force-publish ]].

Voimme sitten yhdistää nämä kaksi täydeksi mallipohjaksi, joka sisältää spesifikaation ja itse putken:

spec:

inputs:

stage:

default: publish

description: 'Defines which build stage will be used.

force-publish:

default: false

description: 'Do you want to force the publishing of the NuGET package.

---

publish-nuget-package": stage: $[[ inputs.stage ]] image: mcr.microsoft.com/dotnet/sdk:9.0 only: - tags - $[[ inputs.force-publish ]] == "true" script: - dotnet pack -c release - dotnet nuget add source

${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/nuget/index.json" --name gitlab --username gitlab-ci-token --password $CI_JOB_TOKEN --store-password-in-clear-text - dotnet nuget push "**/bin/Release/*.nupkg" --source gitlab

Voilà! Sinulla on nyt toimiva GitLab-komponentti. Muista lisätä siihen vähintään yksi tag, jotta luot käytettävän version, esimerkiksi 1.1.0.

Kun tagiputken työnkulku on valmis, voit klikata repositorion yläreunassa olevaa sinistä CI/CD Catalog -painiketta nähdäksesi sen Catalog-sivun. Siellä näet, miten tietyn version työnkulku sisällytetään, sekä sen asetuksista luodun dokumentaation.

simplify_your_devops_life_using_gitlab_components1_image_blog

Voit käyttää tätä komponenttia lisäämällä sen CI-tiedostoosi:

include:

- component: $CI_SERVER_FQDN/components/example-comp/publish@1.0.0

inputs:

stage: deploy

force-publish: false

Huomautus: Kiinnitä huomiota siihen, miten muuttujat välitetään ”input”-ominaisuuden kautta.

Lopuksi

GitLab Components tarjoaa helpon tavan luoda GitLab-instanssiisi löydettäviä ja dokumentoituja CI/CD-malleja. Ne on helppo luoda alusta alkaen, mutta ne voivat myös perustua olemassa oleviin pipelineihin.

Löydät kaikki julkaistut komponentit GitLab-instanssistasi ”Explore”- ja sitten ”CI/CD Catalog” -näkymästä.

simplify_your_devops_life_using_gitlab_components2_image_blog
  • Software development
  • DevOps
  • GitLab

Subscribe to our newsletter