Angular 无法访问Gitlab CI角度工件

Angular 无法访问Gitlab CI角度工件,angular,docker,gitlab,Angular,Docker,Gitlab,我正在尝试使用gitlab管道构建和部署我的angular项目。有两份工作。一个用于构建angular应用程序,另一个用于部署。我的gitlab ci.yml如下所示 image: node:latest cache: key: ${CI_COMMIT_REF_SLUG} paths: - node_modules/ before_script: - npm install > /dev/null stages: - build - deploy build

我正在尝试使用gitlab管道构建和部署我的angular项目。有两份工作。一个用于构建angular应用程序,另一个用于部署。我的
gitlab ci.yml
如下所示

image: node:latest

cache:
  key: ${CI_COMMIT_REF_SLUG}
  paths:
  - node_modules/

before_script:
  - npm install > /dev/null

stages:
  - build
  - deploy

build:
    stage: build
    artifacts: 
        paths:
            - dist/
        expire_in: 1 week
    script:
        - npm run build --prod

deploy:
  stage: deploy
  dependencies:
    - build
  environment: production
  image: mjsarfatti/gitlab-ci-pipeline-php-aws:latest
  before_script:
    - mkdir ~/.aws/
    - touch ~/.aws/credentials
    - printf "[eb-cli]\naws_access_key_id = %s\naws_secret_access_key = %s\n" "$AWS_ACCESS_KEY_ID" "$AWS_SECRET_ACCESS_KEY" >> ~/.aws/credentials
  script:
    - git checkout master
    - eb deploy my_project
  only:
    - master
部署作业中使用的aws cli生成位于我的项目根目录中的dockerfile。我的问题是 每次运行部署作业时,都会出现以下错误:

Step 3/7 : COPY dist/src /usr/share/nginx/html
44 COPY failed: stat /var/lib/docker/tmp/docker-builder648218383/dist/src: no such file or directory.

似乎缺少来自上一个构建作业的工件。我的
gitlab ci.yaml
文件有什么问题?

当工件被提取到其他管道步骤中时,它被提取到一个不同的位置,您的代码通过git被拉下来。对我来说,我已经看到了从代码所在的父目录中放入的工件。例如,如果我有这个目录结构:

--- gitlab_ci_root
   --- my_code
提取的工件将放在
gitlab\u ci\u root
下,而不是
my\u code

您可以通过在
deploy
步骤中放置两个
ls
来测试这一点

deploy:
  stage: deploy
  dependencies:
    - build
  environment: production
  image: mjsarfatti/gitlab-ci-pipeline-php-aws:latest
  before_script:
    - ls # directory list of current directory, likely your code
    - ls ../ # directory list of the parent directory.
    - mkdir ~/.aws/
    - touch ~/.aws/credentials
    - printf "[eb-cli]\naws_access_key_id = %s\naws_secret_access_key = %s\n" "$AWS_ACCESS_KEY_ID" "$AWS_SECRET_ACCESS_KEY" >> ~/.aws/credentials
  script:
    - git checkout master
    - eb deploy my_project
  only:
    - master

找到要提取的
dist/
目录的位置后,您可以在脚本中将dist移动到需要的任何位置。

如何将
dist
文件夹添加到
缓存路径中,就像使用
节点\u模块那样?我不确定它是否有效,但值得一试。我认为这不是这里描述的正确解决方案: