Vários caminhos com diferentes tempos de expiração nos corredores gitlab-ci


7

Estou tendo problemas com a análise de um builddiretório entre estágios usando o Gitlab-CI.

O Gitlab-CI limpa os artefatos de criação criados entre os estágios, o que parece estranho. Estou tentando armazenar os artefatos de construção entre a construção e o estágio de teste, no entanto, a fase de construção também possui o artefato de construção que eu quero manter e também os artefatos de construção necessários para executar o próximo estágio.

É possível ter vários tempos de expiração com caminhos diferentes usando a artifactsopção?

Eu tentei o seguinte, que mantém apenas a segunda definição de paths(os caminhos build / test *) e não a primeira paths(.dmg) declarada.

  artifacts:
    paths:
    - build/*.dmg
    expire_in: 1 week
    paths:
    - build/test1
    - build/test2
    - build/test3
    expire_in: 15 mins

Eu tentei usar o cachesporém não consigo fazer isso funcionar ... Qualquer sugestão seria muito apreciada!

Respostas:


5

Isso foi respondido no SO usando uma solução alternativa, pois não parece possível de acordo com os documentos.

Basicamente, isso pode ser feito em três etapas.

Etapa 1: Construa e armazene todos os artefatos.

build_stage:
  script:
    - build
  artifacts:
    paths:
    - build/*.dmg
    - build/test1
    - build/test2
    - build/test3
    expire_in: 15 mins

Estágio 2.1: Execute o próximo estágio oficial do trabalho (ou seja, execute testes no meu cenário) usando os artefatos build/test1, build/test2e build/test3.

test_stage:
  script:
    - test
  dependencies:
  - build

Estágio 2.2: Executando simultaneamente com o Estágio 2.1, você pode apenas ter um trabalho vazio, mas define uma nova data de validade do artefato.

overwrite_artifact_stage:
  script:
    - echo 'saving artifact'
  artifacts:
    paths:
    - build/*.dmg
    expire_in: 1 week

3

Parece que você está tentando definir os artefatos globalmente, que não funcionarão com vários caminhos desde que você substitua a definição da chave. Em vez disso, você deve definir os caminhos por trabalho.

artefatos: expire_in: 1 semana

build:buildjob
    paths:
    - build/test1
    - build/test2
    - build/test3
    expire_in: 15 mins

test:testjob
      paths:
        - build/*.dmg
      artifacts:
        expire_in: 1 week

Esqueci de mencionar na pergunta que eu já tenho o definido em um trabalho. Meu trabalho de "construção" constrói os artefatos, bem como os artefatos de "teste", no entanto, não quero armazenar em cache os artefatos de "teste", pois o cache não é limpo após o pipeline.
Rekovni
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.