Кэширование пряжи и питона в облачной сборке Google

В настоящее время сборка в облаке занимает около 10 минут (5 минут на стороне клиента, 5 минут на стороне сервера). Могу ли я в любом случае кэшировать установку пряжи и установку pip, чтобы значительно сократить время сборки? это моя текущая конфигурация для облачной сборки

steps:
  - name: "node:18.17.1"
    entrypoint: bash
    args:
      - "-c"
      - |
        yarn install
        yarn run create-app-yaml
        yarn build
    env:
      - redacted

  - name: "python:3.10.11"
    entrypoint: bash
    args:
      - "-c"
      - |
        python -m pip install -r requirements.txt
        python ./manage.py collectstatic --noinput

  - name: "gcr.io/cloud-builders/gcloud"
    args: ["app", "deploy"]
    timeout: "1600s"

Хотите ли вы обналичить их за один запуск Cloud Build или за несколько запусков Cloud Build?

guillaume blaquiere 20.05.2024 18:17

@guillaumeblaquiere достаточно одного, поскольку разные триггеры предъявляют разные требования

BlueBeret 21.05.2024 04:19

В этом случае имейте в виду, что по умолчанию между шагами сохраняется только символ /workspace. Поэтому храните свои зависимости в этом каталоге (или его подкаталоге), чтобы библиотеки оставались в «кеше».

guillaume blaquiere 21.05.2024 09:20

@guillaumeblaquiere, извини, я имею в виду те же триггеры, но разные запуски сборки. Например, я хочу использовать вчерашний кеш pip/yarn для использования сегодня, завтра или в следующей сборке.

BlueBeret 22.05.2024 10:54
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
4
94
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Между разными сборками у вас есть 2 решения:

  • Либо вы используете Cloud Storage для хранения данных о зависимостях. В начале сборки вы загружаете библиотеки и сохраняете их (или их обновление) в конце. Также рекомендуется заархивировать ваши данные в формате tar.gz перед их переносом в облачное хранилище. Один объект быстрее, чем несколько маленьких. Для этого вы можете использовать функцию Хранилище артефактов.
  • Или создайте образ контейнера со всеми зависимостями и используйте его в качестве образа шага в Cloud Build. На этот раз вам понадобится побочный конвейер для подготовки и создания этого пошагового образа.

Другие вопросы по теме