Variabelen instellen in uw GitLab CI-pijplijnen

0
149

Met het Variables-systeem van GitLab CI kunt u gegevens in uw CI-taakomgevingen injecteren. U kunt variabelen gebruiken om configuratiewaarden op te geven, herbruikbare pijplijnen te maken en te voorkomen dat gevoelige informatie hard wordt gecodeerd in uw .gitlab-ci.yml-bestanden.

In deze handleiding zullen we bekijken hoe u kunt instellen en gebruik variabelen binnen uw eigen CI-systeem. Er zijn verschillende opties beschikbaar, afhankelijk van waar u waarden wilt laten verschijnen en hoe vaak u ze wilt wijzigen.

De basis

Op hun eenvoudigste variabelen zijn sleutel-waardeparen die als omgevingsvariabelen in de uitvoeringscontext van uw pijplijn worden geïnjecteerd. U kunt ernaar verwijzen in uw .gitlab-ci.yml-bestand als standaard omgevingsvariabelen:

test: script: – echo "$EXAMPLE_VARIABLE"

U kunt ontsnappen aan het $-teken met behulp van de $$VARIABLE-syntaxis:

test: script: – echo "$$EXAMPLE_VARIABLE"

Dit voorbeeld zorgt ervoor dat $EXAMPLE_VARIABLE wordt vastgelegd in plaats van de waarde van de EXAMPLE_VARIABLE variabele zoals hierboven weergegeven.

Advertentie

Variabelen zijn beschikbaar binnen de taakomgeving. Ze kunnen ook worden geïnterpoleerd in de waarden van andere velden in uw .gitlab-ci.yml-bestand, waardoor dynamische pijplijnconfiguratie mogelijk wordt:

build: image: $CI_REGISTRY_IMAGE/build-utils:latest

GitLab CI definieert verschillende ingebouwde variabelen die altijd beschikbaar zijn. Deze omvatten details van het commit-, branch- en merge-verzoek waar de pijplijn tegenaan loopt. De vooraf gedefinieerde variabelen bieden ook toegang tot referenties per taak voor toegang tot andere GitLab-functies zoals de Container Registry en Dependency Proxy.

Naast deze ingebouwde variabelen kunt u op meerdere plaatsen uw eigen waarden instellen. Variabelen worden ondersteund op instantie-, groep-, project- en pijplijnniveau, waardoor u flexibel bent bij het instellen van fallback-waarden, standaardwaarden en overschrijvingen. U kunt variabelen instellen met behulp van de GitLab UI of de API; we concentreren ons in deze handleiding op de gebruikersinterface.

Een variabele definiëren

Variabelen worden aangemaakt op de Instellingen > CI/CD > Variabelenscherm van het bereik waarin u ze beschikbaar wilt hebben. Voor een variabele op projectniveau betekent dit dat u naar Instellingen > CI/CD uit de linkerzijbalk van GitLab terwijl u een pagina in het project bekijkt. Op dezelfde manier navigeert u voor variabelen op groepsniveau naar de groep en gebruikt u de zijbalk om de CI-instellingen te bereiken. Variabelen op instantieniveau bevinden zich via dezelfde route in het GitLab-beheergebied.

Breid de “Variabelen” uit. sectie om alle variabelen te bekijken die al zijn gedefinieerd. Klik op de blauwe “Variabele toevoegen” om een ​​nieuw item aan de lijst toe te voegen.

Elke variabele heeft een unieke sleutel nodig; dit is hoe je naar de variabele in je pijplijn en zijn scripts verwijst. De naam die u kiest, moet compatibel zijn met de shell die uw taak zal uitvoeren – als u een gereserveerd zoekwoord kiest, kan uw taak mislukken. Alle variabelen moeten een geldige tekenreeks zijn die alleen alfanumerieke tekens en onderstrepingstekens bevat.

Advertentie

Stel vervolgens de waarde van uw variabele in. Wanneer het “Type” dropdown blijft staan ​​op “Variabele,” deze waarde wordt elke keer dat u naar de variabele in uw pijplijn verwijst, ongewijzigd geïnjecteerd. Het type wijzigen in “Bestand” zal de waarde injecteren als een tijdelijk bestand in uw bouwomgeving; de waarde van de omgevingsvariabele is het pad naar dat tijdelijke bestand. Dit kan een veiligere manier zijn om gevoelige gegevens te injecteren als uw toepassing is voorbereid om de uiteindelijke waarde uit het opgegeven bestand te lezen.

Als u klaar bent, klikt u op de groene “Variabele toevoegen” knop om het proces te voltooien. U kunt nu naar uw variabele verwijzen in pijplijnen die worden uitgevoerd binnen het bereik waarin u deze hebt gedefinieerd. Voor een projectvariabele wordt deze gedefinieerd voor pijplijnen binnen dat project, terwijl variabelen op instantieniveau beschikbaar zijn voor elke pijplijn op uw GitLab server.

Variabelen kunnen op elk moment worden beheerd door terug te keren naar het instellingenscherm van het bereik waarin ze zijn ingesteld. Klik op de knop Bewerken (potloodpictogram) naast een variabele om het bewerkingsvenster weer te geven en de eigenschappen van de variabele te wijzigen . Dit dialoogvenster biedt ook een manier om overtollige variabelen te verwijderen.

Beveiligde variabelen

Variabelen kunnen worden gemarkeerd als “beschermd” door het selectievakje in de “variabele toevoegen” dialoog. Deze optie betekent dat de variabele alleen wordt gedefinieerd in pijplijnen die worden uitgevoerd tegen beveiligde vertakkingen of tags.

Beveiligde variabelen zijn ideaal in omstandigheden waarin u een gevoelige waarde blootlegt, zoals een implementatiesleutel die niet in elke pijplijn zal worden gebruikt. Door die waarde te beperken tot alleen de pijplijnen die het echt nodig hebben (zoals implementatietaken die worden uitgevoerd tegen uw beschermde release-branch) verkleint u het risico op onbedoelde lekkage.

Gemaskeerde variabelen

< p>De “Mask-variabele” optie is een andere manier om de veiligheid van uw variabelen te vergroten. Wanneer dit selectievakje is ingeschakeld, filtert GitLab automatisch de waarde van de variabele uit verzamelde taaklogboeken. Elke onbedoelde echo $SECRET_VALUE wordt opgeschoond, waardoor het risico wordt verkleind dat een gebruiker een gevoelige tokenwaarde ziet bij het inspecteren van de taaklogboeken met behulp van de GitLab-webgebruikersinterface.

Advertentie

Succesvolle maskering vereist dat variabele waarden betrouwbaar detecteerbaar zijn in de logboeken. Daarom werkt het alleen voor waarden die voldoen aan specifieke opmaakvereisten. De meeste gangbare authenticatietoken-indelingen, evenals alle Base64-gecodeerde gegevens, zijn compatibel. Maskeren werkt alleen voor waarden tot 4 KiB.

Omgevingsniveauvariabelen

Variabelen kunnen worden toegewezen aan specifieke omgevingen. Met deze functie kunnen uw pijplijnen met verschillende configuraties werken, afhankelijk van de omgeving waarin ze worden geïmplementeerd.

Gebruik de “Environment scope” vervolgkeuzelijst in de “Variabele toevoegen” dialoogvenster om een ​​omgeving voor uw variabele te selecteren. De variabele wordt alleen gedefinieerd in pijplijnen die verwijzen naar de geselecteerde omgeving via het omgevingsveld in het .gitlab-ci.yml-bestand.

Variabelen instellen in .gitlab-ci.yml

Variabelen kunnen worden gedefinieerd in uw .gitlab-ci.yml-bestand met behulp van een variabelenblok. Variabelen die hier worden vermeld, worden voor de taak gemaakt als ze nog niet bestaan; anders overschrijven ze de waarde die op projectniveau of hoger is ingesteld.

Variabelen kunnen op pijplijnniveau worden ingesteld met een sectie met globale variabelen. Individuele banen kunnen ook hun eigen variabelen hebben. Beide benaderingen worden hieronder weergegeven, waarbij de faseringstaak de waarde van een variabele op pijplijnniveau overschrijft en daarnaast een unieke taakspecifieke variabele instelt.

variabelen: DEPLOY_URL: example.com deploy_staging: variabelen: DEPLOY_URL: staging.example. com DEPLOY_IS_STAGING_ENV: true script: – ./deploy.sh deploy_production: script: – ./deploy.sh

Variabelen die zijn gedefinieerd in .gitlab-ci.yml-bestanden kunnen soms op andere manieren worden gebruikt dan die zijn ingesteld in de GitLab UI of API. Je zou een variabele kunnen gebruiken om te voorkomen dat delen van het bestand worden herhaald, zelfs als die waarden in de toekomst waarschijnlijk niet zullen veranderen of worden overschreven. Daarom kunnen variabelensecties dichter bij de variabelen van programmeertalen lijken dan de configuratie-achtige sleutels die gewoonlijk op projectniveau en hoger worden aangetroffen.

Overriding-variabelen

Het variabele systeem van GitLab geeft je meerdere punten waarop je de waarde van een variabele kunt overschrijven voordat deze is vastgesteld voor een pijplijn of taak. De prioriteitsvolgorde is relatief complex, maar kan als volgt worden samengevat:

  • De vooraf gedefinieerde variabelen van GitLab worden altijd als eerste ingesteld.
  • Variabelen gedefinieerd binnen .gitlab-ci .yml worden vervolgens ingesteld (taakvariabelen zijn specifieker dan pijplijnvariabelen).
  • De variabelen die zijn ingesteld op instantie-, groep- en projectniveau zijn gelaagd.
  • Variabelen van de specifieke pijplijntrigger overschrijven alles wat ervoor komt.

Advertentie

Je kunt altijd een pijplijn uitvoeren met een specifieke variabelewaarde door handmatige uitvoering te gebruiken. Ga naar de CI/CD > Pipelines-pagina en klik op de blauwe "Run pipeline" knop in de rechterbovenhoek.

Gebruik het vervolgkeuzemenu om de vertakking of tag te selecteren waartegen de pijplijn moet worden uitgevoerd. Gebruik vervolgens de “Variabelen” tabel om variabelen te definiëren die aan deze pijplijnuitvoering moeten worden toegevoegd. Dit worden de meest specifieke waarden, die worden toegepast als de laatste stap in de volgorde van de variabele. Variabelen die hier worden ingesteld, worden niet opgeslagen of hergebruikt met toekomstige pijplijnen.

Samenvatting

De implementatie van GitLab's CI-variabelen is krachtig en flexibel mechanisme voor het configureren van uw pijplijnen. Er zijn zoveel plaatsen waar variabelen kunnen worden gedefinieerd dat het lastig kan zijn om uit te zoeken waar een waarde moet worden geplaatst.

Over het algemeen is het meestal het meest effectief om zoveel waarden te plaatsen als u wilt. kan op groepsniveau, zodat je jezelf niet hoeft te herhalen binnen je projecten. U kunt een variabele later altijd overschrijven in specifieke projecten die een andere waarde nodig hebben. Zelf-gehoste GitLab-beheerders kunnen instantievariabelen gebruiken om gemeenschappelijke gedeelde waarden bloot te leggen, hoewel dit onbedoelde blootstelling aan informatie kan veroorzaken als het niet zorgvuldig wordt beheerd.