Політика версіювання даних

Опис вашого першого форуму.
Відповісти
admin
Адміністратор сайту
Повідомлень: 35
З нами з: Чет серпня 15, 2024 4:51 am

Політика версіювання даних

Повідомлення admin »

🧭 Політика версіювання даних

Мета: забезпечити відтворюваність і прозорість змін даних/метаданих/коду у публікаціях і репозиторіях (DataverseUA, Zenodo, Figshare, Dryad, Git).

Охоплення: усі артефакти набору: data (raw/interim/processed), metadata, code, docs.

-----------------------------------------
1) Схема версій
Використовуємо SemVer

Код: Виділити все

MAJOR.MINOR.PATCH
.
  • MAJOR (1.0 → 2.0): несумісні зміни структури/смислу (нові змінні, інші одиниці, перерахунок, що змінює висновки).
  • MINOR (1.1 → 1.2): додано нові партії/рядки/файли без ламання сумісності; невеликі поліпшення.
  • PATCH (1.2.0 → 1.2.1): дрібні виправлення (описів, орфографії, метаданих) без зміни числового змісту.
Публікація у сховищі = нова версія набору.
• Dataverse: цитуємо DOI набору + Version X.Y.
• Zenodo/Figshare/Dryad: цитуємо Version DOI (конкретна версія); за потреби додаємо Concept DOI (усі версії).

-----------------------------------------
2) Хто за що відповідає (RACI)

Код: Виділити все

Завдання                         | R (виконує) | A (відповідає) | C (консультує)
---------------------------------+-------------+----------------+---------------
Опис змін (CHANGELOG)            | Дослідник   | Дата-стюард     | ІТ
Перевірка метаданих/FAIR         | Дата-стюард | Дата-стюард     | Дослідник
Публікація/версія у сховищі      | Дата-стюард | PI/Кер.проєкту  | ІТ
CI/автоматизація, токени, бекапи | ІТ          | ІТ              | Стюард
-----------------------------------------
3) Мінімум для кожного релізу

Код: Виділити все

[ ] Оновлено номер версії (vX.Y[.Z]) у описі набору
[ ] Заповнено metadata/CHANGELOG.md (Added/Changed/Fixed/Removed/Deprecated)
[ ] Оновлено metadata/file_manifest.csv (role, derived_from, checksum)
[ ] Оновлено metadata/data_dictionary.csv (якщо змінювались змінні/одиниці)
[ ] README.md коротко описує, як відтворити processed з raw
[ ] Ліцензія + спосіб цитування (CITATION або інструкція)
-----------------------------------------
4) Що саме версіонуємо
  • Data: raw/interim/processed (чітко позначати роль у маніфесті).
  • Metadata: опис набору, теги, RelatedIdentifiers, словник змінних.
  • Code: скрипти конвеєра; реліз коду синхронізовано з версією даних (за можливості).
  • Docs: методики, протоколи, журнали змін; ідентичні до опису у сховищі.
-----------------------------------------
5) Коли збільшувати версію
  • Зміна структури колонок/одиниць → MAJOR
  • Додавання нових файлів/рядків, що не ламає сумісність → MINOR
  • Виправлення описів/опечаток/метаданих → PATCH
-----------------------------------------
6) Цитування та DOI
  • У публікаціях вказуйте конкретну версію (Version DOI або DOI + Version X.Y).
  • Якщо raw опубліковані окремо — дайте перехресні посилання (RelatedIdentifier: IsDerivedFrom).
  • Для обмежених/чутливих raw: публікуйте processed + інструкцію доступу/запиту до raw.
-----------------------------------------
7) Іменування та структура
Коротко: ISO-дати, snake_case/kebab-case, в processed додавайте .
Рекомендована структура:

Код: Виділити все

data/{raw,interim,processed}/, code/, docs/, metadata/(README, CHANGELOG, file_manifest.csv, data_dictionary.csv, relationships.csv)
-----------------------------------------
8) Автоматизація (рекомендовано)
  • CI копіює текст з metadata/CHANGELOG.md у опис чернетки версії перед публікацією.
  • Скрипт перевіряє наявність checksum і узгодженість маніфесту з реальною структурою.
-----------------------------------------
9) Винятки та зняття з публікації
  • Помилкові дані з ризиком для користувачів: позначити як Deprecated у новій версії; попередні версії не видаляємо, а маркуємо.
  • Персональні/чутливі дані: публікуємо тільки знеособлені або в контрольованому доступі; будь-які зміни змісту → принаймні MINOR, часто MAJOR.
_________________________________________


1) Шаблон CHANGELOG.md

Код: Виділити все

# Changelog
У форматі Keep a Changelog. Дати у ISO: YYYY-MM-DD. Версіювання: SemVer MAJOR.MINOR.PATCH.

## [1.2.0] – 2025-08-15
### Added
- (нові файли/змінні/функції)

### Changed
- (що змінилося без ламання сумісності)

### Fixed
- (виправлення)

### Removed / Deprecated
- (вилучено або позначено як застаріле)

## [1.1.0] – 2025-07-20
### Added
- Приклад попередньої версії
_________________________________________
2) Як вставляти release notes у DataverseUA вручну
  1. Відкрийте набір → EditMetadata.
  2. У Citation Metadata знайдіть поле Description і вставте коротке резюме, напр.:
    Release notes v1.2 (2025-08-15): Added daily aggregates; fixed unit kPa→MPa.
  3. Збережіть зміни. Додайте файл metadata/CHANGELOG.md на вкладці Files (мітка Documentation).
  4. Після перевірки — Publish (minor/major).
________________________________________
3) CI: копіювання changelog у опис чернетки (GitHub Actions)

Код: Виділити все

# .github/workflows/dataverse-changelog.yml
name: Dataverse Changelog Sync
on:
  workflow_dispatch:
    inputs:
      dataset_pid:
        description: 'doi:10.5072/FK2/ABCDEFG'
        required: true
      release_type:
        description: 'minor/major'
        default: 'minor'
      publish:
        description: 'Publish after update? true/false'
        default: 'false'
env:
  DATAVERSE_BASE_URL: ${{ secrets.DATAVERSE_BASE_URL }}
  DATAVERSE_API_TOKEN: ${{ secrets.DATAVERSE_API_TOKEN }}
  CHANGELOG_PATH: metadata/CHANGELOG.md
jobs:
  sync:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with: { python-version: '3.10' }
      - run: |
          python -m pip install --upgrade pip
          pip install requests pydataverse
      - name: Push changelog
        env:
          DATASET_PERSISTENT_ID: ${{ inputs.dataset_pid }}
          RELEASE_TYPE: ${{ inputs.release_type }}
          PUBLISH: ${{ inputs.publish }}
        run: python .github/scripts/push_changelog.py
changelog-policy-kit.zip
(4 Кіб) Завантажено 30 разів
Відповісти