Я не получаю такого файла или каталога при перемещении содержимого папки dist с gitlab на экземпляр сервера aws

# #gitlab #gitlab-ci

#gitlab #gitlab-ci

Вопрос:

Я новичок в Gitlab CI/CD и пытаюсь исправить это весь день, но ничего не работает. Я пытаюсь переместить папку dist, созданную gitlab runner после этапа сборки, в папку экземпляра aws ec2. В настоящее время я внедряю конвейер CI/CD с помощью Gitlab, и вот как я .gitlab-ci.yml выгляжу:

 # Node Image for docker on which code will execute image: node:latest  # This is the stages / task to perfom in jobs stages:  - build  - deploy  # caching for reuse  cache:  key: "$CI_COMMIT_REF_SLUG"  paths:  - node_modules/  # This command is run before the execution of stages before_script:  - npm install  # Job One for making build build_testing_branch:  stage: build  script:  - node --max_old_space_size=4096 --openssl-legacy-provider ./node_modules/@angular/cli/bin/ng build --configuration=dev-build --build-optimizer  only: ['testing']  # Job Two for deploy build to server deploy_testing_branch:  stage: deploy   before_script:  - 'which ssh-agent || ( apt-get update -y amp;amp; apt-get install openssh-client -y )'  - eval $(ssh-agent -s)  # - echo "$SSH_PRIVATE_KEY" | tr -d 'r' | ssh-add -  - mkdir -p ~/.ssh  - chmod 700 ~/.ssh  - echo -e "Host *ntStrictHostKeyChecking nonn" gt; ~/.ssh/config  # - apt-get update -y  # - apt-get -y install rsync   artifacts:  paths:  - dist/   script:  - ssh-add lt;(echo "$SSH_PRIVATE_KEY")  - ssh -p22 ubuntu@$SERVER_IP "rm -r /usr/share/nginx/user-host/ui-user-host/dist/; mkdir /usr/share/nginx/user-host/ui-user-host/dist/"  - scp -P22 -r $CI_PROJECT_DIR/dist/ ubuntu@$SERVER_IP:/usr/share/nginx/user-host/ui-user-host/dist/   only: ['testing']  

Процесс сборки отлично работает с подтверждением успеха, но этап развертывания завершается неудачей, потому что я получаю:

 $scp -P22 -r $CI_PROJECT_DIR/dist/ ubuntu@$SERVER_IP:/usr/share/nginx/user-host/ui-user-host/dist/ /builds/user-live/ui-user-host/dist: No such file or directory Cleaning up project directory and file based variables  

Итак, я не понимаю, почему он не может найти папку dist в указанном выше месте. Если я правильно понимаю, это должно быть доступно в файловой системе gitlab runner. Это потому, что команда scp неверна?

Редактировать:

Я также пытался с

 - scp -P22 -r dist/ ubuntu@$SERVER_IP:/usr/share/nginx/user-host/ui-user-host/dist/  

и

 - scp -P22 -r dist/* ubuntu@$SERVER_IP:/usr/share/nginx/user-host/ui-user-host/dist/  

но не повезло!

Комментарии:

1. Разве вы не создаете build_testing_branch диск и не пытаетесь включить его в следующую работу deploy_testing_branch . Вам придется добавить артефакты, которые вы отдали на deploy_testing_branch build_testing_branch работу. И просто проверьте, доступно ли оно в разделе deploy_testing_branch с a ls .

2. @Origin да, я попробовал это вчера, и это сработало. Я создал артефакт на этапе build_testing_branch, добавив его в многострочном формате: artifacts: paths: - dist и изменил строку папки dist на эту - scp -P22 -r dist ubuntu@$SERVER_IP:/usr/share/nginx/user-host/ui-user-host/dist/ , теперь она работает!

3. Я добавил ответ. Пожалуйста, подумайте о том, чтобы принять его, если это помогло вам, чтобы он также мог быть полезен и другим.

Ответ №1:

Вы создаете свою dist папку в build_testing_branch задании и пытаетесь получить к ней доступ, deploy_testing_branch чтобы это сработало, вы должны указать папку dist в качестве артефакта в build_testing_branch задании (поскольку там создается dist), а не в deploy_testing_branch.