1. Что нужно для старта
2. Настройка проекта
3. Структура веток
4. Взаимодействие Scratch Org и Git
Предоставляемый Salesforce Scratch Org, то это открывает доступ к более удобной работе с Git.
В этой статье пройдём по следующим пунктам:
- Настройку проекта для работы с git
- Создадим структуру веток
- Внесение первых изменений
- Взгляд на взаимодействие Scratch Org и Git
Что нужно для старта
Настроенная Visual Studio Code. Как настроить найдёте здесь.
Установленный Git Bash, качаем по ссылке.
Аккаунт на github c созданным репозиторием.
Созданная Scratch Org. Как настроить Scratch Org .
Настройка проекта
--------------------------------------------------------------Git Init--------------------------------------------------------------
- Создаём проект в VSC:
sfdx force:project:create -n "MyProjectForGit"
Берём в руки Git Bash .
- Проинициализируем проект.
Команда:git init
В папке откуда была вызвана команда появился .git файл.
Не все папки выделились для гита как новые, пропущены пустые.
-
Так как SFDX создаёт новую папку для проекта, то необходимо открыть проект через неё. Что бы VSC и SFDX добавили некоторые файлы в наш проект.
Зачем? Да, что бы добавить их в игнорируемые. -
Добавьте
.vscode
.forceignore
.sfdx/
.vscode/
config/
sfdx-project.json в .gitignore, подробнее о .gitignore -
Проект должен иметь такой вид
-------------------------------------------------------------Remote-------------------------------------------------------------
-
Добавим удалённый репозиторий
Команда:git add remote add origin git@github.com:AlexBogomaz/SFDX-and-CI.git
ссылку на репозиторий берём тут
-
Посмотрим добавлен ли репозиторий.
Команда:git remote -v
origin git@github.com:AlexBogomaz/SFDX-and-CI.git (fetch)
origin git@github.com:AlexBogomaz/SFDX-and-CI.git (push)
- Создайте SSH ключ, что бы получить доступ к репозиторию. Если у вас его ещё нет.
------------------------------------------------------------Stage files------------------------------------------------------------
Необходимо добавить папку force-app к отслеживаемым.
Команда: git add .
----------------------------------------------------------First commit----------------------------------------------------------
Создадим первый commit, который будет хранить структуру SF проекта.
Команда: git commit -m "Init commit"
----------------------------------------------------------------Push---------------------------------------------------------------
- Отправим необходимую нам структуру на репозиторий:
Команда:git push origin master
После успешной отправки изменений, на репозитории появилась структура проекта и ветка master.
Структура веток
Для нормального процесса разработки как минимум нужно иметь структуру веток. Чтобы каждый из этапов разработки, были разделены. Будь то всего пара изменений - или целый этап выполненной работы за спринт.
Создадим новые ветки.
Команды:
git checkout -b staging master
git checkout -b uat master
git checkout -b qa master
git checkout -b develop master
git checkout -b task-featureA develop
git push --all -u
Итак, теперь эти ветки существуют так же и на вашем репозитории.
Пока что они ничем не отличаются. Но в дальнейшем каждая задача будем представлять собой новую ветку. И только пройдя через все ветки, решения будут оказываться в master. По названиям видно для чего нужна каждая из них.
В итоге, имеем такую картину.
Взаимодействие Scratch Org и Git
-
Зайдём в ветку task-featureA, которая создана под текущее задание
Команда:git checkout task-featureA
-
Создали apex class. Кстати, если нет папки classes, то создайте её сами.
-
Сохраним эти изменения на Scratch Org.
Команда:sfdx force:source:push
-
Если класс успешно сохранён на Scratch Org, то теперь представив что это и была наша задача сделаем коммит и отправим эти изменения на репозиторий.
Команды:
git add .
git commit -m "First Class"
git push origin task-featureA
-
На репозитории создаём pull request, запрос на то что бы ваши данные из ветки task-featureA прошли дальше, в ветку develop и так далее в плоть то ветки master. Но это уже решат ревьюверы.
----------------------------------------------------------------Pull---------------------------------------------------------------
-
Так как таких изменений могло быть множество, и нужно решать новую задачу. То будет создана ветка.
Команда:git checkout -b task2
-
Она должна иметь актуальный набор изменений, поэтому стянем в неё данные с master, так как не мы одни добавляли изменения.
Команда:git pull origin master
-
Сохраним эти изменения у себя в Scratch Org.
Команда:sfdx force:source:push
Вот и всё, вы можете продолжать работать с актуальным функционалом.