背景
- これまでブログ(のようなもの)を行う際に、横着してgistを使用していた
- VSCode上で文章を作成したあとにエディタからフィールドへコピー&ペーストしていた
- いい加減にこの作業が面倒臭くなってきたのと、gist上でパッと直しローカルのテキストファイルに反映を忘れた場合に差分が発生してしまう問題が起きていた
欲求
- コピー&ペーストをせず済むならそうしたい
- ローカルとインターネットに公開されている文章に差分が発生していない状態であってほしい
条件
- 静的サイトジェネレーターは面倒
- Wordpressを維持するのも面倒
- 好きなエディタを自由に使いたい
- プレーンテキスト形式(マークダウン形式)で記事を記述したい
ソリューション
- はてなブログ : https://hatenablog.com/
- 順当にはてなブログを使用することにした
- x-motemen/blogsync: Push and pull blog entries from/to local filesystem : https://github.com/x-motemen/blogsync
- GitHub Actionsでmainブランチにコミットされたら上記のコマンドラインツール使ってpushしたりpullしたりする
ついでにできるようになったこと
環境変数のBLOGSYNC_USERNAME
とBLOGSYNC_PASSWORD
について
blogsync/config.go at 5d82a9f9299e8a34e9215b7fc192e41344e87644 · x-motemen/blogsync
それぞれ設定ファイルのusername
とpassword
に対応するっぽい。
おまけActions
リポジトリのsecretsのBLOGSYNC_PASSWORD
にブログに投稿用のAPIキーを設定してください。
また、リポジトリのカレントディレクトリにはblogsync.yaml
を配置してください。
blogsyncのREADME.mdを参照しながらいい感じ(要出典)に設定してください。
name: Push And Pull on: push: branches: - main jobs: push_and_pull: runs-on: ubuntu-latest permissions: contents: write steps: - name: Checkout uses: actions/checkout@v3 with: ref: main - name: Install blogsync uses: x-motemen/blogsync@v0 - name: Get changed entryies id: get-changed-entryies uses: tj-actions/changed-files@v35 # 記事をpushする - name: Push run: | for file in ${{ steps.get-changed-entryies.outputs.all_changed_files }}; do if [[ $file == entry/**/*.md ]]; then blogsync push $file fi done env: BLOGSYNC_PASSWORD: ${{ secrets.BLOGSYNC_PASSWORD }} - name: Pull run: | blogsync pull BLOG_DOMAIN_HERE env: BLOGSYNC_PASSWORD: ${{ secrets.BLOGSYNC_PASSWORD }} # 記事をpullする # 差分があればブランチを切って、コミットを作成する - name: Get current date env: TZ: 'Asia/Tokyo' id: get-current-date run: echo "current-date=$(date +'%Y%m%d%H%M%S')" >> $GITHUB_OUTPUT - name: Auto Commit uses: stefanzweifel/git-auto-commit-action@v4 with: branch: sync-${{ steps.get-current-date.outputs.current-date }} create_branch: true
テンプレートリポジトリは気が向いたら作ります。
今後ともお引き立てのほど、よろしくお願い申し上げます