Angular的Gitlab管道CI / CD .gitlab-ci.yml

时间:2020-09-09 19:51:57

标签: angular gitlab

我对Gitlab的CD还是陌生的,并且想为Angular添加管道。一切正常,除了我无法使用下面提到的以下命令将dist文件夹从一个位置复制到另一位置。

下面是我的yml文件

image: node:latest
cache:
  paths:
    - node_modules/
deploy_stage:
  stage: deploy
  environment: staging
  only:
    - staging
  script:
    - echo "$(ls -la)"
    - npm install
    - npm install -g @angular/cli
    - ng build --prod --build-optimizer --progress=false
    - echo "$(ls -la dist/)"
  artifacts:
    expire_in: 1 day
    paths:
      - cp -R ~/builds/KtpUrx12/0/root/admin/dist/ /var/www/vhosts/domain.com/staging.domain.com
      - chown -R myadmin:admin /var/www/vhosts/domain.com/staging.domain.com

复制命令给了我“没有匹配的文件”的错误。另外,我遇​​到的同样的错误。

我做错了什么?预先谢谢你!

1 个答案:

答案 0 :(得分:0)

我采用的方法是运行两个阶段,第一个阶段缓存文件,第二个阶段使用这些文件进行部署。我没有使用工件功能,因此无法评论它的工作方式,但是有可能在执行文件时这些文件不再可用。

请注意如何在cache内使用build_stage来缓存/dist文件夹以供在deploy_stage中使用。

我还展示了如何使用scp在服务器之间复制,这可能会派上用场。它还可以复制到127.0.0.1

image: node:latest

cache:
  paths:
    - node_modules/

stages:
  - build
  - deploy

build_stage:
  stage: build
  only:
    - staging
  cache:
    paths:
      - dist/
  script:
    - rm ./package-lock.json
    - npm install
    - ./node_modules/@angular/cli/bin/ng build --prod --build-optimizer --progress=false

deploy_stage:
  stage: deploy
  environment: staging
  only:
    - staging
  script:
    - scp -r dist/my-app/* $STAGING_SERVER_URI:/opt/staging/my-app