CI/CD для наукових даних: приклади сценаріїв GitHub Actions

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

CI/CD для наукових даних: приклади сценаріїв GitHub Actions

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

🧪 CI/CD для наукових даних: приклади сценаріїв GitHub Actions

CI/CD (Continuous Integration / Continuous Delivery) — це підхід, за якого всі зміни у проєкті (код, дані, метадані) автоматично перевіряються, збираються та публікуються. Для дослідницьких даних це означає, що:
• ви можете автоматизувати створення версій даних,
• оновлювати метадані та changelog,
• архівувати нові релізи у Zenodo або Dataverse.

У цій темі — практичні приклади, як використовувати GitHub Actions для автоматизації обробки та публікації даних у наукових проєктах.

---------------------------------------------------------------------------------------------------------------------

🔧 Що таке GitHub Actions?

GitHub Actions — це сервіс, який дозволяє запускати автоматичні сценарії (workflow) кожного разу, коли ви:
• завантажуєте нові дані,
• створюєте новий "реліз",
• змінюєте файл метаданих або README.

Workflow = набір інструкцій у форматі YAML, які виконуються в середовищі Linux/Ubuntu з Docker-підтримкою.

Докладніше: GitHub Actions Docs

------------------------------------------------------------------------------------------------------------------------

📂 Приклад: Автоматичне оновлення changelog та публікація релізу

Мета: щоразу, коли ви оновлюєте файл `data.csv`:
• оновлюється changelog
• створюється новий GitHub release
• автоматично активується архівування у Zenodo

Файл: `.github/workflows/data-release.yml`

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

name: Auto release data to Zenodo

on:
  push:
    paths:
      - 'data.csv'

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout repo
      uses: actions/checkout@v3

    - name: Get current date
      id: date
      run: echo "::set-output name=now::$(date +'%Y-%m-%d')"

    - name: Create changelog entry
      run: |
        echo "## Version: ${{ steps.date.outputs.now }}" >> CHANGELOG.md
        echo "- Updated data.csv" >> CHANGELOG.md

    - name: Commit changelog
      run: |
        git config user.name "github-actions"
        git config user.email "actions@github.com"
        git add CHANGELOG.md
        git commit -m "Update changelog"
        git push

    - name: Create release
      uses: ncipollo/release-action@v1
      with:
        tag: v${{ steps.date.outputs.now }}
        name: "Release ${{ steps.date.outputs.now }}"
        body: "Automated data release from GitHub Actions"
--------------------------------------------------------------------------------------------------------------

📦 Публікація в Zenodo

Zenodo автоматично архівує всі GitHub релізи, якщо ви підключили репозиторій:
Zenodo GitHub integration
• Реліз → версія з DOI

---

📊 Інші можливості автоматизації:
• генерація файлів README або metadata.json
• перевірка якості даних перед завантаженням
• конвертація файлів у формати CSV/JSON/XML
• повідомлення командам про нову версію через email або Slack

---

📘 Корисні приклади та репозиторії:

Portal Project: Ecological data + CI/CD + Zenodo
Bioinformatics example: reproducible pipelines
PANGAEA: data publishing workflow

--------------------------------------------------------------------------------------------------

📌 Висновки

Використання GitHub Actions у наукових проєктах:
• підвищує прозорість і відтворюваність
• зменшує ризик втрати даних
• спрощує управління версіями
• ідеально підходить для публікації у Zenodo, Dataverse, EOSC

💬 Маєте власні приклади CI/CD-сценаріїв або питання? Діліться нижче!
Відповісти