VS Code + SFTP + eVPNG
Anton PeravyshynСтатья про настройку автоматической синхронизации локальной папки с VM
Проблематика
Каждый из нас знает порядок разработки:
- Локальные изменения
- Синхронизация с VM – предварительно запустив VM
- Тестирование изменений – подключаясь по 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.

Для корректной работы, нужно включить debug:
- Открыть пользовательские настройки: Сtrl + ,
Установить ftp.debug в true и перезапустить VS Code.

Более подробно про debug можно почитать в ReadME на странице расширения
Настройка workspace в VS Code
Можно скипнуть, если уже настраивали, про SFTP дальше
Ниже представлена моя настройка workspace для редактирования sh-скриптов
Для начала нам нужно открыть рабочую папку. Т.к. большинство скриптов сконцентрировано в service, то ее и откроем:

Для удобства и своего спокойствия сохраним свой workspace: File > Save Workspace As...
Для этого я создал папку C:\Users\USERNAME\.vscode\workspaces

Лично мне для редактирования sh-скриптов не нужны папки design, packaging, а из test нужны лишь 2 скрипта. VS Code позволяет настроить отображение
файлов и папок:
Ctrl + Shift + P > workspace settings > 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


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

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

Теперь еще раз запустим:
[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

Данную настройку можно экстраполировать на любой сценарий: тестирование, редактирование cli-файлов, редактирование java и т.д.
Также в контекстом меню появились новые функции от SFTP ext.
Но, думаю, что описание излишне :)
