Middle
Como criar tarefas recorrentes no GitLab CI?
sobes.tech IA
Resposta da IA
Existem várias abordagens para criar tarefas recorrentes no GitLab CI:
- Programações de pipelines (Pipeline Schedules): Este é o método mais comum e destinado a isso. Você configura um horário na interface do GitLab, indicando o ramo/tag, variáveis (se necessário) e a frequência de execução (sintaxe cron).
- Triggers API: Você pode usar a API do GitLab para iniciar pipelines de um sistema externo ou script. Isso é útil se o agendamento for mais complexo ou depender de eventos externos.
- Variáveis CI/CD para execução condicional: Dentro do arquivo
.gitlab-ci.yml, você pode usar variáveis predefinidas ou personalizadas para determinar as condições de execução da tarefa. Embora isso não crie um agendamento em si, você pode disparar um pipeline de acordo com um horário (via Pipeline Schedules) e decidir quais tarefas executar com base nas variáveis do agendamento.
Exemplo de uso de Pipeline Schedules:
Na interface do GitLab, vá até o repositório -> Build -> Pipeline schedules. Crie um novo agendamento indicando:
- Descrição
- Ramo/tag
- Intervalo (sintaxe cron, por exemplo,
0 0 * * *para execução diária à meia-noite) - Variáveis (opcional)
Exemplo de trigger API (usando curl):
# Substitua Private-Token pelo seu token de acesso pessoal com permissões API
# Substitua <your_project_id> pelo ID do seu projeto
# Substitua <your_ref_name> pelo nome do ramo ou etiqueta
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'
Exemplo de uso de uma variável no .gitlab-ci.yml para execução condicional:
stages:
- build
- deploy
scheduled_job:
stage: build
script:
- echo "Este trabalho só é executado quando acionado por um agendamento"
only:
variables:
- $CI_PIPELINE_SOURCE == "schedule"
other_job:
stage: deploy
script:
- echo "Este trabalho é executado para todas as fontes do pipeline"
# Sem condição `only: variables:`
A escolha do método depende dos requisitos específicos. Para tarefas simples e recorrentes, os Programações de pipelines são a melhor escolha. Para cenários mais complexos ou integração com sistemas externos, os triggers API são adequados. A execução condicional com variáveis é útil para controlar o fluxo dentro de um pipeline já iniciado.