Publicar archivos en artifacts

Cuando está ejecutando sus despliegues, como todo se está ejecutando en contenedores docker, probablemente querrá guardar algunos archivos generados, como archivos de informes, archivos de aplicación, archivos de configuración, etc. para que pueda usar o verificarlos más tarde.

Puede hacer esto usando los repositorios de artifacts, que son la única conexión entre los diferentes contenedores donde está ejecutando en sus trabajos y su Clarive, para que los archivos no se pierdan cuando el contenedor termine.

Tenga en cuenta que este es un ejemplo sobre cómo puede configurarlo. Por lo tanto, la configuración no necesita ser la misma para todos los proyectos o repositorios.

Una vez que tengamos nuestro repositorio de artifacts configurado, ahora podemos llamar al servicio en nuestro archivo yaml de regla para que almacene el archivo en el repositorio en la ejecución de trabajos.

En este ejemplo, generaremos una aplicación de ejemplo con maven en nuestra fase build, y luego, almacenaremos el archivo de aplicación en nuestro repositorio de artifacts.

build:
  do: # Estos comandos descargarán una aplicación de ejemplo de Maven y la compilarán.
    - |
       mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
       cd my-app
       mvn package

Ahora que tenemos el archivo generado en el contenedor donde estamos ejecutando el trabajo, queremos guardarlo en el repositorio de artifacts, para que el archivo no desaparezca cuando termine la ejecución del contenedor.

Para hacerlo, usaremos el servicio publish para almacenar el archivo en nuestra fase deploy. También almacenaremos nuestra url del repositorio en una variable.

Los diferentes parámetros son:

  • repository - Escriba el nombre del repositorio donde desea guardar su archivo.
  • to - Ruta dentro del repositorio donde se almacenará el archivo. Incluyendo el nombre del archivo.
  • from - Ruta para el archivo que desea almacenar en el repositorio.
deploy:
  do:
    - artifact_repo = publish:
        repository: repository-name
        to: '/maven/apps/my-app-1.0-SNAPSHOT.jar'
        from: '/my-app/target/my-app-1.0-SNAPSHOT.jar'
    - echo: ${artifact_repo.url}

Con este pequeño ejemplo tendríamos una regla de trabajo como esta en nuestro clarive.yml:

image: maven
build:
  do:
    - |
       mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
       cd my-app
       mvn package
deploy:
  do:
    - artifact_repo = publish:
        repository: repository-name
        to: '/maven/apps/my-app-1.0-SNAPSHOT.jar'
        from: '/my-app/target/my-app-1.0-SNAPSHOT.jar'
    - echo: ${artifact_repo.url}

Así que cuando este trabajo termine, si todo salió correctamente, podremos ver nuestro archivo almacenado en nuestro repositorio de artifacts desde Clarive. Y también deberíamos tener una salida con la url para el archivo almacenado.