# #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
с als
.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.