Update Documentation #22
This file contains 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: Update Documentation | |
on: | |
workflow_dispatch: | |
inputs: | |
tag: | |
description: Release tag (e.g. selenium-4.21.0) | |
required: true | |
type: string | |
workflow_call: | |
inputs: | |
tag: | |
required: true | |
type: string | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
jobs: | |
determine-language: | |
runs-on: ubuntu-latest | |
outputs: | |
language: ${{ steps.get-language.outputs.language }} | |
steps: | |
- name: Parse language from tag | |
id: get-language | |
run: | | |
tag=${{ inputs.tag }} | |
language=$(echo $tag | awk -F'-' '{print $NF}') | |
if [[ ! "$language" =~ ^(java|ruby|python|dotnet|node)$ ]]; then | |
language="all" | |
fi | |
echo "language=$language" > $GITHUB_OUTPUT | |
java-docs: | |
runs-on: ubuntu-latest | |
needs: determine-language | |
steps: | |
- name: Checkout the tag | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ inputs.tag }} | |
- name: Prep git | |
run: | | |
git config --local user.email "[email protected]" | |
git config --local user.name "Selenium CI Bot" | |
- name: Setup Java | |
uses: actions/setup-java@v4 | |
with: | |
java-version: 17 | |
distribution: 'temurin' | |
- name: Update Documentation | |
if: needs.determine-language.outputs.language == 'all' || needs.determine-language.outputs.language == 'java' | |
run: ./go java:docs | |
- name: Create patch for changes | |
run: | | |
git format-patch -1 HEAD --stdout > java-docs.patch | |
- name: Upload patch | |
if: needs.determine-language.outputs.language == 'all' || needs.determine-language.outputs.language == 'java' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: java-docs-patch | |
path: java-docs.patch | |
ruby-docs: | |
runs-on: ubuntu-latest | |
needs: determine-language | |
steps: | |
- name: Checkout the tag | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ inputs.tag }} | |
- name: Prep git | |
run: | | |
git config --local user.email "[email protected]" | |
git config --local user.name "Selenium CI Bot" | |
- name: Setup Java | |
uses: actions/setup-java@v4 | |
with: | |
java-version: 17 | |
distribution: 'temurin' | |
- name: Setup curl for Ubuntu | |
run: sudo apt-get update && sudo apt-get install -y libcurl4-openssl-dev | |
- name: Update Documentation | |
if: needs.determine-language.outputs.language == 'all' || needs.determine-language.outputs.language == 'ruby' | |
run: ./go rb:docs | |
- name: Create patch for changes | |
run: | | |
git format-patch -1 HEAD --stdout > ruby-docs.patch | |
- name: Upload patch | |
if: needs.determine-language.outputs.language == 'all' || needs.determine-language.outputs.language == 'ruby' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ruby-docs-patch | |
path: ruby-docs.patch | |
python-docs: | |
needs: determine-language | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout the tag | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ inputs.tag }} | |
- name: Prep git | |
run: | | |
git config --local user.email "[email protected]" | |
git config --local user.name "Selenium CI Bot" | |
- name: Set up Python 3.8 | |
uses: actions/setup-python@v5 | |
with: | |
python-version: 3.8 | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install tox | |
- name: Update Documentation | |
if: needs.determine-language.outputs.language == 'all' || needs.determine-language.outputs.language == 'python' | |
run: ./go py:docs | |
- name: Create patch for changes | |
run: | | |
git format-patch -1 HEAD --stdout > python-docs.patch | |
- name: Upload patch | |
if: needs.determine-language.outputs.language == 'all' || needs.determine-language.outputs.language == 'python' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: python-docs-patch | |
path: python-docs.patch | |
dotnet-docs: | |
needs: determine-language | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout the tag | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ inputs.tag }} | |
- name: Prep git | |
run: | | |
git config --local user.email "[email protected]" | |
git config --local user.name "Selenium CI Bot" | |
- name: Install specific version of DocFX tool | |
# Pinning to 2.75.3 to avoid breaking changes in newer versions | |
# See https://github.com/dotnet/docfx/issues/9855 | |
run: dotnet tool install --global --version 2.75.3 docfx | |
- name: Update Documentation | |
if: needs.determine-language.outputs.language == 'all' || needs.determine-language.outputs.language == 'dotnet' | |
run: ./go dotnet:docs | |
- name: Create patch for changes | |
run: | | |
git format-patch -1 HEAD --stdout > dotnet-docs.patch | |
- name: Upload patch | |
if: needs.determine-language.outputs.language == 'all' || needs.determine-language.outputs.language == 'dotnet' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: dotnet-docs-patch | |
path: dotnet-docs.patch | |
node-docs: | |
needs: determine-language | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout the tag | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ inputs.tag }} | |
- name: Prep git | |
run: | | |
git config --local user.email "[email protected]" | |
git config --local user.name "Selenium CI Bot" | |
- name: Install npm dependencies | |
run: | | |
npm install | |
npm install --prefix javascript/node/selenium-webdriver | |
- name: Update Documentation | |
if: needs.determine-language.outputs.language == 'all' || needs.determine-language.outputs.language == 'node' | |
run: ./go node:docs | |
- name: Create patch for changes | |
run: | | |
git format-patch -1 HEAD --stdout > node-docs.patch | |
- name: Upload patch | |
if: needs.determine-language.outputs.language == 'all' || needs.determine-language.outputs.language == 'node' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: node-docs-patch | |
path: node-docs.patch | |
merge-patches: | |
runs-on: ubuntu-latest | |
needs: [java-docs, ruby-docs, python-docs, dotnet-docs, node-docs] | |
steps: | |
- name: Checkout documentation branch | |
uses: actions/checkout@v4 | |
with: | |
ref: 'gh-pages' | |
- name: Create and checkout new branch | |
run: | | |
git config --local user.email "[email protected]" | |
git config --local user.name "Selenium CI Bot" | |
git checkout -b api-docs-${{ inputs.tag }} | |
- name: Download all patches | |
uses: actions/download-artifact@v4 | |
with: | |
path: patches/ | |
merge-multiple: true | |
- name: Show downloaded patches | |
run: ls -lah patches/ | |
- name: Apply patches | |
run: | | |
for patch in patches/*.patch; do | |
git am < "$patch" | |
done | |
rm -rf patches/ | |
git add -A | |
git commit -m "Updating API documentation for ${{ inputs.tag }}" | |
- name: Push Branch | |
run: git push origin api-docs-${{ inputs.tag }} | |
- name: Documentation Pull Request | |
uses: peter-evans/create-pull-request@v6 | |
with: | |
token: ${{ secrets.SELENIUM_CI_TOKEN }} | |
author: Selenium CI Bot <[email protected]> | |
delete-branch: true | |
branch: api-docs-${{ inputs.tag }} | |
base: gh-pages | |
title: Update documentation for ${{ inputs.tag }} | |
body: | | |
This PR updates the API documentation for all bindings | |
based on the provided tag name. | |
- Auto-generated by [create-pull-request][1] | |
[1]: https://github.com/peter-evans/create-pull-request | |
labels: documentation | |
draft: false |