Команда Dockerfile go build не кэшируется в действиях Github

# #docker #go #github #dockerfile #github-actions

Вопрос:

Я использую действие Github actions/cache@v2 для кэширования слоев docker. Ниже build.yml приведен файл:

 name: Build

on:
  push:
    branches:
      - '**'
jobs:
  release:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout sources
        uses: actions/checkout@v2

      - name: Get Docker Tags
        id: getDockerTag
        run: |
            echo ::set-output name=image_tag::${{github.sha}}
            echo "Setting image tag as :: ${{github.sha}}"

      # Set up buildx runner
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v1

      - name: Cache Docker layers
        uses: actions/cache@v2
        with:
          path: /tmp/.buildx-cache
          key: ${{ runner.os }}-buildx-${{ hashFiles('**/Dockerfile') }}
          restore-keys: |
            ${{ runner.os }}-buildx-

      - name: Build docker image 1
        uses: docker/build-push-action@v2
        with:
          push: false
          tags: go-docker-caching:${{ steps.getDockerTag.outputs.image_tag }}
          cache-from: type=local,src=/tmp/.buildx-cache
          cache-to: type=local,dest=/tmp/.buildx-cache,mode=max

 

Докер-файл:

 FROM golang:latest as builder

# create a working directory
WORKDIR /main

COPY go.mod go.sum ./

RUN ls -a
# Download dependencies
RUN go mod tidy
RUN go mod download

COPY . .

## Build binary
#RUN CGO_ENABLED=0 GOARCH=amd64 GOOS=linux go build -a -installsuffix cgo -ldflags="-w -s" -o gin_test
RUN go build -o main

# use a minimal alpine image for deployment
FROM alpine:latest
# add ca-certificates in case you need them
RUN apk update amp;amp; apk add ca-certificates amp;amp; rm -rf /var/cache/apk/*
# set working directory
WORKDIR /root
# copy the binary from builder
COPY --from=builder /main .
RUN touch .main.yml

# Specify the PORT
EXPOSE 8080:8080

# run the binary
CMD ["./main"]

 

На локальном компьютере все команды docker кэшируются, но в действиях Github следующие команды не кэшируются, что приводит к тому, что сборка docker занимает около 3 минут для загрузки модулей, даже если ничего не изменилось.

 RUN go mod download
RUN go build -o main
 

Как убедиться, что все команды кэшированы?