Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

509
Vistas
Cómo almacenar en caché paquetes de hilo en GitHub Actions

Estoy usando GitHub Actions para construir mi proyecto TypeScript. Cada vez que ejecuto una acción, espero 3 minutos para que se instalen todas las dependencias.

¿Hay alguna forma de almacenar en caché las dependencias de hilo, por lo que el tiempo de compilación será más rápido?

Intenté esto:

 - name: Get yarn cache directory path id: yarn-cache-dir-path run: echo "::set-output name=dir::$(yarn cache dir)" - uses: actions/cache@v1 id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) with: path: ${{ steps.yarn-cache-dir-path.outputs.dir }} key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} restore-keys: | ${{ runner.os }}-yarn- - name: Install yarn run: npm install -g yarn - name: Install project dependencies run: yarn

pero el tiempo de compilación sigue siendo el mismo.

over 4 years ago · Santiago Trujillo
4 Respuestas
Responde la pregunta

0

No estoy seguro de por qué otra respuesta no menciona la forma simple de almacenar en caché las dependencias de hilos y npm con la forma integrada de acciones/setup-node@v2, así que solo agregaré los documentos, que es mucho más simple.

Como dice el archivo Léame del paquete de github :

 steps: - uses: actions/checkout@v2 - uses: actions/setup-node@v2 with: node-version: '14' cache: 'npm' # or yarn - run: npm install - run: npm test
over 4 years ago · Santiago Trujillo Denunciar

0

Este es un caché de 1 línea específicamente para Yarn: https://github.com/c-hive/gha-yarn-cache

 - uses: actions/checkout@v2 - name: Setup Node.js uses: actions/setup-node@v1 with: node-version: 12.x - uses: c-hive/gha-yarn-cache@v1 - name: Install JS dependencies run: yarn install - name: Test run: yarn test

Realiza el almacenamiento en caché según lo recomendado por GitHub. Admite Yarn v1 y v2.

over 4 years ago · Santiago Trujillo Denunciar

0

 - name: Get yarn cache directory path id: yarn-cache-dir-path run: echo "::set-output name=dir::$(yarn cache dir)" - uses: actions/cache@v1 id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) with: path: ${{ steps.yarn-cache-dir-path.outputs.dir }} key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} restore-keys: | ${{ runner.os }}-yarn-

El código de almacenamiento en caché anterior solo almacena en caché y restaura el directorio de caché de hilo, no almacena en caché el directorio node_modules . Entonces, si usa este código (respuesta de @Edric),

 - name: Install project dependencies if: steps.yarn-cache.outputs.cache-hit != 'true' # Over here! run: yarn

node_modules no se crea y recibirá errores de dependencias no encontradas.

En su lugar, puedes usar esto:

 - name: Install project dependencies run: yarn --prefer-offline

Esto le dice a yarn que siempre se ejecute, pero use descargas en caché (en el directorio de caché mencionado anteriormente) siempre que sea posible en lugar de descargar desde el servidor.


También puede almacenar en caché el directorio node_modules directamente y omitir el paso de instalación cuando el caché esté disponible. Esto en realidad NO se recomienda (ver comentarios). Ejemplo:

 - name: Get yarn cache directory path id: yarn-cache-dir-path run: echo "::set-output name=dir::$(yarn cache dir)" - name: Cache yarn cache uses: actions/cache@v2 id: cache-yarn-cache with: path: ${{ steps.yarn-cache-dir-path.outputs.dir }} key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} restore-keys: | ${{ runner.os }}-yarn- - name: Cache node_modules id: cache-node-modules uses: actions/cache@v2 with: path: node_modules key: ${{ runner.os }}-${{ matrix.node-version }}-nodemodules-${{ hashFiles('**/yarn.lock') }} restore-keys: | ${{ runner.os }}-${{ matrix.node-version }}-nodemodules- - run: yarn if: | steps.cache-yarn-cache.outputs.cache-hit != 'true' || steps.cache-node-modules.outputs.cache-hit != 'true'
over 4 years ago · Santiago Trujillo Denunciar

0

Como se menciona en el comentario junto al campo de id para el paso de almacenamiento en caché:

Use esto para verificar el acierto de cache-hit ( steps.yarn-cache.outputs.cache-hit != 'true' )

Te falta una propiedad condicional if que determina si se debe ejecutar el paso:

 - name: Install yarn run: npm install -g yarn - name: Install project dependencies if: steps.yarn-cache.outputs.cache-hit != 'true' # Over here! run: yarn

PD Probablemente deberías usar la acción Configurar NodeJS GitHub que además configura Yarn para ti:

 - uses: actions/setup-node@v1 with: node-version: '10.x' # The version spec of the version to use.

Consulte el archivo action.yml para obtener una lista completa de entradas válidas.


EDITAR: Resulta que Yarn está incluido en la lista de software instalado en el corredor Ubuntu 18.04.4 LTS ( ubuntu-latest / ubuntu-18.04 ) alojado en GitHub , por lo que no es necesario incluir un paso para instalar Yarn globalmente.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda