> For the complete documentation index, see [llms.txt](https://til.yulrizka.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://til.yulrizka.com/web/this-article-is-published-to-dev-to-with-github-action.md).

# this article is published to dev to with github action

Happy New year!

I have been writing "Today I learned (TIL)" article for a while. These are short note about development things that I learned and stored as a collection of [markdown file in GitHub](https://github.com/yulrizka/til). I hosted it with [GitBook](https://www.gitbook.com/) on <https://til.yulrizka.com>

As articles are already written in Markdown, I would like to have this synchronized to my [Dev.to](https://dev.to/yulrizka) whenever there is update to the contents. The idea is to run a script on new commit that sync the change to Dev.to.

So, I have created a small [golang script](https://github.com/yulrizka/til/blob/master/.scripts/main.go) that triggered in a GitHub action workflow that does:

1. Figure out markdown file that added or changed in the current commit.
2. Fetch all articles from *Dev.to* via an API.
3. For each local article, compare it to Dev.to (using a canonical URL).
4. Create or Update the article accordingly via the API.

This is an example of the pipeline running <https://github.com/yulrizka/til/actions/runs/3812108410>

I wrote stuff about cli tricks, git, network, go, etc. Check out the full list on <https://til.yulrizka.com>
