Publicar archivos en artefactos
Cuando esté ejecutando tus despliegues, como todo se está ejecutando a través de containers de docker, probablemente querrá guardar algunos archivos generados, como archivos de reportes, de aplicación, de configuración, etc. y así poder usarlos o revisarlos más tarde.
Puede hacer esto por medio del uso de repositorios de artefactos, los cuales son la única conexión entre los diferentes containers, cuando esté ejecutando su pase, y su Clarive, de modo que los archivos no se pierden cuando finalice el container.
Tenga en cuenta que esto es un ejemplo sobre como configurarlo. Así que la configuración no necesita ser la misma para todos los proyectos o repositorios.
Una vez tengamos nuestro repositorio de artefactos configurado, ahora podremos llamar al servicio en nuestro yaml de la regla de modo que almacene el archivo deseado en el repositorio durante la ejecución del pase.
En este ejemplo, generaremos una aplicación de ejemplo con Maven en nuestra fase build, y después, almacenaremos nuestro archivo de la aplicación en nuestro repositorio de artefactos.
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 container donde estamos ejecutando nuestro pase, queremos guardarlo en nuestro repositorio de artefactos, de manera que el archivo no desaparezca cuando finalice la ejecución del container.
Para ello, usaremos el servicio de publicación para almacenar el archivo en la fase de despliegue. También haremos que nos guarde en una variable la url del repositorio en el que se guarda.
Los distintos parámetros son:
- repository - Escriba el nombre del repositorio donde quiera almacenar el archivo.
- to - Ruta interna del repositorio donde quiera guardar el archivo. Incluyendo el nombre del fichero.
- from - Ruta al archivo que desee 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 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}
De manera que cuando este pase finalice, si todo ha ido correctamente, seremos capaces de ver nuestro archivo almacenado en nuestro repositorio de artefactos de Clarive. Y también, deberiamos tener una salida con la url al archivo almacenado.