Merge pull request #116 from NotHimmel/patch-1 #1
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build and Deploy Antora Docs | |
| on: | |
| push | |
| jobs: | |
| build-and-deploy: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| steps: | |
| - name: Checkout Documentation Repository (ivorysql_doc) | |
| uses: actions/checkout@v4 | |
| with: | |
| path: ivorysql_doc | |
| - name: Checkout Doc Builder Repository (doc_builder) | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: IvorySQL/ivory-doc-builder | |
| path: ivory-doc-builder | |
| - name: Checkout Web Repository (web) | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: IvorySQL/ivorysql_web | |
| path: www_publish_target | |
| token: ${{ secrets.IVROY_TOKEN }} | |
| - name: Setup Ruby and Bundler | |
| uses: ruby/setup-ruby@v1 | |
| with: | |
| ruby-version: '3.0' | |
| - name: Install Asciidoctor PDF and related Gems | |
| run: | | |
| echo "Installing Asciidoctor PDF gems..." | |
| gem install asciidoctor-pdf --version "~>2.3.19" | |
| gem install rouge | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '22.15' | |
| - name: Install Antora CLI | |
| run: | | |
| echo "Installing Antora packages local..." | |
| npm install --global antora@3.1.7 @antora/lunr-extension @antora/pdf-extension @node-rs/jieba | |
| - name: Build English Documentation | |
| working-directory: ./ivory-doc-builder | |
| run: | | |
| echo "Current directory: $(pwd)" | |
| echo "Building English site..." | |
| ls ../www_publish_target/ | |
| npx antora generate --stacktrace --to-dir ../www_publish_target/docs/en antora-playbook-EN.yml | |
| - name: Build Chinese Documentation | |
| working-directory: ./ivory-doc-builder | |
| run: | | |
| echo "Building Chinese site..." | |
| npx antora generate --stacktrace --to-dir ../www_publish_target/docs/cn antora-playbook-CN.yml | |
| - name: Commit and Push to web Repository new branch , pull request | |
| id: commit_push_new_branch | |
| working-directory: ./www_publish_target | |
| run: | | |
| echo "--- Preparing to commit and push changes ---" | |
| NEW_TEXT="docs-$(date +'%Y-%m-%d-%H%M%S')" | |
| touch "${NEW_TEXT}".md | |
| echo "test" >> "${NEW_TEXT}".md | |
| echo "--- Git status ---" | |
| GIT_STATUS_OUTPUT=$(git status --porcelain) | |
| echo "${GIT_STATUS_OUTPUT}" | |
| echo "--- End of git status --porcelain output ---" | |
| git config user.name "IvorySQL Actions Bot" | |
| git config user.email "actions-bot@users.noreply.github.com" | |
| if [ -z "${GIT_STATUS_OUTPUT}" ]; then | |
| echo "No changes to commit." | |
| echo "changes_detected=false" >> $GITHUB_OUTPUT | |
| else | |
| echo "Changes detected. Proceeding with add, commit, and push." | |
| NEW_BRANCH_NAME="docs-update-${{ github.run_attempt }}-$(date +'%Y-%m-%d-%H%M%S')" | |
| echo "Generated new branch name: ${NEW_BRANCH_NAME}" | |
| echo "new_branch_name=${NEW_BRANCH_NAME}" >> $GITHUB_OUTPUT | |
| echo "changes_detected=true" >> $GITHUB_OUTPUT | |
| git checkout -b "${NEW_BRANCH_NAME}" | |
| git add . | |
| COMMIT_MESSAGE="docs: Regenerate Antora site from IvorySQL/ivorysql_docs commit ${{ github.event.head_commit.id || github.sha }}" | |
| git commit -m "${COMMIT_MESSAGE}" | |
| git push origin "${NEW_BRANCH_NAME}" | |
| fi | |
| - name: Create or Update Pull Request with GitHub CLI | |
| id: cpr | |
| if: steps.commit_push_new_branch.outputs.changes_detected == 'true' && steps.commit_push_new_branch.outputs.new_branch_name != '' | |
| working-directory: ./www_publish_target | |
| env: | |
| GH_TOKEN: ${{ secrets.IVROY_TOKEN }} | |
| PARAM_BASE_BRANCH: master | |
| PARAM_HEAD_BRANCH: ${{ steps.commit_push_new_branch.outputs.new_branch_name }} | |
| PARAM_TITLE: "Docs: Automated update from IvorySQL/ivorysql_docs commit ${{ github.event.head_commit.id || github.sha }}" | |
| PARAM_BODY: | | |
| Automated Antora site regeneration based on changes in the IvorySQL/ivorysql_docs repository. | |
| Source commit: `${{ github.server_url }}/${{ github.repository_owner }}/ivorysql_docs/commit/${{ github.event.head_commit.id || github.sha }}` | |
| - Auto-generated by gh pr create | |
| PARAM_DRAFT: "false" | |
| run: | | |
| echo "Attempting to create or update Pull Request for branch '${PARAM_HEAD_BRANCH}' into '${PARAM_BASE_BRANCH}'" | |
| DRAFT_FLAG_STRING="" | |
| if [[ "${PARAM_DRAFT}" == "true" ]]; then | |
| DRAFT_FLAG_STRING="--draft" | |
| fi | |
| echo "Executing: gh pr create --base \"${PARAM_BASE_BRANCH}\" --head \"${PARAM_HEAD_BRANCH}\" --title <title> --body-file <(echo body) ${DRAFT_FLAG_STRING}" | |
| if gh pr create \ | |
| --base "${PARAM_BASE_BRANCH}" \ | |
| --head "${PARAM_HEAD_BRANCH}" \ | |
| --title "${PARAM_TITLE}" \ | |
| --body-file <(echo "${PARAM_BODY}") \ | |
| ${DRAFT_FLAG_STRING}; then | |
| echo "Pull Request created or updated successfully." | |
| else | |
| echo "'gh pr create' command failed." | |
| echo "This could be because a PR from '${PARAM_HEAD_BRANCH}' to '${PARAM_BASE_BRANCH}' already exists and could not be updated with the provided metadata, or another error occurred." | |
| echo "New commits pushed to '${PARAM_HEAD_BRANCH}' in the previous step should automatically update an existing PR's content." | |
| EXISTING_PR_URL=$(gh pr view "${PARAM_HEAD_BRANCH}" --json url -q ".url" 2>/dev/null || echo "") | |
| if [[ -n "$EXISTING_PR_URL" ]]; then | |
| echo "An existing PR was found for branch '${PARAM_HEAD_BRANCH}': ${EXISTING_PR_URL}" | |
| echo "The 'gh pr create' command might have already updated its metadata if possible." | |
| echo "If specific metadata changes were not applied, you might consider using 'gh pr edit ${EXISTING_PR_URL} ...' with specific flags in a separate step if needed." | |
| else | |
| echo "Failed to create PR and no existing PR found for branch '${PARAM_HEAD_BRANCH}' using 'gh pr view'. Check GH CLI error output above for more details." | |
| exit 1 | |
| fi | |
| fi |