Работа с Scratch Org и Git

1. Что нужно для старта
2. Настройка проекта
3. Структура веток
4. Взаимодействие Scratch Org и Git

Предоставляемый Salesforce Scratch Org, то это открывает доступ к более удобной работе с Git.
В этой статье пройдём по следующим пунктам:

  • Настройку проекта для работы с git
  • Создадим структуру веток
  • Внесение первых изменений
  • Взгляд на взаимодействие Scratch Org и Git

Что нужно для старта

:round_pushpin: Настроенная Visual Studio Code. Как настроить найдёте здесь.
:round_pushpin: Установленный Git Bash, качаем по ссылке.
:round_pushpin: Аккаунт на github c созданным репозиторием.
:round_pushpin: Созданная Scratch Org. Как настроить Scratch Org .

Настройка проекта

:hammer_and_wrench:--------------------------------------------------------------Git Init--------------------------------------------------------------:hammer_and_wrench:

  1. Создаём проект в VSC: sfdx force:project:create -n "MyProjectForGit"

Берём в руки Git Bash :raised_hands:.

  1. Проинициализируем проект.
    Команда: git init
    В папке откуда была вызвана команда появился .git файл.

Не все папки выделились для гита как новые, пропущены пустые.

  1. Так как SFDX создаёт новую папку для проекта, то необходимо открыть проект через неё. Что бы VSC и SFDX добавили некоторые файлы в наш проект.
    Зачем? Да, что бы добавить их в игнорируемые.

  2. Добавьте
    .vscode
    .forceignore
    .sfdx/
    .vscode/
    config/
    sfdx-project.json в .gitignore, подробнее о .gitignore

  3. Проект должен иметь такой вид
    image

:hammer_and_wrench:-------------------------------------------------------------Remote-------------------------------------------------------------:hammer_and_wrench:

  1. Добавим удалённый репозиторий
    Команда: git add remote add origin git@github.com:AlexBogomaz/SFDX-and-CI.git
    ссылку на репозиторий берём тут

  2. Посмотрим добавлен ли репозиторий.
    Команда: git remote -v

origin  git@github.com:AlexBogomaz/SFDX-and-CI.git (fetch)
origin  git@github.com:AlexBogomaz/SFDX-and-CI.git (push)
  1. Создайте SSH ключ, что бы получить доступ к репозиторию. Если у вас его ещё нет.

:hammer_and_wrench:------------------------------------------------------------Stage files------------------------------------------------------------:hammer_and_wrench:
Необходимо добавить папку force-app к отслеживаемым.
Команда: git add .

:hammer_and_wrench:----------------------------------------------------------First commit----------------------------------------------------------:hammer_and_wrench:

Создадим первый commit, который будет хранить структуру SF проекта.
Команда: git commit -m "Init commit"

:hammer_and_wrench:----------------------------------------------------------------Push---------------------------------------------------------------:hammer_and_wrench:

  1. Отправим необходимую нам структуру на репозиторий:
    Команда: 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

Итак, теперь эти ветки существуют так же и на вашем репозитории.
image
Пока что они ничем не отличаются. Но в дальнейшем каждая задача будем представлять собой новую ветку. И только пройдя через все ветки, решения будут оказываться в master. По названиям видно для чего нужна каждая из них.
В итоге, имеем такую картину.

Взаимодействие Scratch Org и Git

  1. Зайдём в ветку task-featureA, которая создана под текущее задание
    Команда: git checkout task-featureA

  2. Создали apex class. Кстати, если нет папки classes, то создайте её сами.

  3. Сохраним эти изменения на Scratch Org.
    Команда: sfdx force:source:push

  4. Если класс успешно сохранён на Scratch Org, то теперь представив что это и была наша задача сделаем коммит и отправим эти изменения на репозиторий.
    Команды:
    git add .
    git commit -m "First Class"
    git push origin task-featureA

  5. На репозитории создаём pull request, запрос на то что бы ваши данные из ветки task-featureA прошли дальше, в ветку develop и так далее в плоть то ветки master. Но это уже решат ревьюверы.

:fishing_pole_and_fish:----------------------------------------------------------------Pull---------------------------------------------------------------:fishing_pole_and_fish:

  1. Так как таких изменений могло быть множество, и нужно решать новую задачу. То будет создана ветка.
    Команда: git checkout -b task2

  2. Она должна иметь актуальный набор изменений, поэтому стянем в неё данные с master, так как не мы одни добавляли изменения.
    Команда: git pull origin master

  3. Сохраним эти изменения у себя в Scratch Org.
    Команда: sfdx force:source:push

Вот и всё, вы можете продолжать работать с актуальным функционалом.