😸
Stoplight Studioで作ったAPI仕様書をgithub pagesにgithub actionsを用いて公開する
課題
- Stoplight StudioでAPI仕様書を作るとswagger対応のYAMLがexportできる。
- Stoplight Studioはgithubと連携/管理が可能。
- YAMLからhtmlを出力する機能は用意されていない
- Stoplight Studioからgithubにcommitが合った場合、github actions経由で、Redoc-cliを用いてhtml出力し、それをgithub pagesにdeployする。
手順
- Stoplightとgithubを連携する
- github pagesをmainブランチに設定
- ./github/workflow/deploy.yml を作成する
name: github pages
on:
push:
branches:
- main
# 手動実行できるようにするため
workflow_dispatch:
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
ref: main # 手動実行時のブランチを指定しておく
- uses: actions/setup-node@v2
with:
node-version: "16"
cache: "npm"
- run: npm ci
- name: Install ReDoc
run: npm install -g redoc-cli
- name: Build OpenAPI file
run: redoc-cli bundle ./reference/swagger.yaml --output ./swagger.html # ここでspotlightで作ったyamlをhtmlに変換している
- name: 差分を push
run: |
git remote set-url origin https://github-actions:${GITHUB_TOKEN}@github.com/${GITHUB_REPOSITORY}
git config --global user.name "${GITHUB_ACTOR}"
git config --global user.email "${GITHUB_ACTOR}@users.noreply.github.com"
if (git diff --shortstat | grep '[0-9]'); then \
git add .; \
git commit -m "GitHub Actions から差分を Push"; \
git push origin HEAD:${GITHUB_REF}; \
fi
結果
無事に、差分をcommitされている
備考
セキュリティ的にBasic認証を入れたいところだが、今回はテストということでフロントのみでパスワード認証をしている
Discussion