register oficial gitlab gitlab-ci gitlab-ci-runner

oficial - gitlab runner registry



gitlab 8.2.1, cómo usar el caché en.gitlab-ci.yml (3)

8.2 solo es compatible con la memoria caché por trabajo, y 8.3 introducirá la memoria caché de "grupo" que sirve entre las tareas de acuerdo con el comentario de @ayufan en Posibilidad de almacenar en caché las carpetas en el directorio de compilación (# 97) .

Sin embargo, aunque no puedo estar 100% seguro, al excavar rápidamente el código fuente de gitlab-ci-muti-runner, el ejecutor de docker no parece funcionar con la funcionalidad de caché. Dado que se crea y destruye un contenedor completamente nuevo en cada trabajo, el archivo cache.tgz ya no existirá en la siguiente compilación.

Errata

La descripción anterior es incorrecta debido a las pruebas realizadas en un entorno mal configurado. De forma predeterminada, gitlab-ci-multi-runner crea un contenedor de volumen de datos dedicado como almacenamiento de caché para cada compilación concurrente. El contenedor de caché se monta en el directorio /cache en el contenedor de la aplicación y esos archivos de memoria cache.tgz se colocan en /cache de forma predeterminada. Así que los cachés son realmente reutilizables entre construcciones independientes.

Actualizaciones 2015/12/11:

Acabo de descubrir que el caché de "grupo" ya se ha implementado en gitlab-runner@7dc9524f6ef0144b3797fc07c9035f38a8ad0512 , tal vez aún no se haya publicado ni documentado. Puedes habilitarlo con

cache: paths: - doc/ group: sharedcache

El resultado es un tarball de caché colocado en la ruta <namespace>/<repo>/sharedcache/ lugar de dos tarballs de caché que se colocan por separado bajo la ruta <namespace>/<repo>/createcache/ y <namespace>/<repo>/testcache/ .

Actualizaciones 2017/12/04:

"grupo" caché ha sido reemplazado por cache:key . Use la key clave para hacer que la caché se comparta entre trabajos o referencias de git. De forma predeterminada, un caché se comparte entre todos los trabajos. Entonces, simplemente escribe lo siguiente haría el trabajo

cache: paths: - doc/

Para obtener más información, gitlab-runner@d34f76f86a7c2fc4d399e9922175bcc614434016 caché de GitLab CI: clave y gitlab-runner@d34f76f86a7c2fc4d399e9922175bcc614434016 .

Estoy tratando de usar ''caché'' en .gitlab-ci.yml ( http://doc.gitlab.com/ce/ci/yaml/README.html#cache ). Mi versión de gitlab es 8.2.1 y mi Runner es:

$ docker exec -it gitlab-runner gitlab-runner -v gitlab-runner version 0.7.2 (998cf5d)

Entonces, según el documento, todo está actualizado, pero no puedo usar el caché ;-(. Todos mis archivos siempre se eliminan. ¿Estoy haciendo algo mal?

Se crea un archivo de caché, pero no se pasa a los siguientes trabajos.

Aquí está mi .gitlab-ci.yml

$ cat .gitlab-ci.yml stages: - createcache - testcache createcache: type: createcache cache: untracked: true paths: - doc/ script: - touch doc/cache.txt testcache: type: testcache cache: untracked: true paths: - doc/ script: - find . - ls doc/cache.txt

Salida del trabajo ''createcache''

Running on runner-141d90d4-project-2-concurrent-0 via 849d416b5994... Fetching changes... HEAD is now at 2ffbadb MUST BE REVERTED [...] $ touch doc/cache.txt [...] Archiving cache... INFO[0000] Creating archive cache.tgz ... INFO[0000] Done! Build succeeded.

Salida del trabajo ''testcache''

Running on runner-141d90d4-project-2-concurrent-0 via 849d416b5994... Fetching changes... Removing doc/cache.txt [...] $ ls doc/cache.txt ls: cannot access doc/cache.txt: No such file or directory ERROR: Build failed with: exit code 1

Mi solución

Mi solución es untar manualmente lo que está en el directorio / cache ... Estoy bastante seguro de que no es la forma correcta de usar cache ...

$ cat .gitlab-ci.yml stages: - build - test - deploy image: ubuntu:latest before_script: - export CACHE_FILE=`echo ${CI_PROJECT_DIR}/createcache/${CI_BUILD_REF_NAME}/cache.tgz | sed -e "s|/builds|/cache|"` createcache: type: build cache: untracked: true paths: - doc/ script: - find . | grep -v ".git" - mkdir -p doc - touch doc/cache.txt testcache: type: test script: - env - find . | grep -v ".git" - tar xvzf ${CACHE_FILE} - ls doc/cache.txt


Parece que no es posible almacenar en caché los archivos locales con los corredores compartidos. Tienes que poner tus archivos, por ejemplo, en la carpeta de caché:

before_script: - export GRADLE_USER_HOME=/cache/.gradle ... cache: paths: - $GRADLE_USER_HOME/caches/ - $GRADLE_USER_HOME/wrapper/ - $GRADLE_USER_HOME/build-cache/

Estrictamente, no es necesario poner la carpeta / cache como archivos en caché, porque esto sucede automáticamente, pero lo dejo en claro (también cuando quiero mover el caché de gradle)