Issue to Markdown
ActionsTags
(2)GitHub Action to monitor and convert issues into markdown files within your repository.
How do you edit and manage your markdown files within your repository?
git pull
- (merge conflicts)
- edit files
git commit
git push
- 😫
What if you could automatically convert GitHub Issues into markdown files, allowing you to write using just a browser?
Create a file .github/workflows/issue-to-markdown.yml
(or any filename) in your repository.
on:
issues:
types:
- labeled
jobs:
issue_to_markdown:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
- uses: eunjae-lee/issue-to-markdown@v1
with:
token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
- uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: 'docs: update contents'
If you add a publish
label to any of your issues, this workflow will be activated.
To automatically update the markdown file after making changes to the issue, update the yml file as follows:
on:
issues:
types:
- labeled
- edited
For those unfamiliar with GitHub Actions, here's a breakdown of the process:
- In this step, the repository is cloned. A personal access token must be provided as token to allow the workflow to commit and push changes to the remote.
- uses: actions/checkout@v3
with:
token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
- In this step, the issue is transformed into a markdown file, located in its own folder (default location:
content/<slug or issue_number>/index.md
). The token is also necessary here.
- uses: eunjae-lee/issue-to-markdown@v1
with:
token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
- In this step, changes are committed and pushed to the remote. For more information on customizing the commit, refer to this.
- uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: 'docs: update contents'
Visit https://github.com/settings/tokens/new to create a new personal access token. Choose "Tokens (classic)" instead of "Fine-grained tokens".
Click here to see the screenshots.
1. Create a personal access token just like the screenshot at https://github.com/settings/tokens/new
- uses: eunjae-lee/issue-to-markdown@v1
with:
# Required
token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
# ----------------------------------
# All parameters below are optional.
# ----------------------------------
# New files are located at `<project-root>/<dest>/<slug or issue_number>/index.md`. (default: 'content')
dest: 'content'
# (default: '.md')
extension: '.md'
# If set to `true`, the `slug` from the frontmatter of the issue body will be used as the folder name instead of `issue_number`. If set to `false`, only `issue_number` is used. (default: true)
slug_as_folder_name: true
# Key for the slug from the frontmatter. This is used only when `slug_as_folder_name` is `true`. (`slug` by default.)
slug_key: 'slug'
# By default, `publish` label is required for the workflow to work.
label: 'publish'
# If not given, only the owner of the repository is authorized to perform this Action. Otherwise, it will fail.
authors:
- username1
- username2
# Let user provide a custom path for output file instead of relying on conventions (default: false)
use_custom_path: false
# Key for the custom path (when use_custom_path is true, default: 'full_path')
use_custom_path_key: 'full_path'
# If set to `true`, the title of the issue is injected into the frontmatter of the generated file. (default: true)
inject_title: true
# Key to be injected for the title. (default: 'title')
inject_title_key: 'title'
# Inject created timestamp of issue into the frontmatter of the generated file. (default: false)
inject_created_at: false
# Key to be injected for the timestamp. (default: 'created_at')
inject_created_at_key: 'created_at'
# Formatter for created timestamp based on Day.js (default: 'ISO')
# For more information about formatting, read this: https://github.com/iamkun/dayjs/
inject_created_at_format: 'ISO'
# Whether or not to wrap the value with double quotes. (default: false)
inject_created_at_as_string: false
# Inject updated timestamp of issue into the frontmatter of the generated file. (default: false)
inject_updated_at: false
# Key to be injected for the timestamp.(default: 'updated_at')
inject_updated_at_key: 'updated_at'
# Formatter for updated timestamp based on Day.js (default: 'ISO')
# For more information about formatting, read this: https://github.com/iamkun/dayjs/
inject_updated_at_format: 'ISO'
# Whether or not to wrap the value with double quotes. (default: false)
inject_updated_at_as_string: false
Issue to Markdown is not certified by GitHub. It is provided by a third-party and is governed by separate terms of service, privacy policy, and support documentation.