| # 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: Docs |
| |
| on: |
| workflow_dispatch: |
| pull_request: |
| schedule: |
| - cron: '0 18 * * *' # TimeZone: UTC 0 |
| |
| concurrency: |
| group: doc-${{ github.event.pull_request.number || github.ref }} |
| cancel-in-progress: true |
| |
| jobs: |
| style: |
| timeout-minutes: 10 |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@v6 |
| - name: Style Check |
| run: ./mvnw spotless:check |
| img-check: |
| timeout-minutes: 15 |
| runs-on: ubuntu-latest |
| defaults: |
| run: |
| working-directory: docs |
| steps: |
| - uses: actions/checkout@v6 |
| - name: Set up Python 3.9 |
| uses: actions/setup-python@v6 |
| with: |
| python-version: 3.9 |
| - name: Run Dev Relative Reference |
| run: python img_utils.py -v dev-syntax |
| - name: Run Image Check |
| run: python img_utils.py -v check |
| dead-link: |
| if: (github.event_name == 'schedule' && github.repository == 'apache/dolphinscheduler') || (github.event_name != 'schedule') |
| runs-on: ubuntu-latest |
| timeout-minutes: 30 |
| steps: |
| - uses: actions/checkout@v6 |
| with: |
| submodules: true |
| - name: Collect Workflow Metrics |
| uses: ./.github/actions/actions-workflow-metrics |
| - run: sudo snap install lychee |
| - name: Check Dead Links |
| run: | |
| set -xe |
| lychee -c .github/workflows/lychee.toml -v docs/docs/* |
| paths-filter: |
| name: Helm-Doc-Path-Filter |
| runs-on: ubuntu-latest |
| outputs: |
| helm-doc: ${{ steps.filter.outputs.helm-doc }} |
| steps: |
| - uses: actions/checkout@v6 |
| with: |
| submodules: true |
| - uses: ./.github/actions/paths-filter |
| id: filter |
| with: |
| filters: | |
| helm-doc: |
| - 'deploy/**' |
| helm-doc: |
| name: Helm-Doc-Execute |
| needs: paths-filter |
| if: ${{ (needs.paths-filter.outputs.helm-doc == 'true') || (github.event_name == 'push') }} |
| runs-on: ubuntu-latest |
| timeout-minutes: 20 |
| steps: |
| - uses: actions/checkout@v6 |
| with: |
| submodules: true |
| - name: Generating helm-doc |
| run: | |
| ./mvnw validate -P helm-doc -pl :dolphinscheduler |
| - name: Check helm-doc |
| run: | |
| DIFF=$(git diff ${GITHUB_WORKSPACE}/deploy/kubernetes/*md) |
| if [ ! -z "$DIFF" ]; then |
| echo "###### ERROR: helm-doc is not up to date ######" |
| echo "Please execute './mvnw validate -P helm-doc -pl :dolphinscheduler' in your clone, of your fork, of the project, and commit an updated deploy/kubernetes/README.md for the chart." |
| echo "###### ERROR: helm-doc is not up to date ######" |
| fi |
| git diff --exit-code |
| result: |
| name: Docs |
| runs-on: ubuntu-latest |
| timeout-minutes: 30 |
| needs: |
| - style |
| - img-check |
| if: always() |
| steps: |
| - name: Status |
| run: | |
| if [[ ${{ contains(needs.*.result, 'failure') }} == 'true' || ${{ contains(needs.*.result, 'cancelled') }} == 'true' ]]; then |
| echo "Build Failed!" |
| exit 1 |
| else |
| echo "Build Success!" |
| fi |