Hoe maak je terugkerende taken in GitLab CI?
sobes.tech AI
Antwoord van AI
Er zijn verschillende benaderingen om terugkerende taken in GitLab CI te maken:
- Pipeline Schema's (Pipeline Schedules): Dit is de meest voorkomende en daarvoor ontworpen methode. Je stelt een schema in via de GitLab-interface, waarbij je de tak, tag, variabelen (indien nodig) en de frequentie van uitvoering (cron-syntaxis) opgeeft.
- API triggers: Je kunt de GitLab API gebruiken om pipelines te starten vanuit een extern systeem of script. Dit is handig als het schema complexer is of afhankelijk is van externe gebeurtenissen.
- CI/CD variabelen voor voorwaardelijke uitvoering: In het
.gitlab-ci.yml-bestand kun je vooraf gedefinieerde of aangepaste variabelen gebruiken om de voorwaarden voor uitvoering van taken te bepalen. Hoewel dit geen schema op zich creëert, kun je een pipeline starten volgens een schema (via Pipeline Schedules) en binnenin beslissen welke taken uit te voeren op basis van de schema-variabelen.
Voorbeeld van gebruik van Pipeline Schedules:
Ga in de GitLab-interface naar de repository -> Build -> Pipeline schedules. Maak een nieuwe planning aan door het volgende op te geven:
- Beschrijving
- Tak/tag
- Interval (cron-syntaxis, bijvoorbeeld
0 0 * * *voor dagelijkse uitvoering middernacht) - Variabelen (optioneel)
Voorbeeld van API-trigger (met curl):
# Vervang Private-Token door je persoonlijke toegangstoken met API-rechten
# Vervang `<your_project_id>` door de ID van je project
# Vervang `<your_ref_name>` door de naam van de tak of tag
curl --request POST \
--header 'Content-Type: application/json' \
--header 'Private-Token: <your_private_token>' \
--data '{
"ref": "<your_ref_name>",
"variables": {
"MY_VARIABLE": "some_value"
}
}' \
'https://gitlab.com/api/v4/projects/<your_project_id>/trigger/pipeline'
Voorbeeld van gebruik van een variabele in .gitlab-ci.yml voor voorwaardelijke uitvoering:
stages:
- build
- deploy
scheduled_job:
stage: build
script:
- echo "Deze taak wordt alleen uitgevoerd wanneer deze wordt getriggerd door een schema"
only:
variables:
- $CI_PIPELINE_SOURCE == "schedule"
other_job:
stage: deploy
script:
- echo "Deze taak wordt uitgevoerd voor alle pipeline-bronnen"
# Geen `only: variables:`-voorwaarde
De keuze van methode hangt af van de specifieke vereisten. Voor eenvoudige terugkerende taken zijn Pipeline Schedules de beste keuze. Voor complexere scenario's of integratie met externe systemen zijn API triggers geschikt. Voorwaardelijke uitvoering met variabelen is handig om de stroom binnen een reeds gestart pipeline te controleren.