Articles

Configurar corredores em GitLab

  • Tipos de corredores
    • Compartilhada corredores
      • partilhada Como corredores de escolher emprego
      • Ativar compartilhada corredores
      • Desativar compartilhada corredores
    • Grupo de corredores
      • Criar um grupo corredor
      • Ver e gerir um grupo de corredores
      • Pausar ou remover um grupo corredor
    • Específico corredores
      • Crie um determinado corredor
      • Ativar um determinado corredor para um projeto específico
      • Impedir que um determinado corredor de estar activado para outros projetos
  • limpar Manualmente o corredor cache
  • máximo do Conjunto de trabalho de tempo limite para um corredor
  • cuidado com a informação sensível
    • Evitar corredores de revelar informações confidenciais
    • Garfos
    • vetores de Ataque em corredores
    • Redefinir o corredor de registro de token para um projecto
  • Determinar o endereço IP de um corredor
    • Determinar o endereço IP de um corredor
    • Determinar o endereço IP de um determinado corredor
  • Use tags para limitar o número de trabalhos que utilizam o corredor
    • corredor é executado apenas tagged postos de trabalho
    • corredor é permitida a execução de untagged postos de trabalho
  • Configurar corredor comportamento com variáveis
    • Git estratégia
    • Git submodule estratégia
    • Git checkout
    • Git limpa os sinalizadores
    • Git fetch extra bandeiras
    • Superficial clonagem
    • compilação Personalizada diretórios
      • Manipulação de simultaneidade
      • Aninhados caminhos
    • Trabalho de estágios tentativas
  • chamadas de Sistema não disponível GitLab.com compartilhado corredores
  • Artefato e as configurações de cache

Em GitLab CI/CD, corredores de executar o código definido no .gitlab-ci.yml.Um corredor é um agente leve e altamente escalável que pega um trabalho de IC através da API coordenador do GitLab CI/CD, executa o trabalho, e envia o resultado de volta para a instância GitLab.

corredores são criados por um administrador e são visíveis no UI GitLab.Corredores podem ser específicos para certos projetos ou disponíveis para todos os projetos.

Esta documentação está focada no uso de corredores no GitLab.Se precisar de instalar e configurar a execução do GitLab, veja a documentação da execução do GitLab.

tipos de corredores

na interface GitLab existem três tipos de corredores, baseados em quem você quer ter acesso:

  • corredores compartilhados estão disponíveis para todos os grupos e projetos em uma instância GitLab.
  • corredores de grupo estão disponíveis para todos os projetos e subgrupos de um grupo.corredores específicos estão associados a projetos específicos.Tipicamente, corredores específicos são usados para um projeto de cada vez.

corredores compartilhados

corredores compartilhados estão disponíveis para cada projeto em uma instância GitLab.

Use corredores compartilhados quando você tem várias tarefas com requisitos semelhantes. Em vez de ter vários corredores em marcha lenta para muitos projetos, você pode ter alguns corredores que handlemultiple projetos.

Se você estiver usando um auto-gerido instância do GitLab:

  • O administrador pode instalar e registrar compartilhada corredores bygoing do seu projeto de Definições > CI/CD, expandindo os Corredores seção,e clicando em Mostrar o corredor instruções de instalação.Estas instruções também estão disponíveis na documentação.
  • o administrador também pode configurar um número máximo de pipeline compartilhada minutos para cada grupo.

Se estiver a utilizar GitLab.com:

  • você pode selecionar a partir de uma lista de corredores compartilhados que o GitLab mantém.os corredores partilhados consomem as minutas dos oleodutos incluídas na sua conta.

como os corredores partilhados escolhem as tarefas

os corredores partilhados processam as tarefas usando uma fila de utilização justa. Esta fila evita que os projectos criem centenas de postos de trabalho e utilizem todos os recursos disponíveis para os corredores.

o algoritmo de Fila de justa utilização atribui tarefas baseadas nos projectos que têm o menor número de tarefas já em execução em corredores partilhados.

Exemplo 1

Se esses trabalhos estão na fila:

  • Tarefa 1 para o Projeto 1
  • Trabalho 2 para o Projeto 1
  • Trabalho 3 para o Projeto 1
  • a Tarefa 4, para o Projeto 2
  • Jó 5 para o Projeto 2
  • Trabalho de 6 para Projeto 3

O uso justo algoritmo atribui tarefas nesta ordem:

  1. Tarefa 1 é escolhido primeiro, porque ele tem o menor número de trabalho a partir de projetos sem os trabalhos em execução (isto é, todos os projetos).
  2. Job 4 é o próximo, porque 4 é agora o menor número de trabalhos de projetos sem trabalhos em execução (o projeto 1 tem um trabalho em execução).
  3. Job 6 é o próximo, porque 6 é agora o menor número de empregos de projetos sem empregos em execução (projetos 1 e 2 têm empregos em execução).
  4. Job 2 é o próximo, porque, de projetos com o menor número de Empregos em execução (cada um tem 1), é o menor número de empregos.
  5. o trabalho 5 é o próximo, porque o projecto 1 tem agora 2 postos de trabalho em funcionamento e o emprego 5 é o menor número restante de postos de trabalho entre os projectos 2 e 3.Finalmente é o trabalho 3 … porque é o único trabalho que resta.

Exemplo 2

Se esses trabalhos estão na fila:

  • Tarefa 1 para o Projeto 1
  • Trabalho 2 para o Projeto 1
  • Trabalho 3 para o Projeto 1
  • a Tarefa 4, para o Projeto 2
  • Jó 5 para o Projeto 2
  • Trabalho de 6 para Projeto 3

O uso justo algoritmo atribui tarefas nesta ordem:

  1. Tarefa 1 é escolhido primeiro, porque ele tem o menor número de trabalho a partir de projetos sem os trabalhos em execução (isto é, todos os projetos).terminamos o trabalho 1.
  2. Job 2 é o próximo, porque, tendo terminado o Job 1, todos os projetos têm 0 jobs funcionando novamente, e 2 é o menor número de job disponível.
  3. Job 4 é o próximo, porque com o projeto 1 executando um trabalho, 4 é o menor número de projetos sem empregos (projetos 2 e 3).terminamos o trabalho 4.
  4. A tarefa 5 é a seguir, porque tendo terminado a tarefa 4, O Projeto 2 não tem nenhuma tarefa funcionando novamente.
  5. Job 6 é o próximo, porque o projeto 3 é o único projeto deixado sem nenhuma tarefa em execução.finalmente escolhemos o trabalho 3… porque, mais uma vez, é o único trabalho que resta.

activar os corredores partilhados

em GitLab.com, corredores compartilhados são habilitados em todos os projetos por omissão.

em instâncias autogeridas do GitLab, um administrador deve instalá-las e registrá-las.

Você também pode permitir corredores compartilhados para projetos individuais.

para activar corredores partilhados:

  1. vai para as configurações do projecto > CI/CD e expande a secção de corredores.
  2. Seleccione Activar os corredores partilhados para este projecto.

desactivar os corredores partilhados

pode desactivar os corredores partilhados para projectos individuais ou para grupos.Você deve ter permissões de dono para o projeto ou grupo.

para desactivar os corredores partilhados para um projecto:

  1. vai para as configurações do projecto > CI/CD e expande a secção de corredores.
  2. na área dos corredores partilhados, seleccione a opção Activar os corredores partilhados para este projecto, para que a comutação esteja acinzentada.

os corredores partilhados estão automaticamente desactivados para um projecto:

  • Se a configuração dos corredores partilhados para o grupo-mãe estiver desactivada, e
  • Se ultrapassar esta configuração não for permitida a nível do projecto.

Para desativar compartilhada corredores de um grupo:

  1. Vá para as Configurações do grupo > CI/CD e expandir os Corredores seção.
  2. na área dos corredores partilhados, desligue os corredores partilhados para esta opção de grupo.
  3. opcionalmente, para permitir que os corredores partilhados sejam activados para projectos ou subgrupos individuais, carregue em permitir que os projectos e subgrupos sobreponham a configuração do grupo.

noteTo reativar os corredores partilhados para um grupo, ligue os corredores partilháveis para esta comutação de grupo.Então, um proprietário ou mantenedor deve alterar explicitamente esta configuração para cada subgrupo de projeto ou projeto.

corredores de grupo

utilize corredores de grupo quando quiser que todos os projectos de um grupo tenham acesso a um conjunto de corredores.

os corredores de grupo processam as tarefas usando uma fila de primeira entrada, primeira saída (FIFO).

crie um corredor de grupo

poderá criar um corredor de grupo para a sua instância GitLab autogerida ou para o GitLab.com.deverá ter as permissões do dono para o grupo.

para criar um corredor de grupo:

  1. instalar um corredor de GitLab.
  2. Go to the group you want to make the runner work for.
  3. Go to Settings > CI/CD and expand the Runners section.
  4. Note o URL e o token.
  5. registe o corredor.

ver e gerir os corredores de grupo

introduzido no GitLab 13.2.

você pode ver e gerenciar todos os corredores para um grupo, seus subgrupos e projetos.Poderá fazer isto pela sua instância GitLab autogerida ou pelo GitLab.com.deverá ter permissões de dono para o grupo.

  1. vá para o grupo onde deseja ver os corredores.
  2. Go to Settings > CI/CD and expand the Runners section.
  3. os seguintes campos são apresentados.

    Atributo Descrição
    Tipo Um ou mais dos seguintes estados: compartilhada, grupo específico, bloqueado, ou em pausa
    Corredor token símbolo usado para identificar o corredor, e que o corredor usa para se comunicar com o GitLab exemplo
    Descrição Descrição dada para o corredor quando ele foi criado.
    Versão GitLab Corredor versão
    endereço IP Endereço IP do host no qual o corredor está registado
    Projetos A contagem de projetos para que o corredor é atribuída
    Emprego Total de trabalhos executados pelo corredor
    Tags Tags associadas com o corredor
    Último contato Carimbo de data / hora, indicando quando o GitLab instância o último contato com o corredor

A partir desta página, você pode editar, pausar, e remover os corredores do grupo, seus subgrupos e projetos.

Pause ou remova um corredor de grupo

poderá pausar ou remover um corredor de grupo para a sua instância GitLab auto-gerida ou para o GitLab.com.deverá ter as permissões do dono para o grupo.

  1. vá para o grupo para o qual deseja remover ou pausar a execução.
  2. Go to Settings > CI/CD and expand the Runners section.
  3. Carregue em pausa ou remover a execução.
    • Se parar um corredor de grupo que é usado por vários projectos, o corredor pára para todos os projectos.
    • da área de grupo, você não pode remover um corredor que é atribuído a mais de um projeto.Você deve removê-lo de cada projeto primeiro.
  4. na janela de confirmação, carregue em OK.

corredores específicos

usem corredores específicos quando quiserem usar corredores para projectos específicos. Por exemplo, quando você tem:

  • empregos com requisitos específicos, como um emprego de implantação que requer credenciais.projetos com muita atividade de IC que podem se beneficiar de serem separados de outros corredores.

você pode configurar um corredor específico para ser usado por vários projetos. Os Runners específicos devem ser habilitados para cada projeto explicitamente.

corredores específicos processam as tarefas usando uma primeira fila de entrada, primeira saída (FIFO).

corredores notespecíficos não são compartilhados com projetos bifurcados automaticamente.Um garfo copia as configurações de CI / CD do repositório clonado.

crie um corredor específico

poderá criar um corredor específico para a sua instância GitLab auto-gerida ou para o GitLab.com.deverá ter permissões de dono para o projecto.

para criar um corredor específico:

  1. instalar o corredor.
  2. ir para as configurações do projeto > CI/CD e expandir a seção de corredores.
  3. Note o URL e o token.
  4. registe o corredor.

activar um corredor específico para um projecto específico

está disponível um corredor específico no projecto para o qual foi criado. Um administrador pode candidatar-se a projectos adicionais.

  • deverá ter permissões de dono para o projecto.
  • o corredor específico não deve ser bloqueado.

para activar ou desactivar uma execução específica para um projecto:

  1. Go to the project’s Settings > CI / CD e expandir a secção de corredores.
  2. Carregue em Activar para este projecto ou desactivar para este projecto.

impede que uma execução específica seja activada para outros projectos

pode configurar uma execução específica para que seja “bloqueada” e não possa ser activada para outros projectos.Esta configuração pode ser ativada quando você primeiro registrar um corredor, mas também pode ser alterado mais tarde.

para bloquear ou desbloquear uma execução:

  1. vai para as configurações do projecto > CI/CD e expande a secção de corredores.
  2. Encontre o corredor que deseja bloquear ou desbloquear. Certifica-te que está activo.clique no botão lápis.
  3. assinale a opção Bloquear para os projectos actuais.
  4. Carregue em gravar as alterações.

limpar manualmente a ‘cache’ de execução

ler a ‘cache’.

define o tempo-limite máximo da tarefa para um Execução

para cada execução, poderá indicar o tempo-limite máximo da tarefa. Este tempo-limite,se for menor do que o tempo-limite definido pelo projecto, tem precedência.

esta funcionalidade pode ser usada para impedir que o seu corredor partilhado seja esmagado por um projecto que tenha empregos com um tempo-limite longo (por exemplo, uma semana).

Quando não está configurado, os ‘runners’ não sobrepõem o tempo-limite do projecto.

no GitLab.com, você não pode sobrepor o tempo-limite do trabalho para os corredores partilhados e deve usar o tempo-limite definido pelo projecto.

para definir o tempo-limite máximo da tarefa:

  1. num projecto, vá para as configurações > CI/CD > corredores.
  2. seleccione a sua execução específica para editar a configuração.
  3. introduza um valor abaixo do tempo-limite máximo de trabalho.
  4. seleccione Gravar as alterações.

Como esta funcionalidade funciona:

Exemplo 1 – Corredor de tempo limite maior que o projeto de timeout

  1. Você definir o máximo de tempo limite do trabalho para um corredor de 24 horas
  2. Você definir a CI/CD tempo de espera para que um projeto de 2 horas
  3. Você iniciar um trabalho
  4. O trabalho, se correr mais, expira depois de 2 horas

Exemplo 2 – Corredor de tempo limite não configurado

  1. Você remover o máximo de tempo limite do trabalho de configuração a partir de um corredor
  2. Você definir a CI/CD tempo de espera para que um projeto de 2 horas
  3. Você iniciar um trabalho
  4. O trabalho, se correr mais, expira depois de 2 horas

Exemplo 3 – Corredor tempo limite menor do que o projecto timeout

  1. Você definir o máximo de tempo limite do trabalho para um corredor de 30 minutos
  2. Você definir a CI/CD tempo de espera para que um projeto de 2 horas
  3. Você iniciar um trabalho
  4. O trabalho, se correr mais, expira após 30 minutos

cuidado com a informação sensível

Com alguns corredor executores,se você pode executar um trabalho no corredor, você pode obter acesso total ao sistema de arquivos,e, portanto, nenhum código é executado, bem como o token do corredor. Com corredores compartilhados, isso significa que qualquer um que executa trabalhos no corredor, pode acessar qualquer outro código que corre no therunner.

além disso, como você pode ter acesso ao token runner, é possível criar um clone de um runner e enviar falsos trabalhos, por exemplo.

O acima é facilmente evitado restringindo o uso de runnerson compartilhado grandes instâncias públicas do GitLab, controlando o acesso à sua instância do GitLab, e usando executores de execução mais seguros.

evitar que os corredores revelem informações sensíveis

introduzido no GitLab 10.0.

você pode proteger os corredores para que eles não revelem informações sensíveis.Quando um corredor é protegido,o corredor escolhe empregos criados em ramos protegidos ou etiquetas protegidas apenas, e ignora outros empregos.

para proteger ou desproteger um corredor:

  1. vá para as configurações do projecto > CI/CD e expanda a secção de corredores.
  2. Encontre o corredor que deseja proteger ou desproteger. Certifica-te que está activo.clique no botão lápis.Verifique a opção protegida.
  3. Carregue em gravar as alterações.

corredores específicos editam o ícone

garfos

sempre que um projecto é bifurcado, copia as configurações das tarefas que lhe dizem respeito. Isto significa que se você tiver compartilhado os corredores configurados para um projeto e alguns garfos que o projeto, os corredores compartilhados servem empregos deste projeto.

vetores de Ataque em corredores

mencionado brevemente antes, mas as seguintes coisas de corredores podem ser exploradas.Estamos sempre à procura de contribuições que possam mitigar estas considerações de segurança.

repõe o símbolo de registo de execução de um projecto

Se pensa que foi revelado um símbolo de registo de um projecto, deverá reiniciá-lo. Um token pode ser usado para registrar outro corredor para o projeto. Esse novo runnermay pode então ser usado para obter os valores de variáveis secretas ou para clonar o código do projeto.

para repor o item:

  1. Go to the project’s Settings > CI/CD.expande a secção de Configuração Geral das condutas.
  2. Encontre o campo do formulário do item de execução e carregue no botão Revelar o valor.
  3. apague o valor e salve o formulário.
  4. Após a actualização da página, expandir a secção de configuração dos corredores e verificar o item de registo-deverá ser alterado.

a partir de agora o token antigo não é mais válido e não registra nenhum corredor novo para o projeto. Se você estiver usando quaisquer ferramentas para fornecer andregister novos corredores, os tokens usados nessas ferramentas devem ser atualizados para refletir o valor do novo token.

Determine o endereço IP de um corredor

introduzido no GitLab 10.6.

pode ser útil saber o endereço IP de um corredor para que possa resolver problemas com esse corredor. O GitLab armazena e exibe o endereço IP, visualizando a fonte dos pedidos de HTTP que faz ao GitLab quando faz pesquisas de empregos. O endereço do TheIP é sempre mantido atualizado assim se o IP do runner mudar itautomaticamente atualizações no GitLab.

O endereço IP para corredores compartilhados e corredores específicos pode ser encontrado em lugares indiferentes.

Determine o endereço IP de um corredor compartilhado

para ver o endereço IP de um corredor compartilhado você deve ter acesso admin à instância GitLab. Para determinar isso:

  1. visitar a área de Administração > visão geral > corredores.
  2. procure o corredor na tabela e deverá ver uma coluna para o endereço IP.

compartilhada corredor endereço IP

Determinar o endereço IP de um determinado corredor

pode encontrar o endereço IP de um corredor para um projeto específico,você deve ter permissões de Proprietário para o projeto.

  1. Go to the project’s Settings > CI/CD and expand the Runners section.
  2. na página de detalhes você deve ver uma linha para o endereço IP.

específico do corredor endereço IP

Use tags para limitar o número de trabalhos que utilizam o corredor

Você deve configurar um corredor para ser capaz de executar todos os tipos diferentes de jobsthat pode encontrar nos projetos é compartilhada mais. Isso seria problemático para grandes quantidades de projetos, se não fossem as tags.as tags de CI do GitLab não são as mesmas que as tags do Git. As etiquetas de CI do GitLab estão associadas com os corredores.As tags Git estão associadas com commits.

marcando um corredor para os tipos de trabalhos que ele pode lidar, você pode fazer corredores sureshared só irá executar os trabalhos que eles estão equipados para executar.

Por exemplo, no GitLab temos corredores marcados comrails se contiverem as dependências apropriadas para executar as suites de teste de trilhos.

quando regista um corredor, o seu comportamento por omissão é apenas escolher jobs.To se alterar isto, terá de ter permissões para o dono do projecto.

para fazer uma selecção de tarefas não marcadas:

  1. Go to the project’s Settings > CI/CD and expand the Runners section.
  2. Encontre o corredor que deseja escolher as tarefas não marcadas e certifique-se que está activo.clique no botão lápis.Verifique a opção Executar tarefas não marcadas.carregue no botão Gravar as alterações para que as alterações façam efeito.
nota lista de marcas de execução não pode estar vazia quando não é permitido escolher tarefas não marcadas.

abaixo estão alguns exemplos de cenários de diferentes variações.

runner executa apenas tarefas marcadas

os seguintes exemplos ilustram o impacto potencial do corredor que está a ser definido para executar apenas tarefas marcadas.

exemplo 1:

  1. o corredor está configurado para executar apenas tarefas marcadas e tem o docker tag.
  2. a job that has a hello tag is executed and stuck.

Exemplo 2:

  1. o corredor está configurado para executar apenas tarefas marcadas e tem o docker tag.
  2. uma tarefa que tem umdocker

tag é executada e executada.exemplo 3:

  1. o corredor está configurado para executar apenas tarefas marcadas e tem a etiqueta docker tag.
  2. uma tarefa que não tenha marcas definidas é executada e bloqueada.

runner está autorizado a executar trabalhos não marcados

os seguintes exemplos ilustram o impacto potencial do corredor que está a ser definido para executar trabalhos marcados e não marcados.

exemplo 1:

  1. o corredor está configurado para executar tarefas não marcadas e tem o docker tag.
  2. uma tarefa que não tenha marcas definidas é executada e executada.
  3. uma segunda tarefa que tem umdocker

marca definida é executada e executada.

Exemplo 2:

  1. o corredor está configurado para executar tarefas não marcadas e não tem marcas definidas.
  2. uma tarefa que não tenha marcas definidas é executada e executada.
  3. a second job that has a docker tag defined is stuck.

configurar o comportamento de execução com variáveis

pode usar variáveis de CI / CD para configurar o comportamento git corredor ou para tarefas individuais:

  • GIT_STRATEGY
  • GIT_SUBMODULE_STRATEGY
  • GIT_CHECKOUT
  • GIT_CLEAN_FLAGS
  • GIT_FETCH_EXTRA_FLAGS
  • GIT_DEPTH (rasa clonagem)
  • GIT_CLONE_PATH (compilação personalizada diretórios)

Você também pode usar variáveis para configurar quantas vezes runnerattempts certas fases da execução do trabalho.

estratégia Git

história da versão

  • introduzido no GitLab 8.9 como uma característica experimental.
  • GIT_STRATEGY=none requer GitLab Runner v1.7+.

Você pode definir o GIT_STRATEGY usado para buscar o repositório de conteúdo, eitherglobally ou por trabalho variables seção:

variables: GIT_STRATEGY: clone

Existem três valores possíveis: clonefetch e none. Se deixado indeterminado, jobs usam a configuração do pipeline do projeto.

clone é a opção mais lenta. Clones o repositório do zero para cada trabalho, garantindo que a cópia de trabalho local é sempre impecável.Se um worktree existente é encontrado, ele é removido antes da clonagem.

é mais rápido porque reutiliza a cópia de trabalho local (recuando paraclone se não existir). git clean é usado para desfazer quaisquer alterações feitas pela última tarefa, egit fetch é usado para recuperar commits feitos após a última tarefa executada.

no entanto, requer o acesso à árvore de trabalho anterior. Este workswell ao usar o shell ou docker executor porque thesetry para preservar worktrees e tentar voltar a usá-los por padrão.

isto tem limitações ao usar o executor da máquina do Docker.

It does not work for the kubernetes executor,but a feature proposal exists.O executor kubernetes executor sempre clones em um diretório temporário.

a Git strategy of none also Re-uses the local working copy, but skips all Gitoperations normally done by GitLab. Os programas pré-clones de execução do GitLab também são ignorados,se estiverem presentes. Esta estratégia pode significar que você precisa para adicionar fetch e checkout commandsto o .gitlab-ci.yml script.

pode ser usado para trabalhos que operam exclusivamente em artefatos, como um trabalho de implantação.Os dados do repositório Git podem estar presentes, mas provavelmente estão desactualizados. Você deve apenas sobre os arquivos trazidos para a cópia de trabalho local do cache ou artefatos.

git submodule strategy

requer GitLab Runner v1.10+.

GIT_SUBMODULE_STRATEGY variável é usada para controlar se / como Gitsubmodules são incluídos quando busca o código antes de uma compilação. Você pode defini-las globalmente ou por trabalho na secção variables.

Existem três valores possíveis: nonenormal e recursive:

  • none significa que submódulos não são incluídos quando busca o projectcode. Este é o padrão, que corresponde ao comportamento pré-v1.10.

  • normal significa que só estão incluídos os submódulos de nível superior. Ele’sequivalent para:

    git submodule syncgit submodule update --init
  • recursive significa que todos os submódulos (incluindo submódulos de submódulos)estão incluídos. Este recurso precisa Git v1. 8. 1 e mais tarde. Ao usar Agitlab Runner com um executor não baseado no Docker, certifique-se de que o Git versionmeets esse requisito. É equivalente a:

    git submodule sync --recursivegit submodule update --init --recursive

para que esse recurso funcione corretamente, o submódulos deve ser configurado(na .gitmodules) com:

  • o HTTP(S) URL de um público-repositório acessível, ou
  • um caminho relativo para outro repositório, na mesma GitLab servidor. Veja a documentação do submódulos do git.

checkout git

introduzido no GitLab Runner 9.3.

GIT_CHECKOUT variável pode ser usada quando o GIT_STRATEGY está definido paraclone ou fetch para especificar se uma git checkout deve ser executado. Se não for especificado, o padrão é verdadeiro. Você pode configurá-los globalmente ou por trabalho na seçãovariables.

If set tofalse, the runner:

  • quando fazer fetch – atualiza o repositório e deixa a cópia de trabalho na atual revisão,
  • quando fazer clone – clona o repositório e deixa a cópia de trabalho em thedefault ramo.

If GIT_CHECKOUT is set to true, bothclone and work the same way.O corredor verifica a cópia de trabalho de uma revisão relacionada com o gasoduto IC:

variables: GIT_STRATEGY: clone GIT_CHECKOUT: "false"script: - git checkout -B master origin/master - git merge $CI_COMMIT_SHA

Git limpa os sinalizadores

Introduzido no GitLab Corredor 11.10

GIT_CLEAN_FLAGS variável é usada para controlar o comportamento padrão da taggit clean depois de verificar as fontes. Você pode configurá-lo globalmente ou por trabalho na seçãovariables.

GIT_CLEAN_FLAGS aceita todas as opções possíveis do comandogit clean.

git cleanestá desactivado seGIT_CHECKOUT: "false" é especificado.

SeGIT_CLEAN_FLAGS é:

  • Não especificado, git clean flags default to -ffdx.
  • dado o valor nonegit clean não é executado.

Por exemplo:

variables: GIT_CLEAN_FLAGS: -ffdx -e cache/script: - ls -al cache/

Git fetch extra bandeiras

Introduzido no GitLab Corredor 13.1.

TheGIT_FETCH_EXTRA_FLAGS variable is used to control the behavior ofgit fetch. Você pode configurá-lo globalmente ou por trabalho na seção variables.

GIT_FETCH_EXTRA_FLAGS aceita todas as opções do comandogit fetch. However, GIT_FETCH_EXTRA_FLAGS flags are appended after the default flags that can’t be modified.

as opções predefinidas são:

  • GIT_DEPTH.
  • a lista de repspectos.
  • um remoto chamado origin.

Se GIT_FETCH_EXTRA_FLAGS é:

  • Não especificado, git fetch sinalizadores padrão para --prune --quiet junto com a flag padrão.
  • dado o valor nonegit fetch é executado apenas com as opções predefinidas.

Por exemplo, o padrão de sinalizadores são --prune --quiet você pode git fetch mais detalhado, substituindo-se este com apenas --prune:

variables: GIT_FETCH_EXTRA_FLAGS: --prunescript: - ls -al cache/

A configuração acima resulta em git fetch ser chamado desta forma:

git fetch origin $REFSPECS --depth 50 --prune

, Onde $REFSPECS é um valor fornecido para o corredor internamente pelo GitLab.

Clonagem superficial

introduzido no GitLab 8.9 como uma característica experimental.

pode indicar a profundidade de obtenção e clonagem usando GIT_DEPTHGIT_DEPTH faz um clone raso do repositório e pode acelerar significativamente cloning.It pode ser útil para repositórios com um grande número de commits ou binários antigos e grandes. The value ispassed to git fetch and git clone.

In GitLab 12.0 and later, newly-created projects automatically have adefault git depth value of 50.

Se usar uma profundidade de 1 e tiver uma fila de tarefas ou retryjobs, as tarefas poderão falhar.

git fetching and cloning is based on a ref, such as a branch name, so runnerscan’t clone a specific commit SHA. Se vários trabalhos estão na fila, ou você está a refazer um trabalho antigo, o compromisso a ser testado deve estar dentro da história do git que é clonado. Definir um valor demasiado pequeno para GIT_DEPTH pode tornar impossível executar estes commits antigos e unresolved reference é apresentado nos registos de Tarefas. Você deve então reconsiderar mudar GIT_DEPTH para um valor mais elevado.

Empregos que dependem de git describe pode não funcionar corretamente quando GIT_DEPTH isset uma vez que apenas parte do Git história está presente.

para obter ou clonar apenas os últimos 3 commits:

variables: GIT_DEPTH: "3"

Você pode definir globalmente ou por trabalho variables seção.

pastas de compilação personalizadas

introduzidas no corredor 11.10 do GitLab.

por padrão, o GitLab Runner clona o repositório em um subpata único do$CI_BUILDS_DIR diretório. No entanto, o seu projecto pode exigir o código num directório específico (projectos Go, por exemplo). Nesse caso, você pode especificar o GIT_CLONE_PATH variável para dizer ao Executante o diretório para clonar o repositório em:

variables: GIT_CLONE_PATH: $CI_BUILDS_DIR/project-nametest: script: - pwd

GIT_CLONE_PATH tem que estar sempre dentro de $CI_BUILDS_DIR. O diretório definido em $CI_BUILDS_DIRé dependente do executor e configuração dos corredores.builds_dirsetting.

isto só pode ser usado quando custom_build_dir está activo na configuração do therunner.Esta é a configuração padrão para o docker e kubernetes executores.

manipular a concorrência

um executor que usa uma concorrência maior que1 pode levar a falhas. Várias tarefas podem estar a trabalhar no mesmo directório se o builds_dirfor partilhado entre tarefas.

o corredor não tenta evitar esta situação. Cabe à administração e aos desenvolvedores cumprir os requisitos da configuração do runner.

Para evitar esse cenário, você pode usar um caminho único dentro de $CI_BUILDS_DIR, porque runnerexposes duas variáveis adicionais que fornecem uma única ID de simultaneidade:

  • $CI_CONCURRENT_ID: ID Único para todos os trabalhos a executar dentro de um determinado executor.
  • $CI_CONCURRENT_PROJECT_ID: ID único para todas as tarefas em execução dentro do executor e projeto dado.

a configuração mais estável que deve funcionar bem em qualquer cenário e em qualquer executoris para usar $CI_CONCURRENT_IDnoGIT_CLONE_PATH. Por exemplo:

variables: GIT_CLONE_PATH: $CI_BUILDS_DIR/$CI_CONCURRENT_ID/project-nametest: script: - pwd

$CI_CONCURRENT_PROJECT_ID deve ser usado em conjunto com $CI_PROJECT_PATH$CI_PROJECT_PATH fornece um caminho de um repositório. Isto é,group/subgroup/project. Por exemplo:

variables: GIT_CLONE_PATH: $CI_BUILDS_DIR/$CI_CONCURRENT_ID/$CI_PROJECT_PATHtest: script: - pwd

Aninhados caminhos

O valor de GIT_CLONE_PATH é ampliado uma vez e o aninhamento de variableswithin não é suportado.

Por exemplo, você define ambas as variáveis abaixo no seu ficheiro.gitlab-ci.yml :

variables: GOPATH: $CI_BUILDS_DIR/go GIT_CLONE_PATH: $GOPATH/src/namespace/project

O valor de GIT_CLONE_PATH é expandida uma vez no$CI_BUILDS_DIR/go/src/namespace/project, e resulta em failurebecause $CI_BUILDS_DIR não é expandida.

tentativas de fases de trabalho

introduzido no GitLab, ele requer GitLab Runner v1. 9+.

pode definir o número de tentativas que a tarefa em execução tenta executar as fases seguintes:

Variável Descrição
ARTIFACT_DOWNLOAD_ATTEMPTS Número de tentativas para descarregar artefatos execução de um trabalho
EXECUTOR_JOB_SECTION_ATTEMPTS Em GitLab 12.10 e, mais tarde, o número de tentativas para executar uma seção em um emprego depois de um No Such Container erro (janela de Encaixe executor apenas).
GET_SOURCES_ATTEMPTS Número de tentativas para buscar fontes de execução de um trabalho
RESTORE_CACHE_ATTEMPTS Número de tentativas para restaurar o cache execução de um trabalho

O padrão é de uma única tentativa.

Exemplo:

variables: GET_SOURCES_ATTEMPTS: 3

Você pode defini-las globalmente ou por trabalho variables seção.

chamadas de sistema não disponíveis em GitLab.com corredores partilhados

GitLab.com corredores partilhados correm em CoreOS. Isto significa que você não pode usar algumas chamadas do sistema, como getlogin, a partir da biblioteca padrão C.

Artifact and cache settings

Introduced in GitLab Runner 13.9.

as configurações de artefatos e cache controlam a taxa de compressão de artefatos e caches.Use estas configurações para especificar o tamanho do arquivo produzido por uma tarefa.

  • em uma rede lenta, uploads podem ser mais rápidos para arquivos menores.
  • em uma rede rápida onde largura de banda e armazenamento não são uma preocupação, uploads podem ser mais rápidos usando a taxa de compressão mais rápida, apesar do arquivo produzido ser maior.

para páginas GitLab para servir pedidos de Range, os Artifacts devem usar a configuração ARTIFACT_COMPRESSION_LEVEL: fastest, uma vez que apenas o arquivamento zip não comprimido suporta esta funcionalidade.

Um medidor também pode ser habilitado a fornecer a taxa de transferência para uploads e downloads.

variables: # output upload and download progress every 2 seconds TRANSFER_METER_FREQUENCY: "2s" # Use fast compression for artifacts, resulting in larger archives ARTIFACT_COMPRESSION_LEVEL: "fast" # Use no compression for caches CACHE_COMPRESSION_LEVEL: "fastest"
Variável Descrição
TRANSFER_METER_FREQUENCY Especifica a frequência com a impressão de que o medidor de taxa de transferência. Ele pode ser definido como uma duração (por exemplo, 1s ou 1m30s). A duration of 0 disables the meter (default). Quando um valor é definido, o pipeline mostra um medidor de progresso para artefatos e cache uploads e downloads.
ARTIFACT_COMPRESSION_LEVEL Para ajustar a taxa de compressão, definida como fastestfastdefaultslow ou slowest. Esta configuração funciona apenas com o arquivador Fastzip, por isso a opção de execução do GitLab FF_USE_FASTZIP deve também estar activa.
CACHE_COMPRESSION_LEVEL To adjust compression ratio, set to fastestfastdefaultslow, or slowest. This setting works with the Fastzip archiver only, so the GitLab Runner feature flag FF_USE_FASTZIP must also be enabled.