我刚接触过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
复制命令给我的错误是";没有匹配的文件";。此外,我在chown上也犯了同样的错误。
我做错了什么?提前谢谢!
我采用的方法是运行两个阶段,第一个阶段缓存文件,第二个阶段使用这些文件进行部署。我不使用工件功能,所以我不能评论它是如何工作的,但当它被执行时,文件可能已经不可用了。
请注意我是如何在build_stage
中使用cache
来缓存/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