Как автоматически развернуть на VPS в Docker из Gitlab CI - PullRequest
0 голосов
/ 02 апреля 2019

Я пытаюсь развернуть на 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

...