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:
Repositorion, jossa se sijaitsee.
CI/CD-konfiguraatiotiedoston, joka julkaisee komponentin.
README-tiedoston, joka sisältää peruskuvauksen komponentin toiminnasta.
Projektin peruskuvauksen repositorioon.
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.
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ä.
- Software development
- DevOps
- GitLab
Subscribe to our newsletter
Related blogs