GitHub의 markdown을 Qiita에 게시하기 GiutHub Action

GitHub과 Qiita에서는 기법이 거의 같기 때문에 얇은 변환 처리를 쓰는 것만으로 끝난다.

그건 그렇고, 메디움은 상당히 번거로웠기 때문에 제대로 시도하지 않았습니다. 그리고 Zenn은 이미지와 테이블 주위의 기법 차이 흡수가 번거로웠다.

GitHub Action



1. Qiita API에서 게시할 스크립트 준비



간단한 예로 GitHub README.md를 Qiita에 게시하고 싶습니다.

post_qiita.sh
#!/bin/sh

# 行末の空白スペース(GitHub だとそれが改行を意味する)を削除
sed -e 's/[ \t]*$//' README.md > README-qiita.md
# 頭の h1 見出しは Qiita だと冗長なので削る
sed -i '.backup' -e '1d' README-qiita.md

rm README-qiita.md.backup

data=$(cat <<EOS
{
  "body": $(ruby -e 'p ARGF.read.sub(/\A---.*---/m, "")' README-qiita.md),
  "title": "タイトル aaa",
  "tags": [ { "name": "foo" }, { "name": "bar" } ]
}
EOS
)

# See: https://qiita.com/api/v2/docs#%E6%8A%95%E7%A8%BF
# NOTE: QIITA_ACCESS_TOKEN は環境変数でセットしてあるものとする
curl "https://qiita.com/api/v2/items/xxx" \
-v \
-X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${QIITA_ACCESS_TOKEN}" \
-d "${data}"

2. 액세스 토큰 등록



개인 액세스 토큰 발급 으로 https://github.com/{user_id}/{repository_name}/settings/secrets/actions 로 등록한다.

여기에서는, 예를 들면 QIITA_ACCESS_TOKEN 라는 이름으로 설정했다고 한다.

3. workflow 정의



.github/workflows/post_qiita.yaml
on:
  push:
    branches:
      - main
    paths:
      - 'README.md'

jobs:
  post_qiita:
    runs-on: ubuntu-latest
    timeout-minutes: 5
    steps:
      - uses: actions/checkout@v2
      - name: start to post Qiita
        uses: bobheadxi/deployments@master
        id: deployment
        with:
          step: start
          token: ${{ secrets.GITHUB_TOKEN }}
          env: Qiita
      - name: post
        env:
          QIITA_ACCESS_TOKEN: ${{ secrets.QIITA_ACCESS_TOKEN }}
        run: ./scripts/post_qiita.sh
      - name: update deployment status
        uses: bobheadxi/deployments@master
        if: always()
        with:
          step: finish
          token: ${{ secrets.GITHUB_TOKEN }}
          status: ${{ job.status }}
          deployment_id: ${{ steps.deployment.outputs.deployment_id }}
          env_url: https://qiita.com/foo/items/xxx



좋은 웹페이지 즐겨찾기