Skip to content
upload

GitHub Action

Publish to dev.to

v1 Pre-release

Publish to dev.to

upload

Publish to dev.to

Publish markdown files as articles to dev.to platform, using assets hosted on GitHub

Installation

Copy and paste the following snippet into your .yml file.

              

- name: Publish to dev.to

uses: sinedied/publish-devto@v1

Learn more about this action in sinedied/publish-devto

Choose a version

📮 publish-devto

Build Status XO code style License

GitHub Action to publish markdown files as articles on dev.to platform, with assets hosted on GitHub.

Usage

See action.yml.

steps:
- uses: actions/checkout@v4
- name: Publish articles on dev.to
  uses: sinedied/publish-devto@v2
  with:
    # Your dev.to personal API key to publish and update articles.
    # See https://docs.dev.to/api/#section/Authentication/api_key
    devto_key: ${{ secrets.DEVTO_TOKEN }}
    # Your GitHub personal access token, used to create commits for updated files.
    # If you have a protected branch, you need to use a personal access token
    # with the 'repo' permission.
    # See https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token
    github_token: ${{ secrets.GITHUB_TOKEN }}
    # (Optional) The files to publish. Default is "posts/**/*.md"
    files: 'posts/**/*.md'
    # (Optional) The git branch to use. Default is 'main'.
    branch: main
    # (Optional) Use conventional commit messages. Default is false.
    # See https://www.conventionalcommits.org. 
    conventional_commits: true
    # (Optional) Do not make actual changes on dev.to.
    dry_run: false

You can use this template repository as an example setup.

Using a custom committer

You can specify who you want to appear in the commits made by this action by adding these environment variables to the action:

  env:
    GIT_COMMITTER_NAME: your_name
    GIT_COMMITTER_EMAIL: [email protected]

How does it work?

This github action delegates most of the work to the devto-cli push command.

You can find more information about how it works in the CLI readme.