#vue.js #continuous-integration #gitlab #gitlab-ci #gitlab-ci-runner
#vue.js #непрерывная интеграция #gitlab #gitlab-ci #gitlab-ci-runner
Вопрос:
Я пытаюсь развернуть приложение из репозитория GitLab на сервер под управлением Ubuntu 20.04. GitLab runner зарегистрирован и запущен, добавлены все ключи SSH; Я создал .gitlab-ci.yml, но получаю сообщение об ошибке «Отказано в разрешении (открытый ключ)». Я исправил это, и теперь я получаю dist/*: No such file or directory
Мой файл .gitlab-ci.yml находится здесь:
stages:
- build
- deploy
# build stage
build_app:
image: node:alpine
stage: build
only:
- master
script:
- npm install
- npm run build
cache:
paths:
- node_modules/
artifacts:
paths:
# build folder
- dist/
expire_in: 1 hour
# production stage
production:
stage: deploy
before_script:
- mkdir -p ~/.ssh
- echo -e "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa
- chmod 600 ~/.ssh/id_rsa
- '[[ -f /.dockerenv ]] amp;amp; echo -e "Host *ntStrictHostKeyChecking nonn" > ~/.ssh/config'
script:
- scp -r dist/* root@server_ip:/var/www/html/my_app
Моя задача — создать файл .gitlab-cd.yml, который соберет приложение в docker и отправит эту сборку на рабочий сервер. Я прочитал всю документацию, но теперь я совершенно сбит с толку и понятия не имею, что я вообще делаю.
Может ли кто-нибудь помочь и направить меня?
Комментарии:
1. Вы можете попробовать использовать полный путь к каталогу артефактов:
scp -r ${CI_PROJECT_DIR}/dist/* ...
. Если это не помогает, то вы можете добавитьls
в свой скрипт и проверить, какие файлы представлены в вашем каталоге сборки.2. Один вопрос новичка, где я могу найти свой CI_PROJECT_DIR и как я могу запускать конвейер каждый раз при новом слиянии
3.
CI_PROJECT_DIR
является переменной среды (gitlab определяет ее docs.gitlab.com/ee/ci/variables/predefined_variables.html ), вы можете добавитьecho $CI_PROJECT_DIR
, чтобы посмотреть, что это такое.4. для запуска каждый раз при новом слиянии вы можете добавлять
only: - merge_requests
для задания ( docs.gitlab.com/ee/ci/merge_request_pipelines /… )
Ответ №1:
почему происходит сбой scp
Проверьте, существует ли ваш dist
каталог и есть ли что-то внутри: - ls dist
(вы увидите вывод команды в «консоли заданий» в gitlab)
Я думаю, что каталог пуст, тогда нужно проверить build_app
задание
как запускать задание только для запросов на слияние?
добавить only: - merge_requests
для задания подробнее
deploy:
stage: deploy
script: ./deploy
only:
- merge_requests
Разное
Я предлагаю использовать rsync
вместо scp
, в нем используется специальный алгоритм дельта-передачи и несколько оптимизаций, чтобы ускорить работу.
Комментарии:
1. Я перешел на rsync, и я получаю ошибку «отказано в разрешении», даже добавлены открытые и закрытые ключи ssh
2. @user38974 прежде всего проверьте, что происходит с вашим
dist
каталогом