Как найти исходный кеш модуля Go? - PullRequest
0 голосов
/ 29 августа 2018

Я обновил проект до Go 1.11 и включил поддержку модулей для моего проекта, но кажется, что CircleCI повторно загружает зависимости при каждой сборке. Я знаю, что CircleCI позволяет выполнять кеширование между перестроениями, поэтому я просмотрел документацию для модулей Go, и хотя в ней упоминается кеш, я не могу найти, где он на самом деле существует.

Где находится исходный кеш для модулей Go?

1 Ответ

0 голосов
/ 29 августа 2018

Начиная с финальной версии 1.11, кэш модуля go (используемый для хранения загруженных модулей и исходного кода) находится в расположении $GOPATH/pkg/mod (см. Документы здесь ) , Для пояснения, go кэш сборки (используется для хранения последних результатов компиляции) находится в другом месте.

В этой статье указывалось, что она находится в $GOPATH/src/mod, но за промежуток времени последних ~ 40 дней команда golang, должно быть, изменила это целевое местоположение. В этой ветке сообщений обсуждается, почему загруженные элементы оказались в $GOPATH/pkg.

Вы также можете использовать команду go mod download -json для просмотра загруженных модулей / исходных метаданных и их расположения на локальном диске. Пример вывода ниже:

$ go mod download -json
go: finding github.com/aws/aws-sdk-go v1.14.5
go: finding github.com/aws/aws-lambda-go v1.2.0
{
    "Path": "github.com/aws/aws-lambda-go",
    "Version": "v1.2.0",
    "Info": "/go/pkg/mod/cache/download/github.com/aws/aws-lambda-go/@v/v1.2.0.info",
    "GoMod": "/go/pkg/mod/cache/download/github.com/aws/aws-lambda-go/@v/v1.2.0.mod",
    "Zip": "/go/pkg/mod/cache/download/github.com/aws/aws-lambda-go/@v/v1.2.0.zip",
    "Dir": "/go/pkg/mod/github.com/aws/aws-lambda-go@v1.2.0",
    "Sum": "h1:2f0pbAKMNNhvOkjI9BCrwoeIiduSTlYpD0iKEN1neuQ=",
    "GoModSum": "h1:zUsUQhAUjYzR8AuduJPCfhBuKWUaDbQiPOG+ouzmE1A="
}
{
    "Path": "github.com/aws/aws-sdk-go",
    "Version": "v1.14.5",
    "Info": "/go/pkg/mod/cache/download/github.com/aws/aws-sdk-go/@v/v1.14.5.info",
    "GoMod": "/go/pkg/mod/cache/download/github.com/aws/aws-sdk-go/@v/v1.14.5.mod",
    "Zip": "/go/pkg/mod/cache/download/github.com/aws/aws-sdk-go/@v/v1.14.5.zip",
    "Dir": "/go/pkg/mod/github.com/aws/aws-sdk-go@v1.14.5",
    "Sum": "h1:+l1m6QH6LypE2kL0p/G0Oh7ceCv+IVQ1h5UEBt2xjjU=",
    "GoModSum": "h1:ZRmQr0FajVIyZ4ZzBYKG5P3ZqPz9IHG41ZoMu1ADI3k="
}

Этот вывод получен из сборки на CircleCI 2.0 с использованием их официального circleci/golang:1.11 образа. Это надуманный пример, показывающий, как включить шаги restore_cache и save_cache для нового кэша модуля golang:

steps:
    - checkout
    - restore_cache:
       keys:
         - gomod-cache-{{ checksum "go.sum" }}
    - run: go vet ./...
    - save_cache:
        key: gomod-cache-{{ checksum "go.sum" }}
        paths:
          - /go/pkg/mod
...