blob: f70464d115d837eadd06dd56eeae8ca5ff8eff43 [file] [log] [blame]
name: Update Documentation
on:
workflow_dispatch:
inputs:
tag:
description: 'Release tag (e.g., selenium-4.29.0 or selenium-4.28.1-ruby)'
required: true
type: string
language:
description: 'Language (overrides tag suffix if provided)'
required: false
type: choice
default: "all"
options:
- all
- java
- ruby
- python
- dotnet
- javascript
workflow_call:
inputs:
tag:
required: true
type: string
language:
type: string
default: ""
skip:
description: We're not releasing this one right now
type: boolean
default: false
secrets:
SELENIUM_CI_TOKEN:
required: true
permissions:
contents: write
env:
GITHUB_TOKEN: ${{ github.token }}
jobs:
parse:
name: Parse Tag
if: ${{ !inputs.skip }}
runs-on: ubuntu-latest
outputs:
version: ${{ steps.parse.outputs.version }}
language: ${{ steps.parse.outputs.language }}
steps:
- name: Parse tag
id: parse
env:
TAG: ${{ inputs.tag }}
INPUT_LANG: ${{ inputs.language }}
run: |
echo "version=$(echo "$TAG" | grep -oE '[0-9]+\.[0-9]+\.[0-9]+')" >> "$GITHUB_OUTPUT"
# Extract language from tag suffix or use input
if [ -n "$INPUT_LANG" ] && [ "$INPUT_LANG" != "all" ]; then
LANG="$INPUT_LANG"
elif [[ "$TAG" =~ -(javascript|python|ruby|java|dotnet)$ ]]; then
LANG="${BASH_REMATCH[1]}"
else
LANG="all"
fi
echo "language=$LANG" >> "$GITHUB_OUTPUT"
generate-docs:
name: Generate Documentation
needs: parse
if: ${{ !inputs.skip }}
uses: ./.github/workflows/bazel.yml
with:
name: Generate Docs
ref: ${{ inputs.tag }}
run: ./go ${{ needs.parse.outputs.language }}:docs
artifact-name: documentation
artifact-path: build/docs/api/**/*
commit-docs:
name: Commit Documentation
needs: [parse, generate-docs]
if: ${{ !inputs.skip }}
runs-on: ubuntu-latest
steps:
- name: Checkout gh-pages
uses: actions/checkout@v4
with:
ref: gh-pages
token: ${{ secrets.SELENIUM_CI_TOKEN || github.token }}
- name: Download documentation
uses: actions/download-artifact@v4
with:
name: documentation
- name: Setup git
run: |
git config --local user.email "selenium-ci@users.noreply.github.com"
git config --local user.name "Selenium CI Bot"
- name: Commit documentation
run: |
git add docs/api/
if git diff --staged --quiet; then
echo "No documentation changes to commit"
else
git commit -m "Update ${{ needs.parse.outputs.language }} documentation for Selenium ${{ needs.parse.outputs.version }}"
for _ in 1 2; do
git pull --rebase origin gh-pages && git push origin gh-pages && exit 0
sleep 2
done
exit 1
fi