tutorial sirve que para integracion example español continua java spring maven gitlab-ci gitlab-omnibus

sirve - ¿Cómo usar Gitlab CI para construir un proyecto Java Maven?



para que sirve gitlab runner (5)

He estado experimentando sin éxito alguno, estoy ejecutando un Gitlab alojado en Linux, y estoy tratando de entender la funcionalidad de CI.

De acuerdo con la documentación de Gitlab, solo necesita crear un archivo .gitlab-ci.yml , la implementación de Gitlab de Travis-CI. Ahora, por lo que parece, puede lograr mucho con el .gitlab-ci.yml , pero gran parte de la documentación hace referencia a Ruby y otros idiomas. No se dice nada sobre cómo construir proyectos Java Maven.

¿Cómo puedo construir una aplicación simple en Java? ¿Puedo usar el corredor compartido, o debería estar usando un corredor específico, en ese caso qué o qué implementación de corredor debería elegir: ssh, docker o shell? Entonces, ¿qué debo poner en el archivo .gitlab-ci.yml al menos para construir el proyecto con Maven?


La documentación describe la sintaxis YAML utilizada para controlar las compilaciones:

Entonces, ¿por qué no intentas comenzar con lo siguiente ?:

job1: script: "mvn package"

Presumiblemente, esto solo funcionará si Maven ya está instalado, por lo que necesitará un runner que lo admita.

No he usado GitLab, pero la documentation sugiere que podría personalizarlo aún más para usar la imagen oficial de Maven Docker para realizar las compilaciones. Parece muy interesante, pero estoy de acuerdo en que a la documentación le falta un ejemplo de Java.


Me gustaría agregar un poco de información aquí chicos. Primero aclaremos alguna confusión con respecto al corredor compartido y específico.

Shared Runner: como suena su nombre, los runners compartidos son las instancias de flujo del proceso de compilación que se pueden usar para ejecutar trabajos de cada proyecto en su instancia de gitlab instalada con la opción Permitido de los corredores compartidos habilitada. Para hacer eso, por supuesto, necesitaría derechos administrativos. Según la documentación actual de gitlab, solo el uso con derechos administrativos puede definir el corredor compartido.

corredor específico Este tipo de corredor ejecuta trabajos de un solo proyecto.

Además, estos son algunos puntos importantes a tener en cuenta al elegir el corredor para sus proyectos.

  1. Los Runners compartidos son útiles para trabajos que tienen requisitos similares, entre múltiples proyectos . En lugar de tener varios corredores inactivos para muchos proyectos, puede tener un solo o un pequeño número de corredores que manejan múltiples proyectos. Esto facilita el mantenimiento y la actualización de los corredores para un conjunto común de proyectos.
  2. Los corredores específicos son útiles para trabajos que tienen requisitos especiales o para proyectos con una demanda específica . Si un trabajo tiene ciertos requisitos, puede configurar el corredor específico teniendo esto en cuenta, sin tener que hacer esto para todos los corredores. Por ejemplo, si desea implementar un determinado proyecto, puede configurar un corredor específico para que tenga las credenciales adecuadas para esto.

Ahora, para seleccionar el ejecutor adecuado para el proyecto, es muy importante que tengamos una vista general de todos los ejecutores disponibles para gitlab runner. Gitlab nos ha facilitado este trabajo al proporcionar una buena documentación que explica cuáles son las diferentes opciones que obtendrá con diferentes ejecutores.

Si desea saber más sobre corredores y diferentes ejecutores, le sugiero que comience con este artículo, here


Pasé bastante tiempo tratando de configurar nuestros proyectos Java en Gitlab CI. Lo conseguí trabajando con cierto grado de éxito. Como lo menciona rolve, la solución más directa es usar una imagen del repositorio oficial: https://hub.docker.com/_/maven

Sin embargo, tenemos un proxy corporativo que estaba causando que mis compilaciones reciban solicitudes de tiempo de espera al recuperar las dependencias del proyecto. Intenté muchas soluciones y finalmente encontré esta publicación: https://gitlab.com/gitlab-org/gitlab-ce/issues/15167 .

La publicación en sí misma trata de configurar Maven para almacenar en caché las dependencias descargadas en un repositorio local al que se puede acceder entre las compilaciones. La idea es que puede escribir un archivo de configuración local de Maven en .gitlab-ci.yml para configurar su directorio de caché y su proxy.

before_script: -echo ''<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd"> <localRepository>/cache/.m2</localRepository> <proxies> <proxy> <active>true</active> <protocol>''$PROXY_PROTOCOL''</protocol> <host>''$PROXY_HOST''</host> <port>''$PROXY_PORT''</port> </proxy> </proxies> </settings>'' > $HOME/.m2/settings.xml build_debug1: stage: build script: "echo $PROXY_HOST" build_debug2: stage: build script: "cat $HOME/.m2/settings.xml" build_maven: stage: build script: "mvn $MAVEN_CLI_OPTS package" artifacts: paths: - target/*.jar deploy_debug1: stage: package script: "ls target/"

Observe que los trabajos de depuración de compilación son solo para ver si la configuración del proxy se inyectó correctamente. Puede configurar las variables de entorno proxy como secretos usando Gitlab yendo a Proyecto -> Configuración -> Canalizaciones CI / CD -> Variables secretas.

El último trabajo deploy_debug es ver qué se generó en su directorio de destino.


Uso este comando, pero en general la documentación sobre las compilaciones de Java / Maven parece bastante rara

maven-package: script: "mvn install -B"