Skip to content

Merge pull request #116 from NotHimmel/patch-1 #1

Merge pull request #116 from NotHimmel/patch-1

Merge pull request #116 from NotHimmel/patch-1 #1

Workflow file for this run

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