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

potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new 6ddf3ae0a8 Extract docs to a separate workflow (#38211)
6ddf3ae0a8 is described below

commit 6ddf3ae0a874948c9d81aa5f0958b91ffd45233b
Author: Jarek Potiuk <ja...@potiuk.com>
AuthorDate: Sat Mar 16 17:40:27 2024 +0100

    Extract docs to a separate workflow (#38211)
    
    Similarly to other extranctiosn - doc build can be separated to
    a separate workflow, additionally, we can turn both docs and
    spelling jobs into a single matrix job with some conditionals
    easily.
---
 .github/workflows/ci.yml   | 122 ++++++-------------------------------------
 .github/workflows/docs.yml | 126 +++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 143 insertions(+), 105 deletions(-)

diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index e65f3a94db..660ef62bae 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -453,111 +453,25 @@ jobs:
       needs-mypy: ${{ needs.build-info.outputs.needs-mypy }}
     if: needs.build-info.outputs.latest-versions-only != 'true'
 
-  build-docs:
-    timeout-minutes: 60
-    name: "Build docs"
-    runs-on: ${{fromJSON(needs.build-info.outputs.runs-on)}}
-    needs: [build-info, wait-for-ci-images]
-    if: >
-      needs.build-info.outputs.docs-build == 'true' &&
-      needs.build-info.outputs.latest-versions-only != 'true'
-    env:
-      RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
-      PYTHON_MAJOR_MINOR_VERSION: 
"${{needs.build-info.outputs.default-python-version}}"
-      INCLUDE_SUCCESS_OUTPUTS: 
"${{needs.build-info.outputs.include-success-outputs}}"
-    steps:
-      - name: "Cleanup repo"
-        shell: bash
-        run: docker run -v "${GITHUB_WORKSPACE}:/workspace" -u 0:0 bash -c "rm 
-rf /workspace/*"
-      - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
-        uses: actions/checkout@v4
-        with:
-          persist-credentials: false
-      - name: Cleanup docker
-        uses: ./.github/actions/cleanup-docker
-      - name: >
-          Prepare breeze & CI image: 
${{needs.build-info.outputs.default-python-version}}:${{env.IMAGE_TAG}}
-        uses: ./.github/actions/prepare_breeze_and_image
-      - uses: actions/cache@v4
-        id: cache-doc-inventories
-        with:
-          path: ./docs/_inventory_cache/
-          key: docs-inventory-${{ hashFiles('pyproject.toml;') }}
-          restore-keys: |
-            docs-inventory-${{ hashFiles('pyproject.toml;') }}
-            docs-inventory-
-      - name: "Build docs"
-        run: >
-          breeze build-docs ${{ needs.build-info.outputs.docs-list-as-string 
}} --docs-only
-      - name: "Clone airflow-site"
-        run: >
-          git clone https://github.com/apache/airflow-site.git 
${GITHUB_WORKSPACE}/airflow-site &&
-          echo "AIRFLOW_SITE_DIRECTORY=${GITHUB_WORKSPACE}/airflow-site" >> 
"$GITHUB_ENV"
-        if: needs.build-info.outputs.canary-run == 'true'
-      - name: "Publish docs"
-        run: >
-          breeze release-management publish-docs
-          --override-versioned --run-in-parallel
-          ${{ needs.build-info.outputs.docs-list-as-string }}
-        if: needs.build-info.outputs.canary-run == 'true'
-      - name: "Generate back references for providers"
-        run: breeze release-management add-back-references all-providers
-        if: needs.build-info.outputs.canary-run == 'true'
-      - name: "Generate back references for apache-airflow"
-        run: breeze release-management add-back-references apache-airflow
-        if: needs.build-info.outputs.canary-run == 'true'
-      - name: "Generate back references for docker-stack"
-        run: breeze release-management add-back-references docker-stack
-        if: needs.build-info.outputs.canary-run == 'true'
-      - name: "Generate back references for helm-chart"
-        run: breeze release-management add-back-references helm-chart
-        if: needs.build-info.outputs.canary-run == 'true'
-      - name: Configure AWS credentials
-        uses: 
aws-actions/configure-aws-credentials@010d0da01d0b5a38af31e9c3470dbfdabdecca3a  
# v4.0.1
-        if: needs.build-info.outputs.canary-run == 'true' && 
needs.build-info.outputs.default-branch == 'main'
-        with:
-          aws-access-key-id: ${{ secrets.DOCS_AWS_ACCESS_KEY_ID }}
-          aws-secret-access-key: ${{ secrets.DOCS_AWS_SECRET_ACCESS_KEY }}
-          aws-region: eu-central-1
-      - name: "Upload documentation to AWS S3"
-        if: needs.build-info.outputs.canary-run == 'true' && 
needs.build-info.outputs.default-branch == 'main'
-        run: aws s3 sync --delete ./files/documentation 
s3://apache-airflow-docs
-
-  spellcheck-docs:
-    timeout-minutes: 120
-    name: "Spellcheck docs"
-    runs-on: ${{fromJSON(needs.build-info.outputs.runs-on)}}
+  docs:
+    name: "Docs"
+    uses: ./.github/workflows/docs.yml
     needs: [build-info, wait-for-ci-images]
+    permissions:
+      contents: read
+      packages: read
+    secrets: inherit
     if: >
       needs.build-info.outputs.docs-build == 'true' &&
       needs.build-info.outputs.latest-versions-only != 'true'
-    env:
-      RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
-      PYTHON_MAJOR_MINOR_VERSION: 
"${{needs.build-info.outputs.default-python-version}}"
-    steps:
-      - name: "Cleanup repo"
-        shell: bash
-        run: docker run -v "${GITHUB_WORKSPACE}:/workspace" -u 0:0 bash -c "rm 
-rf /workspace/*"
-      - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
-        uses: actions/checkout@v4
-        with:
-          persist-credentials: false
-      - name: Cleanup docker
-        uses: ./.github/actions/cleanup-docker
-      - name: >
-          Prepare breeze & CI image: 
${{needs.build-info.outputs.default-python-version}}:${{env.IMAGE_TAG}}
-        uses: ./.github/actions/prepare_breeze_and_image
-      - uses: actions/cache@v4
-        id: cache-doc-inventories
-        with:
-          path: ./docs/_inventory_cache/
-          key: docs-inventory-${{ hashFiles('pyproject.toml;') }}
-          restore-keys: |
-            docs-inventory-${{ hashFiles('pyproject.toml;') }}
-            docs-inventory-
-      - name: "Spellcheck docs"
-        run: >
-          breeze build-docs ${{ needs.build-info.outputs.docs-list-as-string 
}} --spellcheck-only
+    with:
+      runs-on: ${{ needs.build-info.outputs.runs-on }}
+      image-tag: ${{ needs.build-info.outputs.image-tag }}
+      default-branch: ${{ needs.build-info.outputs.default-branch }}
+      docs-list-as-string: ${{ needs.build-info.outputs.docs-list-as-string }}
+      default-python-version: ${{ 
needs.build-info.outputs.default-python-version }}
+      include-success-outputs: ${{ 
needs.build-info.outputs.include-success-outputs }}
+      canary-run: ${{ needs.build-info.outputs.canary-run }}
 
   providers:
     name: "Provider checks"
@@ -937,8 +851,7 @@ jobs:
     runs-on: ${{fromJSON(needs.build-info.outputs.runs-on)}}
     needs:
       - build-info
-      - build-docs
-      - spellcheck-docs
+      - docs
       - wait-for-ci-images
       - wait-for-prod-images
       - static-checks
@@ -1029,8 +942,7 @@ jobs:
     name: Build CI ARM images (in-workflow)
     needs:
       - build-info
-      - build-docs
-      - spellcheck-docs
+      - docs
       - static-checks
       - mypy
       - tests-sqlite
diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
new file mode 100644
index 0000000000..88b74625fa
--- /dev/null
+++ b/.github/workflows/docs.yml
@@ -0,0 +1,126 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+---
+name: Documentation
+on:  # yamllint disable-line rule:truthy
+  workflow_call:
+    inputs:
+      runs-on:
+        description: "The array of labels (in json form) determining type of 
the runner to use for the build."
+        required: false
+        default: '["ubuntu-22.04"]'
+        type: string
+      image-tag:
+        description: "Tag to set for the image"
+        required: true
+        type: string
+      default-branch:
+        description: "Default branch of the repository"
+        required: true
+        type: string
+      docs-list-as-string:
+        description: "Stringified list of docs to build (space separated)"
+        required: true
+        type: string
+      default-python-version:
+        description: Which version of python should be used get CI image
+        required: true
+        type: string
+      include-success-outputs:
+        description: "Whether to include success outputs"
+        required: true
+        type: string
+      canary-run:
+        description: "Whether this is a canary run (true/false)"
+        required: true
+        type: string
+jobs:
+  build-docs:
+    timeout-minutes: 60
+    name: "Build documentation"
+    runs-on: ${{ fromJSON(inputs.runs-on) }}
+    strategy:
+      fail-fast: false
+      matrix:
+        flag: ["--docs-only", "--spellcheck-only"]
+    env:
+      PYTHON_MAJOR_MINOR_VERSION: "${{ inputs.default-python-version }}"
+      INCLUDE_SUCCESS_OUTPUTS: "${{ inputs.include-success-outputs }}"
+      IMAGE_TAG: "${{ inputs.image-tag }}"
+      GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+    steps:
+      - name: "Cleanup repo"
+        shell: bash
+        run: docker run -v "${GITHUB_WORKSPACE}:/workspace" -u 0:0 bash -c "rm 
-rf /workspace/*"
+      - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
+        uses: actions/checkout@v4
+        with:
+          persist-credentials: false
+      - name: Cleanup docker
+        uses: ./.github/actions/cleanup-docker
+      - name: "Prepare breeze & CI image: ${{ inputs.default-python-version 
}}:${{ inputs.image-tag }}"
+        uses: ./.github/actions/prepare_breeze_and_image
+      - uses: actions/cache@v4
+        id: cache-doc-inventories
+        with:
+          path: ./docs/_inventory_cache/
+          key: docs-inventory-${{ hashFiles('pyproject.toml;') }}
+          restore-keys: |
+            docs-inventory-${{ hashFiles('pyproject.toml;') }}
+            docs-inventory-
+      - name: "Building docs with ${{ matrix.flag }} flag"
+        run: >
+          breeze build-docs ${{ inputs.docs-list-as-string }} ${{ matrix.flag 
}}
+      - name: "Clone airflow-site"
+        run: >
+          git clone https://github.com/apache/airflow-site.git 
${GITHUB_WORKSPACE}/airflow-site &&
+          echo "AIRFLOW_SITE_DIRECTORY=${GITHUB_WORKSPACE}/airflow-site" >> 
"$GITHUB_ENV"
+        if: inputs.canary-run == 'true' && matrix.flag == '--docs-only'
+      - name: "Publish docs"
+        run: >
+          breeze release-management publish-docs --override-versioned 
--run-in-parallel
+          ${{ inputs.docs-list-as-string }}
+        if: inputs.canary-run == 'true' && matrix.flag == '--docs-only'
+      - name: "Generate back references for providers"
+        run: breeze release-management add-back-references all-providers
+        if: inputs.canary-run == 'true' && matrix.flag == '--docs-only'
+      - name: "Generate back references for apache-airflow"
+        run: breeze release-management add-back-references apache-airflow
+        if: inputs.canary-run == 'true' && matrix.flag == '--docs-only'
+      - name: "Generate back references for docker-stack"
+        run: breeze release-management add-back-references docker-stack
+        if: inputs.canary-run == 'true' && matrix.flag == '--docs-only'
+      - name: "Generate back references for helm-chart"
+        run: breeze release-management add-back-references helm-chart
+        if: inputs.canary-run == 'true' && matrix.flag == '--docs-only'
+      - name: Configure AWS credentials
+        uses: 
aws-actions/configure-aws-credentials@010d0da01d0b5a38af31e9c3470dbfdabdecca3a  
# v4.0.1
+        if: >
+          inputs.canary-run == 'true' &&
+          inputs.default-branch == 'main' &&
+          matrix.flag == '--docs-only'
+        with:
+          aws-access-key-id: ${{ secrets.DOCS_AWS_ACCESS_KEY_ID }}
+          aws-secret-access-key: ${{ secrets.DOCS_AWS_SECRET_ACCESS_KEY }}
+          aws-region: eu-central-1
+      - name: "Upload documentation to AWS S3"
+        if: >
+          inputs.canary-run == 'true' &&
+          inputs.default-branch == 'main' &&
+          matrix.flag == '--docs-only'
+        run: aws s3 sync --delete ./files/documentation 
s3://apache-airflow-docs

Reply via email to