VS Code + SFTP + eVPNG

VS Code + SFTP + eVPNG

Anton Peravyshyn
Статья про настройку автоматической синхронизации локальной папки с VM

Проблематика

Каждый из нас знает порядок разработки:

  1. Локальные изменения
  2. Синхронизация с VM – предварительно запустив VM
  3. Тестирование изменений – подключаясь по ssh через различные терминалы

Второй пункт мы выполняем вручную, запуская *synchronize*.bat скрипты и ожидая синхронизации. Зачастую это является "узким горлышком" при тестировании изменений в одном файле. Каждый раз ждать по ~15 секунд ради одного файла совсем не хочется.

Редактирование прямо на VM

Чтобы избежать ожидания, можно редактировать файлы прямо на VM:

Минусы:

  • Можно "затереть" свои изменения при синхронизации (давно в этом клубе)
  • Егор поделился удобным подходом к тестированию, с использованием VS Code. И временные файлы для синхронизированные с VM смотрятся уже не так удобно.

Эта статья расширяет и продолжает идею Егора:

Галочка для assessment получена, можно переходить к сути :)
Автоматизация через WinSCP – это более комплексный подход, который не будет зависеть от редактора
Это же статья позволяет локально упростить писание тестов / sh-скриптов для удаленного сервера используя VS Code


VS Code + SFTP

Для того, чтобы упростить синхронизацию и при этом не создать себе еще больше проблем, мы будем синхронизировать сразу директории.
Для этого воспользуемся расширением SFTP для VS Code, а также настроим свой workspace.

Идею я подсмотрел здесь


Установка и настройка

Для начала нужно скачать расширение SFTP для VS Code. Например за авторством @liximomo.

download SFTP Extension

Для корректной работы, нужно включить debug:

  1. Открыть пользовательские настройки: Сtrl + ,

Установить ftp.debug в true и перезапустить VS Code.

set ftp.debug to true
Более подробно про debug можно почитать в ReadME на странице расширения


Настройка workspace в VS Code

Можно скипнуть, если уже настраивали, про SFTP дальше
Ниже представлена моя настройка workspace для редактирования sh-скриптов

Для начала нам нужно открыть рабочую папку. Т.к. большинство скриптов сконцентрировано в service, то ее и откроем:

open service folder

Для удобства и своего спокойствия сохраним свой workspace: File > Save Workspace As...

Для этого я создал папку C:\Users\USERNAME\.vscode\workspaces
save local workspace

Лично мне для редактирования sh-скриптов не нужны папки design, packaging, а из test нужны лишь 2 скрипта. VS Code позволяет настроить отображение
файлов и папок:

Ctrl + Shift + P > workspace settings > files.exclude

open workspace settings
configure files.exclude
После добавления первого паттерна в workspace создатся файл .vscode/settings.json в котором будут сохранены настройки files.exclude

Если посидеть достаточно долго, можно получить что-то вроде:

"files.exclude": {
        "design": true,
        "packaging": true,
        "test/.settings": true,
        "test/**.**": true,
        "test/diameter-simulator": true,
        "test/provisioning": true,
        "test/src/main": true,
        "test/src/test/java": true,
        "test/src/test/resources/*.*": true,
        "test/src/test/resources/cdr": true,
        "test/src/test/resources/diameterresponse": true,
        "test/src/test/resources/eventlog": true,
        "test/src/test/resources/pb_decision_points": true,
        "test/src/test/resources/scenarios": true,
        "test/src/test/resources/scripts/*.*": true,
        "test/src/test/resources/scripts/common": true,
        "test/src/test/resources/scripts/sql": true,
        "test/src/test/resources/statistic": true,
        "test/src/test/resources/suites": true,
        "test/src/test/resources/testcaseproperties": true,
        "test/target/": true
    }


Настройка SFTP

Откроем Command Palette: Ctrl + Shift + P > введем SFTP: Config

После чего в директории .vscode создастся и откроется файл sftp.json.

sftp.json содержит параметры для подключения к удаленному серверу, а также еще два нужных нам параметра:

  • remotePath – директория, с которой мы будем синхронизироваться
  • uploadOnSave – синхронизация файла на VM после локального сохранения

Сконфигурируем его под наши нужны. Т.к. локальный workspace находится в папке service, то и на VM будем с ней синхронизироваться:

{
    "name": "css201",
    "host": "localhost",
    "protocol": "sftp",
    "port": 22,
    "username": "root",
    "remotePath": "/root/repositories/mac-evpng-ece-rep/0/service/",
    "uploadOnSave": true
}
! Мы используем sftp, а не ssh
! Локальные пути в workspace учитываются при синхронизации.
Т.е. если создать файл в *\service\test\src\test\resources, то на VM он создатся по такому же пути


Тестирование

Для начала подключимся к нашей VM и перейдем в директорию, с которой синхронизируемся:

Запустим консоль: Ctrl + Shift + ` и введем:

бла-бла-бла\service> ssh root@localhost
root@localhost's password: бла-бла-бла
Last login: Sun Jan 23 22:20:28 2022 from 10.0.2.2
--------------------------------------
CSS 20.1 SDE Base Image (Rev 1)
For internal use by BDGS SA COS SD VAS
--------------------------------------
[root@sde-201 ~]# cd repositories/mac-evpng-ece-rep/0/service/
[root@sde-201 service]# ls | grep my_script.sh

Команда ничего не выведет, т.к. нашего скрипта еще нет

Создадим локально файл my_script.sh

create new file
set name to my_script.sh

Внесем в него изменения: добавим вывод строки "hi" и сохраним.

fill my_script.sh

После сохранения нужно ввести пароль во всплывающем окне (т.к. в sftp.json мы пароль не указывали)

enter root password

Теперь еще раз запустим:

[root@sde-201 service]# ls | grep my_script.sh
my_script.sh

Мы видим, что наш файл появился на VM. Можем его запустить, предварительно дав ему права на это.

[root@sde-201 service]# chmod 700 my_script.sh
[root@sde-201 service]# ./my_script.sh
hi
run my_script.sh
Данную настройку можно экстраполировать на любой сценарий: тестирование, редактирование cli-файлов, редактирование java и т.д.
Также в контекстом меню появились новые функции от SFTP ext.
Но, думаю, что описание излишне :)
sync options


Report Page