我对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
复制命令给了我“没有匹配的文件”的错误。另外,我遇到的同样的错误。
我做错了什么?预先谢谢你!
答案 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