| 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 |