Skip to content

WIP: подготовка к выпуску стабильного релиза #165

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 12 commits into from
Feb 20, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
155 changes: 155 additions & 0 deletions .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,155 @@
# Коллективное участие в проекте
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@artbear А этот смотрел?


> постоянно наполняемый FAQ для "контрибьюторов"

## Прежде чем создавать задачи (issues) `GitHub`

* старайтесь ознакомиться с документацией по проекту с помощью поиска
* старайтесь ознакомиться с уже имеющимися задачами с помощью поиска, включая закрытые задачи
* ознакомьтесь с каталогом features для понимания уже существующего и стабильного функционала
* будьте в курсе изменений по проекту
* нажмите `watch` и `star`, чтобы получать оповещения об изменениях

### Старайтесь создавать задачи в формате `BDD`

* Формат описания, если вы нашли "недочёт" (bug)

```gherkin
Дано <имею версию проекта>
И <версию операционной системы>
И <версию 1С предприятия>
И <параметры совместимости конфигурации>
```

* Формат описания, если хочется добавить новый функционал (enhancement)

```gherkin
Функционал: <Краткое описание>
Как <роль кому нужен функционал>
Чтобы <цель того кому нужен данный функционал>
```

## Как добавить функционал к проекту

мы используем [Example mapping](https://cucumber.io/blog/2015/12/08/example-mapping-introduction), поэтому:

* всё, что не имеет feature-файла - это просто вопрос или "вброс"
* если существует feature-файл только с заголовком - это предварительное требование
* если в feature-файле есть Сценарии - это требование с правилами реализации
* есть в Сценарии есть шаги - это требование с правилами и примерами

Соответственно, помимо задач, можно использовать концепцию

* git-flow - коллективная разработка с помощью github
* pull-request - для черновиков функционала используется каталог ```.\features\drafts```

### Процесс коллективной разработки

в соответствии с принципами Agile и Open-Source мы используем

* итеративный подход к разработке
* первоначально мы решаем недочёты, а уже затем дорабатываем функционал
* приоретизация и порядок доработки остаются на усмотрение команды oscript-library

однако это можно изменить 3-мя способами:

### Pull-request

#### Первичная настройка

если вы разработчик

* Установите `oscript`, `git` и проверьте, что данные находятся в переменной `PATH`,
* т.е. `git, oscript, opm` вызываются без указания полного пути в коммандной строке.

* сделайте `fork` репозитория
* склонируйте репозитарий себе на машину ```git clone https://github.com/*ТУТИМЯВАШЕГОПОЛЬЗОВАТЕЛЯ*/gitsync.git ```
* переходим в склонированный каталог через `cd gitsync` и выполняем несколько магических комманд
```
git remote add upstream https://github.com/oscript-library/gitsync.git
git fetch upstream
git checkout -b develop upstream/develop
git pull upstream develop
```
* Далее нужно установить необходимые зависимости:
* в консоли от имени администратора перейти в папку `gitsync` и запустить `opm install`.
* Результатом будет установленные пакеты, необходимые для работы скриптов.
* Этот шаг необходимо сделать всего 1 раз.

> ВНИМАНИЕ: команды `opm` необходимо выполнять в обычном виндовом `cmd\far` , но не в bash-консоли, т.к. не сможет найти команду `opm`

#### Штатная разработка/доработка

##### Выбор задачи и предварительная подготовка

* реализуйте функционал или возьмите в работу какую-то задачу

* На основании ветки develop создаем новую ветку с номером задачи или кратким описанием
* Например, `feature/issue-9999`
```
git checkout -b feature/issue-9999
```

> Напоминаем, что все шаги git можно выполнять как из консоли git, так и из графического клиента для git (SourceTree, GitExtensions и т.п.)

##### Изменения в плагинах/фичах/шагах/тестах

* в каталоге `gitsync/features` добавьте новый `feature-файл`, если необходимо
* в каталоге ./src реализуйте требуемый функционал
* или прогоните тесты `opm run test`

* **При готовности зафиксировать изменения**

* В гите проверить необходимые изменения в исходниках и зафиксировать только их.

Команды для программного добавления необходимых файлов в git

* Смотрим, какие файлы изменились - `git status`

```
Изменения, которые не в индексе для коммита:
(используйте «git add <файл>…», чтобы добавить файл в индекс)
(используйте «git checkout -- <файл>…», чтобы отменить изменения
в рабочем каталоге)

изменено: src/cmd/ПараметрыПриложения.os

нет изменений добавленных для коммита
(используйте «git add» и/или «git commit -a»)
```

##### Отправка изменений

* Добавляем необходимые файлы в индекс
* `git add src/cmd/ПараметрыПриложения.os `
* Фиксируем изменения с комментарием `git commit -m "Наш комментарий!"`

* Отправляем все изменения своей ветки на github ```git push origin feature/issue-9999```
* Далее формируем `pull-request` в [интерфейсе github](https://github.com/oscript-library/gitsync/pulls)

### Участие в архитектурных обсуждениях

если вы методолог или архитектор

* сделайте свой первый `pull-request`, в том числе в документацию
* создайте обсуждение https://github.com/oscript-library/gitsync/issues с описанием противоречия
* участвуйте, обосновывайте, приводите примеры
* используйте ТРИЗ для построения непротиворечивых решений

### Enterprise-поддержка

если вы бизнесмен или менеджер

* обратитесь по адресу `[email protected]`
* заключите контракт на Enterprise-поддержку с гарантией по SLA и c контролем NPS
* публикуйте любые запросы на доработку и консультацию - они будут выполнены или по ним будет выдан ответ в первом приоритете
* на данный момент за последние год мы поддерживаем следующие медианы:
* время реакции - 24 минуты,
* время решения - 23 часа

# Если ничего не понятно

* используйте [форум XDD](https://xdd.silverbulleters.org) для того, чтобы задать вопрос
* запишитесь на практические занятия по правильной разработке 1С

```(c) oscript-library - последнее обновление: 14.01.2019```
19 changes: 19 additions & 0 deletions .github/ISSUE_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
> Заполните шаблон обсуждения GIT (GitHub, GitLab, Vanessa Hub)

```Gherkin
Функционал: <Необходимый эффект>
Как <роль пользователя>
Я хочу <Необходимый функционал>

Контекст:
Дано <версия инструментария>
И <полная версия 1С>
и <конфигурация запуска>

Сценарий: <ожидамое поведение>
Допустим <Пример данных>
Когда <Что-то нажимается или вызывается>
Тогда <Что-то происходит>
```

> Прикладывайте файлы скриншотов
31 changes: 31 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
---
name: Сообщение об ошибке
about: если вы выявили ошибку - сообщите нам об этом

---

**Описание ошибки**
что конкретно происходит

**Сценарий воспроизведения**
Шаги по воспроизведению:
1. Открыть '...'
2. Нажать '....'
3. Запустить '....'
4. Где ошибка

**Ожидаемое поведение если бы ошибки не было**
'....'

**Скриншоты**
если применимо приложите скриншот

**Окружение:**
- Версия операционной системы: [например Ubuntu 18.04]
- Редакция 1С платформы [например 8.3.12.1542]
- Версия Gitsync [например 3.0.1]
- Версия OScript [например 1.0.20]

**Дополнительный контекст**

Типовая или не типовая конфиугарация ? Включен ли режим защиты от опасных действий и т.д.
22 changes: 22 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
---
name: Добавление новой функциональности
about: предложение новой идеи или функциональности к разработке

---

**Существует проблема**
Описание существующей проблемы [...]

**Хотелось бы иметь следующую функциональность**
Вариант реализации [...]

**Дополнительный контекст**
Любая дополнительная информация

<!---
Заявление от команды активных контрибьюторов

Данный проект развивается силами нескольких людей последние 10 лет, разработка ведется на условиях краудсорсинга в связи с чем
Если вы не собираетесь реализовывать данную функциональность сами, просьба идеи и предложения обсуждать на форуме в специализированном разделе https://xdd.silverbulleters.org/c/razrabotka или в рамках вашего контракта на поддержку OpenSource продуктов

-->
8 changes: 8 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
реализация #

сделанные изменения:

-
-

@oscript-library/Collaborators - пожалуйста, проверьте изменения и прокомментируйте их
2 changes: 1 addition & 1 deletion packagedef
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@
Описание.Имя(ИмяПродукта)
.Версия(ВерсияПродукта)
.ВерсияСреды("1.0.20")
.ЗависитОт("logos", "1.1.1")
.ЗависитОт("logos", "1.2.0")
.ЗависитОт("tempfiles", "0.2.2")
.ЗависитОт("v8runner", "1.1.3")
.ЗависитОт("gitrunner", "1.5.1")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -452,14 +452,44 @@

Если СтандартнаяОбработка Тогда

Конфигуратор.ВыгрузитьКонфигурациюВФайлы(КаталогВыгрузки);

Попытка
Конфигуратор.ВыгрузитьКонфигурациюВФайлы(КаталогВыгрузки);
Исключение
ОписаниеОшибки = ОписаниеОшибки();
Если Не ЭтоПропускаемаяОшибка(ОписаниеОшибки) Тогда
УдалитьВременныеФайлыПриНеобходимости(Конфигуратор.КаталогСборки());
Лог.Ошибка("Невозможно выгрузить конфигурацию в файлы. Ошибка:" + ОписаниеОшибки);
ВызватьИсключение;
КонецЕсли;
КонецПопытки;
КонецЕсли;

ОбработчикПодписок.ПослеВыгрузкиКонфигурациюВИсходники(Конфигуратор, КаталогВыгрузки);

КонецПроцедуры

Функция МассивИсключаемыхОшибок()

Массив = Новый Массив;
Массив.Добавить("Конфигурация содержит объекты метаданных, длина имен которых превышает 80 символов!");

Возврат Массив;
КонецФункции

Функция ЭтоПропускаемаяОшибка(Знач ОписаниеОшибки)

МассивИсключаемыхОшибок = МассивИсключаемыхОшибок();

Для Каждого ИсключаемаяОшибка Из МассивИсключаемыхОшибок Цикл

Если СтрНайти(ОписаниеОшибки, ИсключаемаяОшибка) > 0 Тогда
Возврат Истина;
КонецЕсли;

КонецЦикла;
Возврат Ложь;
КонецФункции

#КонецОбласти

#Область Функциональность_очистки_каталога_рабочей_копии
Expand Down