diff --git a/.github/workflows/check.yml b/.github/workflows/check-and-gen.yml similarity index 57% rename from .github/workflows/check.yml rename to .github/workflows/check-and-gen.yml index 5a3c788de5b..c567a47e7ab 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check-and-gen.yml @@ -1,4 +1,4 @@ -name: Check +name: Check and Generate on: pull_request: @@ -33,8 +33,6 @@ jobs: - uses: ./.github/actions/make-deps - run: make gen - run: git diff --exit-code - - run: make docsgen-cli - - run: git diff --exit-code check-lint: name: Check (lint-all) runs-on: ubuntu-latest @@ -70,3 +68,38 @@ jobs: - uses: ./.github/actions/install-go - run: go mod tidy -v - run: git diff --exit-code + generate-docs: + name: Generate Documentation + runs-on: ubuntu-latest + if: github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/heads/release/')) + permissions: + contents: write + steps: + - uses: actions/checkout@v4 + with: + submodules: 'recursive' + fetch-depth: 0 + + - uses: ./.github/actions/install-system-dependencies + - uses: ./.github/actions/install-go + - uses: ./.github/actions/make-deps + + - name: Generate API documentation using docsgen-cli + run: | + make docsgen-cli || { + echo "Error: Documentation generation failed" + exit 1 + } + + - name: Commit and push if documentation changed + run: | + if [ -n "$(git status --porcelain)" ]; then + # Bot email is configured from: https://github.com/orgs/community/discussions/26560 + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + git add . + git commit -m "docs: update API documentation via docsgen-cli" + git push + else + echo "No documentation changes to commit" + fi