From beb78786080d812b3270adbde0feac3e96f06833 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Vall=C3=A9s?= Date: Tue, 13 Feb 2024 21:32:01 +0100 Subject: [PATCH] feat: keep public and private API docs in sync with main branch MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ⚠️ This is a WIP commit. I created a playground environment to test the GitHub actions. The workflow file has been copied from https://github.com/jvallesm/instill-protobufs and references API IDs that don't belong to the Instill AI organisation. We should update the API doc IDs and introduce a `README_API_KEY` repository variable. - Changes in main branch update the staging docs - Version changes in main branch update the public docs --- .github/workflows/sync-api-docs.yml | 73 +++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 .github/workflows/sync-api-docs.yml diff --git a/.github/workflows/sync-api-docs.yml b/.github/workflows/sync-api-docs.yml new file mode 100644 index 00000000..9f8cdaab --- /dev/null +++ b/.github/workflows/sync-api-docs.yml @@ -0,0 +1,73 @@ +name: Sync docs in ReadMe 🦉 + +on: + push: + branches: + # This workflow will run every time changes in the OpenAPI docs are + # pushed to the `main` branch. + - main + paths: + - 'openapiv2/core/**' + - 'openapiv2/model/**' + - 'openapiv2/vdp/**' + +jobs: + sync-openapi-private: + name: Keep private (staging) docs in sync with `main` + runs-on: ubuntu-latest + outputs: + should_update_public: ${{ steps.check-new-release.outputs.is_new_release }} + steps: + - name: Check out repo 📚 + uses: actions/checkout@v3 + with: + # Needed in checkNewRelease to compare with the previous commit. + fetch-depth: 0 + + - name: Sync Core 🔮 + uses: readmeio/rdme@v8 + with: + rdme: openapi openapiv2/core/service.swagger.yaml --key=${{ secrets.README_API_KEY }} --id=65ca17433dcd850078ffca3f + + - name: Sync Model ⚗️ + uses: readmeio/rdme@v8 + with: + rdme: openapi openapiv2/model/service.swagger.yaml --key=${{ secrets.README_API_KEY }} --id=65ca17433dcd850078ffca41 + + - name: Sync VDP 💧 + uses: readmeio/rdme@v8 + with: + rdme: openapi openapiv2/vdp/service.swagger.yaml --key=${{ secrets.README_API_KEY }} --id=65ca17433dcd850078ffca40 + + - name: Check new release 🔍 + id: check-new-release + run: | + if [[ `git diff ${{ github.event.before }} ${{ github.event.after }} openapiv2/vdp openapiv2/core openapiv2/model | grep "^+\s\+version"` ]]; then + echo 'is_new_release=true' >> $GITHUB_OUTPUT + else + echo 'is_new_release=false' >> $GITHUB_OUTPUT + fi + + sync-openapi-public: + name: Sync public docs on new release + needs: [sync-openapi-private] + runs-on: ubuntu-latest + if: needs.sync-openapi-private.outputs.should_update_public == 'true' + steps: + - name: Check out repo 📚 + uses: actions/checkout@v3 + + - name: Sync Core 🔮 + uses: readmeio/rdme@v8 + with: + rdme: openapi openapiv2/core/service.swagger.yaml --key=${{ secrets.README_API_KEY }} --id=659fcafc3ca8be005651d43f + + - name: Sync Model ⚗️ + uses: readmeio/rdme@v8 + with: + rdme: openapi openapiv2/model/service.swagger.yaml --key=${{ secrets.README_API_KEY }} --id=65a6a52ab94959005b83f6fc + + - name: Sync VDP 💧 + uses: readmeio/rdme@v8 + with: + rdme: openapi openapiv2/vdp/service.swagger.yaml --key=${{ secrets.README_API_KEY }} --id=65a15372e7857a001655767c