Рубрики
Uncategorized

Генерировать содержимое с помощью действий GitHub

Я люблю делать заметки в Markdown, а в последнее время я использую GitHub, чтобы написать (и хранить) их. Там … Tagged с Docker, DevOps, Github, Tulciory.

Я люблю делать заметки в Маркдауне, а в последнее время я использовал GitHub написать (и хранить) их.

Существует много преимуществ использования GitHub: доступно на разных платформах, онлайн, автономном режиме, поддержке Marckdown, Agnostic редактора, управлении версиями, простой структурой (файлы/папки) и бесплатно.

Тем не менее, одна вещь, которая не поддерживается из коробки, — это генерирование оглавления (TOC). С этим я могу по -разному организовать свои заметки и иметь много из них в один файл разметки.

Вот как я генерирую содержание для своих заметок, используя Действия GitHub Анкет

Предварительные условия

  • Делать
  • Докер
  • Составить
  • Github account
  • Git
  • Терминал

Реализация

Мои ноты содержит много файлов и папок, но для целей этого сообщения я буду держать все как можно проще. Ниже приведена структура файла примера репозитория GIT.

$ tree -a
.
├── .git
│   ├── ...
├── Makefile
├── docker-compose.yml
├── story.md
└── package.json

Репозиторий имеет одну заметку, записанную в Markdown под названием story.md который имеет некоторое случайное содержание.

# Story

## Introduction

Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Praesent elementum tincidunt felis, condimentum accumsan nibh imperdiet nec.
Sed cursus justo eu purus rhoncus, id facilisis lorem semper.

## Development

Duis nunc arcu, bibendum quis turpis ut, dapibus feugiat massa.
Sed tempus tortor eget diam porta vulputate. Ut tempor iaculis suscipit.
Morbi scelerisque felis ac justo consectetur luctus.

## Conclusion

Nullam malesuada rutrum gravida. Vivamus sit amet fermentum odio.
Donec tincidunt ex odio, vitae convallis ante posuere nec.

Поскольку генерирование содержания не является опцией по умолчанию, я искал генератор и нашел Doctoc , модуль Nodejs.

Doctoc: Генерирует содержание таблицы для файлов разметки внутри локального репозитория GIT. Ссылки совместимы с якорями, сгенерированными GitHub или другими сайтами.

Чтобы использовать doctoc, я создал Package.json Файл и добавил модуль в качестве зависимости развития.

{
  "name": "mynotes",
  "devDependencies": {
    "doctoc": "^1.4.0"
  }
}

Я часто использую Docker, чтобы обеспечить согласованность между различными платформами, такими как, в данном случае, мой ноутбук и GitHub. В Docker-compose.yml Файл, я определил службу с именем Узел который будет использоваться для установки DOCTOC и генерации TOC с помощью последнего изображения Docker Nodejs.

version: '3.7'
services:
  node:
    image: node
    volumes:
      - type: bind
        source: "."
        target: /opt/app
    working_dir: /opt/app

Последний файл Makefile который инкапсулирует команды Docker Compose. Deps Target загружает изображение Nodejs Docker и устанавливает Doctoc. Generatetoc Цель генерирует содержимое содержимого с помощью Doctoc внутри контейнера Docker Nodejs.

deps:
    docker-compose pull node
    docker-compose run --rm node yarn install

generateTOC:
    docker-compose run --rm node yarn doctoc .

Наконец, чтобы включить TOC в мои заметки, я просто бегаю сделать DEPS Generatetoc в терминале. story.md Файл теперь обновляется.



**Table of Contents**  *generated with [DocToc](https://github.com/thlorenz/doctoc)*

- [Story](#story)
    - [Introduction](#introduction)
    - [Development](#development)
    - [Conclusion](#conclusion)



# Story

## Introduction

Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Praesent elementum tincidunt felis, condimentum accumsan nibh imperdiet nec.
Sed cursus justo eu purus rhoncus, id facilisis lorem semper.

## Development

Duis nunc arcu, bibendum quis turpis ut, dapibus feugiat massa.
Sed tempus tortor eget diam porta vulputate. Ut tempor iaculis suscipit.
Morbi scelerisque felis ac justo consectetur luctus.

## Conclusion

Nullam malesuada rutrum gravida. Vivamus sit amet fermentum odio.
Donec tincidunt ex odio, vitae convallis ante posuere nec.

И вуаля! Затем я совершаю свои изменения в Мастер , нажмите и посмотрите на них на GitHub.

Это хорошо работает на компьютере, где установлены такие инструменты, как Make, Docker и Compose. Я мог бы даже пойти в тупик и автоматизировать процесс с Git Hooks Анкет

Однако что, если я напишу на планшете или непосредственно на веб -сайте GitHub? Соглашение, вероятно, встанет устаревшая. Не было бы здорово, чтобы его генерировать, независимо от того, откуда написаны заметки? GitHub Действия на помощь!

Действия GitHub

Действия GitHub Облегчает автоматизация всех ваших рабочих процессов программного обеспечения, теперь с CI/CD мирового класса. Создайте, тестируйте и разверните свой код прямо из GitHub. Сделайте обзоры кода, управление филиалами и выпуска, занимаясь работой так, как вы хотите.

Ниже приведена структура примера репозитория GIT с включенными действиями GitHub.

$ tree -a
.
├── .git
│   ├── ...
├── .github
│   └── workflows
│       └── generate_toc.yml
├── Makefile
├── docker-compose.yml
├── story.md
└── package.json

Я определил рабочий процесс в .github/workflows/Generate_toc.yml Файл для генерации содержания таблицы всякий раз, когда я подталкиваю к Мастер ветка.

name: Generate TOC
on:
  push:
    branches:
      - master
jobs:
  generateTOC:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v1
    - name: Generate TOC
      run: make deps generateTOC
    - name: Auto commit
      uses: stefanzweifel/git-auto-commit-action@v2.1.0
      with:
        commit_message: Apply automatic changes - TOC generated
        branch: master
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Этот рабочий процесс проверяет репозиторий на Мастер событие ветвления push, запускает команду сделать DEPS Generatetoc Чтобы сгенерировать оглавление и, наконец, автоматически совершает изменения в Мастер С действием GitHub с именем GIT-Auto-Commit-Action Анкет

Из репозитория GitHub я вижу, как выполняется мой рабочий процесс TOC.

И см. Автоматизированный коммит с содержанием таблицы, обновленной из рабочего процесса сразу после того, как я обновил свои заметки.

Завершая

Я более чем счастлив, что действия Github поддерживают Make, Docker и Compose. Я мог бы разрабатывать и проверить на местном уровне некоторые части моего рабочего процесса и чувствовать себя уверенно, что они будут работать над GitHub. И теперь я могу написать свои заметки из любого места и получить оглавление волшебным образом обновлять. Это простой вариант использования, но есть много действий, которые могут быть просто «Plug & Play», чтобы создать более сложные рабочие процессы.

Понравился этот пост в блоге? Оформление 3musketeers.io Чтобы узнать больше о том, как строить, проверять и развернуть свои приложения из любого места, так же!

Отказ от ответственности: сделайте свое собственное исследование перед использованием этого решения, и не храните конфиденциальную информацию в простом тексте на GitHub.

Оригинал: «https://dev.to/fredericlemay/generate-table-of-contents-with-github-actions-3a0b»