Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

512
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda