You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beam.apache.org by lo...@apache.org on 2023/08/24 00:28:04 UTC

[beam] 01/01: Test version of release candidate docs action.

This is an automated email from the ASF dual-hosted git repository.

lostluck pushed a commit to branch lostluck-thats-how-you-doc-rc
in repository https://gitbox.apache.org/repos/asf/beam.git

commit f14ca9c1a79a5523e938a9aae9acff6145de20fa
Author: Robert Burke <lo...@users.noreply.github.com>
AuthorDate: Wed Aug 23 17:27:56 2023 -0700

    Test version of release candidate docs action.
---
 .github/workflows/build_release_candidate.yml | 109 ++++++++++++++++++++++++++
 1 file changed, 109 insertions(+)

diff --git a/.github/workflows/build_release_candidate.yml b/.github/workflows/build_release_candidate.yml
index 91a3a0299f1..9e790052182 100644
--- a/.github/workflows/build_release_candidate.yml
+++ b/.github/workflows/build_release_candidate.yml
@@ -31,6 +31,10 @@ on:
         description: Whether to stage SDK docker images to docker hub Apache organization
         required: true
         default: 'no'
+      CREATE_BEAM_SITE_PR:
+        description: Whether to create the documentation update PR against apache/beam-site.
+        required: true
+        default: 'no'
 
 jobs:
   publish_java_artifacts:
@@ -177,3 +181,108 @@ jobs:
           password: ${{ secrets.DOCKERHUB_TOKEN }}
       - name: Push docker images
         run: ./gradlew :pushAllDockerImages -PisRelease -Pdocker-pull-licenses -Pprune-images -Pdocker-tag=${{ github.event.inputs.RELEASE }}rc${{ github.event.inputs.RC }} -Pjava11Home=${{steps.export-java11.outputs.JAVA11_HOME}} --no-daemon --no-parallel
+
+
+  beam_site_pr:
+    if: ${{github.event.inputs.CREATE_BEAM_SITE_PR == 'yes'}}
+    runs-on: [self-hosted, ubuntu-20.04, main]
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v3
+        with:
+          ref: "v${{ github.event.inputs.RELEASE }}-RC${{ github.event.inputs.RC }}"
+          repository: apache/beam
+          path: beam
+      - name: Checkout tools repo
+        uses: actions/checkout@v3
+        with:
+          repository: apache/beam-site
+          path: beam-site
+          fetch-depth: 0
+      - name: Install Python 3.8
+        uses: actions/setup-python@v4
+        with:
+          python-version: '3.8'
+      - name: Install Java 8
+        uses: actions/setup-java@v3
+        with:
+          distribution: 'temurin'
+          java-version: '8'
+      - name: Install node
+        uses: actions/setup-node@v3
+        with:
+          node-version: '16'
+      - name: create documentation pr for website
+        run: |
+            BEAM_ROOT_DIR=${GITHUB_WORKSPACE}/beam
+            SITE_ROOT_DIR=${GITHUB_WORKSPACE}/beam-site
+            USER_REMOTE_URL=git@github.com:${ github.actor }/beam-site
+            RC_TAG="v${{ github.event.inputs.RELEASE }}-RC${{ github.event.inputs.RC }}"
+             
+            echo "------------------Building Python Doc------------------------"
+            pip install --upgrade pip setuptools wheel
+            pip install -U pip
+            pip install tox
+            cd ${BEAM_ROOT_DIR}
+            # TODO(https://github.com/apache/beam/issues/20209): Don't hardcode py version in this file.
+            cd sdks/python && pip install -r build-requirements.txt && tox -e py38-docs
+            GENERATED_PYDOC=${BEAM_ROOT_DIR}/sdks/python/target/docs/_build
+            rm -rf ${GENERATED_PYDOC}/.doctrees
+             
+            echo "------------------Building Typescript Doc------------------------"
+            cd ${BEAM_ROOT_DIR}
+            cd sdks/typescript && npm ci && npm run docs
+            GENERATED_TYPEDOC=${BEAM_ROOT_DIR}/sdks/typescript/docs
+             
+            echo "----------------------Building Java Doc----------------------"
+            cd ${BEAM_ROOT_DIR}
+            ./gradlew :sdks:java:javadoc:aggregateJavadoc -PisRelease --no-daemon --no-parallel
+            GENERATE_JAVADOC=${BEAM_ROOT_DIR}/sdks/java/javadoc/build/docs/javadoc/
+             
+            echo "------------------Updating Release Docs---------------------"
+            cd ${SITE_ROOT_DIR}
+            git checkout release-docs
+            git checkout -b updates_release_${ github.event.inputs.RELEASE } release-docs
+             
+            echo "..........Copying generated javadoc into beam-site.........."
+            cp -r ${GENERATE_JAVADOC} javadoc/${ github.event.inputs.RELEASE }
+            # Update current symlink to point to the latest release
+            unlink javadoc/current
+            ln -s ${ github.event.inputs.RELEASE } javadoc/current
+             
+            echo "............Copying generated pydoc into beam-site.........."
+            cp -r ${GENERATED_PYDOC} pydoc/${  github.event.inputs.RELEASE }
+            # Update current symlink to point to the latest release
+            unlink pydoc/current
+            ln -s ${ github.event.inputs.RELEASE } pydoc/current
+             
+            echo "............Copying generated typedoc into beam-site.........."
+            mkdir -p typedoc
+            cp -r ${GENERATED_TYPEDOC} typedoc/${ github.event.inputs.RELEASE }
+            # Update current symlink to point to the latest release
+            unlink typedoc/current | true
+            ln -s ${ github.event.inputs.RELEASE } typedoc/current
+             
+            git add -A
+            RELEASE_COMMIT=$(git rev-list -n 1 "tags/${RC_TAG}")
+            git commit -m "Update beam-site for release ${ github.event.inputs.RELEASE }." -m "Content generated from commit ${RELEASE_COMMIT}."
+            git push -f ${USER_REMOTE_URL}
+             
+            # Check if hub is installed. See https://stackoverflow.com/a/677212
+            if ! hash hub 2> /dev/null; then
+              echo "installing hub with sudo permission"
+              HUB_VERSION=2.5.0
+              HUB_ARTIFACTS_NAME=hub-linux-amd64-${HUB_VERSION}
+              wget https://github.com/github/hub/releases/download/v${HUB_VERSION}/${HUB_ARTIFACTS_NAME}.tgz
+              tar zvxvf ${HUB_ARTIFACTS_NAME}.tgz
+              sudo ./${HUB_ARTIFACTS_NAME}/install
+              echo "eval "$(hub alias -s)"" >> ~/.bashrc
+              rm -rf ${HUB_ARTIFACTS_NAME}*
+            fi
+            if hash hub 2> /dev/null; then
+              hub pull-request -m "Publish ${ github.event.inputs.RELEASE } release" -h ${ github.actor }:updates_release_${ github.event.inputs.RELEASE } -b apache:release-docs \
+               || echo "Pull request creation did not succeed. If you created the website PR earlier it may have been updated via force-push."
+            else
+              echo "Without hub, you need to create PR manually."
+            fi
+            echo "Finished ${ RC_TAG } doc creation."