Я пытаюсь развернуть на Docker в моем VPS каждый раз, когда в моем проекте в Gitlab делается новый коммит.Но у меня проблема с этим.
Я пытался установить sshpass
, а затем scp
папку и файлы.Но он говорит:
sshpass: Failed to run command: No such file or directory
.
Папка и файлы, которые я пытаюсь получить со стадии build
, поэтому мне не нужно заново собирать мое приложение.
Вот мой .gitlab-ci.yml
файл:
image: node:9.6.1
cache:
paths:
- node_modules/
- build/
- docker-compose.yml
- Dockerfile
- nginx.conf
stages:
- build
- test
- dockerize
build-stage:
stage: build
script:
- npm install
- CI=false npm run build
artifacts:
paths:
- build/
- docker-compose.yml
- nginx.conf
test-stage:
stage: test
script:
- npm install
- CI=false npm run test
dockerize-stage:
stage: dockerize
image: tmaier/docker-compose:latest
services:
- docker:dind
dependencies:
- build-stage
tags:
- docker
script:
- apk update && apk add sshpass
- sshpass -V
- export SSHPASS=$USER_PASS
- ls -la
- sshpass -e ssh -o stricthostkeychecking=no root@ip:/home mkdir new-super-viva
- sshpass -e scp -o stricthostkeychecking=no -r build user@ip:/home/new-folder
- sshpass -e scp -o stricthostkeychecking=no -r docker-compose.yml user@ip:/home/new-folder
- sshpass -e scp -o stricthostkeychecking=no -r nginx.conf user@ip:/home/new-folder
- sshpass -e ssh -o stricthostkeychecking=no user@ip:/home/new-folder docker-compose up --build
Вот фактический вывод из Gitlab CI:
$ sshpass -V
sshpass 1.06
(C) 2006-2011 Lingnu Open Source Consulting Ltd.
(C) 2015-2016 Shachar Shemesh
This program is free software, and can be distributed under the terms of the GPL
See the COPYING file for more information.
Using "assword" as the default password prompt indicator.
$ export SSHPASS=$USER_PASS
$ ls -la
total 912
drwxrwxrwx 7 root root 4096 Apr 2 13:24 .
drwxrwxrwx 4 root root 4096 Apr 2 13:24 ..
-rw-rw-rw- 1 root root 327 Apr 2 13:24 .env
drwxrwxrwx 6 root root 4096 Apr 2 13:24 .git
-rw-rw-rw- 1 root root 329 Apr 2 13:24 .gitignore
-rw-rw-rw- 1 root root 1251 Apr 2 13:24 .gitlab-ci.yml
-rw-rw-rw- 1 root root 311 Apr 2 11:57 Dockerfile
-rw-rw-rw- 1 root root 2881 Apr 2 13:24 README.md
drwxrwxrwx 5 root root 4096 Apr 2 13:20 build
-rw-rw-rw- 1 root root 340 Apr 2 13:24 build.sh
-rw-rw-rw- 1 root root 282 Apr 2 11:57 docker-compose.yml
-rw-rw-rw- 1 root root 1385 Apr 2 11:57 nginx.conf
drwxr-xr-x 1191 root root 36864 Apr 2 13:22 node_modules
-rw-rw-rw- 1 root root 765929 Apr 2 13:24 package-lock.json
-rw-rw-rw- 1 root root 1738 Apr 2 13:24 package.json
drwxrwxrwx 4 root root 4096 Apr 2 13:24 public
drwxrwxrwx 10 root root 4096 Apr 2 13:24 src
$ sshpass -e ssh -o stringhostkeychecking=no user@ip:/home mkdir new-folder
sshpass: Failed to run command: No such file or directory
ERROR: Job failed: exit code 3
Есть ли способ скопировать папку build
, *Файлы 1021 * и nginx.conf
от build-stage
до dockerize-stage
, а затем передать его с sshpass
на VPS?Это даже не работает, чтобы создать папку с mkdir
.Я также попытался создать папку вручную, а затем удалить эту команду из .gitlab-ci.yml
, но все еще с тем же выводом.
Просто чтобы вы знали, что я добавил USER_PASS
in: https://gitlab.com/user/project/settings/ci_cd
в переменные окружения и позволил ей non-protected