😸

Stoplight Studioで作ったAPI仕様書をgithub pagesにgithub actionsを用いて公開する

2022/09/12に公開

課題

  • 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認証を入れたいところだが、今回はテストということでフロントのみでパスワード認証をしている
https://allabout.co.jp/gm/gc/23839/2/

Discussion