GitHub Actions를 사용하여 Github Pages에 Open API Redoc 문서를 출력한 메모

개요



Github Pages가 organization에서 private를 지원했기 때문에
업무에서 사용하고 있는 Open API의 정의를 push되었을 때에 자동배포하도록 해 보았습니다.

swagger-viewer 등으로 보는 것이 어려웠기 때문에

소스 코드



구성


├── .github
│   └── workflows
│       └── gh-pages.yml
├── docs
│   └── index.html
├── package-lock.json
├── package.json
└── petstore.yaml : from https://github.com/OAI/OpenAPI-Specification/blob/main/examples/v3.0/petstore.yaml

workflows



gh-pages.yml
name: github pages

on:
branch
  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: bundle
        run: npm run bundle

      - name: pages deploy
        uses: peaceiris/actions-gh-pages@v3
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./docs

workflow가 실행되면 gh-pages 브랜치가 만들어지기 때문에
first-deployment-with-github_token@actions-gh-pages 참고

Settings > Pages를 열고


Source를 gh-pages로 설정


다시 workflow 실행


배포 확인

막힌 곳



npm install


      - uses: actions/setup-node@v2
        with:
          node-version: '14'
          cache: 'npm'

      - run: npm install -g redoc-cli

      - name: bundle
        run: redoc-cli bundle petstore.yaml
npm install -g 할 수 있다고 생각하면 오류
Error: Dependencies lock file is not found

노드 버전



참고로 node-version: '14' 하면 오류
internal/modules/cjs/loader.js:905
  throw err;
  ^

Error: Cannot find module 'react-is'
Require stack:
...
node-version: '16' 했습니다.

좋은 웹페이지 즐겨찾기