Múltiples caminos con diferente tiempo de caducidad en gitlab-ci runners


7

Tengo problemas para analizar un builddirectorio entre etapas usando Gitlab-CI.

Gitlab-CI borra los artefactos de construcción creados entre etapas, lo que parece extraño. Estoy tratando de almacenar los artefactos de construcción entre la construcción y la etapa de prueba, sin embargo, la etapa de construcción también tiene el artefacto de construcción que quiero conservar y también los artefactos de construcción necesarios para ejecutar la siguiente etapa.

¿Es posible tener múltiples tiempos de vencimiento con diferentes rutas usando la artifactsopción?

He intentado lo siguiente, que solo mantiene la segunda definición de paths(las rutas de compilación / prueba *), y no la primera paths(.dmg) declarada.

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

He intentado usar el, cachessin embargo, parece que no funciona ... ¡Cualquier sugerencia sería muy apreciada!

Respuestas:


5

Esto se ha respondido en SO utilizando un trabajo en torno a ver, ya que no parece posible según los documentos.

Básicamente, esto se puede hacer en 3 etapas.

Etapa 1: Construye y almacena todos los artefactos.

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

Etapa 2.1: Realizar la siguiente etapa oficial del trabajo (es decir, ejecutar pruebas en mi escenario) utilizando los artefactos build/test1, build/test2y build/test3.

test_stage:
  script:
    - test
  dependencies:
  - build

Etapa 2.2: al ejecutar simultáneamente con la Etapa 2.1, puede tener un trabajo vacío pero establecer una nueva fecha de vencimiento del artefacto.

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

3

Parece que está tratando de definir los artefactos globalmente, eso no funcionará con múltiples rutas ya que está sobrescribiendo la definición de la clave. En su lugar, debe definir las rutas por trabajo.

artefactos: 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

Olvidé mencionar en la pregunta que ya tengo eso definido en un trabajo. Mi trabajo de "compilación" construye tanto el artefacto como los artefactos de "prueba", sin embargo, no quiero almacenar en caché los artefactos de "prueba" ya que el caché no se borra después de la canalización.
Rekovni
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.