我遇到了this question中列出的同样问题。但是,当我使用gitlab-ci
构建我的容器时,这种情况发生在我身上 - 但只有在我使用缓存功能时才会发生。
给出以下Dockerfile:
FROM bitwalker/alpine-elixir-phoenix
ARG MIX_ENV=prod
ENV MIX_ENV ${MIX_ENV}
ARG PORT=4000
ENV PORT ${PORT}
COPY . /app
WORKDIR /app
RUN mix deps.get --only prod
RUN npm install
RUN mix compile
RUN brunch build --production
RUN mix phoenix.digest
EXPOSE ${PORT}
CMD mix phoenix.server
brunch build --production
行触发时发生以下错误:
编译web / static / js / socket.js失败。找不到预设 “/ app / node_modules / babel-preset-es2015”相对于目录 “web / static / js”;编译web / static / js / app.js失败。不能 找到预设“/ app / node_modules / babel-preset-es2015”相对于 目录“web / static / js”命令'/ bin / sh -c brunch build --production'返回非零代码:1
以下是gitlab-ci.yml
中我的构建工作的内容:
cache:
untracked: true
key: "$CI_BUILD_REF_NAME"
paths:
- node_modules/
stages:
- test
- build
- review
- staging
- production
- cleanup
build-image:
stage: build
image: docker:latest
# When using dind, it's wise to use the overlayfs driver for
# improved performance.
variables:
DOCKER_DRIVER: overlay
services:
- docker:dind
before_script:
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
script:
- docker build --pull --build-arg MIX_ENV=prod -t $CONTAINER_TEST_IMAGE .
- docker push $CONTAINER_TEST_IMAGE
only:
- branches
except:
- master
我已确认/app/node_modules/babel-preset-es2015
文件夹存在,并且我已尝试按照链接(上方)中的说明进行操作。删除node_modules
文件夹或清理npm缓存似乎没有帮助。
有效的一件事就是禁用gitlab缓存。我能够通过构建新分支来避免这个问题(因此,创建一个新的缓存)。然而,问题又回来了。没有缓存的构建始终有效。
我错过了gitlab-ci
缓存配置的内容吗?还有,有没有办法重置gitlab缓存(我正在使用gitlab.com上的最新产品)