Fix default source path resolution on init #4038
This file contains hidden or 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: 📚 Docs | |
| "on": | |
| workflow_call: | |
| workflow_dispatch: | |
| push: | |
| branches: | |
| - main | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
| cancel-in-progress: ${{ !startsWith(github.event.head_commit.message, '[changelog] Release') }} | |
| jobs: | |
| metadata: | |
| name: 🧬 Project metadata | |
| runs-on: ubuntu-slim | |
| outputs: | |
| metadata: ${{ steps.metadata.outputs.metadata }} | |
| steps: | |
| - uses: actions/checkout@v6.0.2 | |
| - uses: astral-sh/setup-uv@v7.3.1 | |
| - name: Run repomatic metadata | |
| id: metadata | |
| run: > | |
| uvx --no-progress --from . repomatic metadata | |
| --format github-json --output "$GITHUB_OUTPUT" | |
| is_python_project is_sphinx doc_files | |
| deploy-docs: | |
| name: 📖 Deploy Sphinx doc | |
| needs: | |
| - metadata | |
| if: >- | |
| fromJSON(needs.metadata.outputs.metadata).is_python_project | |
| && fromJSON(needs.metadata.outputs.metadata).is_sphinx | |
| runs-on: ubuntu-slim | |
| steps: | |
| - uses: actions/checkout@v6.0.2 | |
| - uses: astral-sh/setup-uv@v7.3.1 | |
| - name: Install Graphviz | |
| # So we can use the sphinx.ext.graphviz plugin. | |
| # See: https://www.sphinx-doc.org/en/master/usage/extensions/graphviz.html | |
| run: | | |
| sudo apt update | |
| sudo apt install --yes graphviz | |
| - name: Build documentation | |
| # Install --all-extras so documentation can covers all features of the project, including the optional ones. | |
| run: uv --no-progress run --frozen --all-extras --group docs -- sphinx-build -b html ./docs ./docs/html | |
| - name: Deploy | |
| uses: peaceiris/actions-gh-pages@v4.0.0 | |
| with: | |
| github_token: ${{ secrets.GITHUB_TOKEN }} | |
| publish_dir: ./docs/html | |
| force_orphan: true | |
| check-broken-links: | |
| name: 💔 Check broken links | |
| needs: | |
| - metadata | |
| # Skip all PRs as we won't have permissions to create issues. | |
| # Skip the prepare-release branch as it contains URLs pointing to tags that don't exist yet. | |
| # Skip any push containing a post-release bump commit as a precautionary measure. | |
| if: > | |
| github.event_name != 'pull_request' | |
| && github.ref != 'refs/heads/prepare-release' | |
| && (! contains(toJSON(github.event.commits.*.message), '[changelog] Post-release bump')) | |
| && (fromJSON(needs.metadata.outputs.metadata).doc_files | |
| || (fromJSON(needs.metadata.outputs.metadata).is_python_project | |
| && fromJSON(needs.metadata.outputs.metadata).is_sphinx)) | |
| runs-on: ubuntu-slim | |
| steps: | |
| - uses: actions/checkout@v6.0.2 | |
| - uses: astral-sh/setup-uv@v7.3.1 | |
| - name: Install Graphviz | |
| if: > | |
| fromJSON(needs.metadata.outputs.metadata).is_python_project | |
| && fromJSON(needs.metadata.outputs.metadata).is_sphinx | |
| # So we can use the sphinx.ext.graphviz plugin. | |
| # See: https://www.sphinx-doc.org/en/master/usage/extensions/graphviz.html | |
| run: | | |
| sudo apt update | |
| sudo apt install --yes graphviz | |
| - name: Run Sphinx linkcheck | |
| if: > | |
| fromJSON(needs.metadata.outputs.metadata).is_python_project | |
| && fromJSON(needs.metadata.outputs.metadata).is_sphinx | |
| # Do not use -W: we parse output.json directly instead of relying on exit codes. | |
| run: > | |
| uv --no-progress run --frozen --all-extras --group docs -- | |
| sphinx-build -b linkcheck ./docs ./docs/linkcheck | |
| continue-on-error: true | |
| - name: Install lychee | |
| if: fromJSON(needs.metadata.outputs.metadata).doc_files | |
| run: | | |
| curl -fsSL --output /tmp/lychee.tar.gz \ | |
| "https://github.com/lycheeverse/lychee/releases/download/lychee-v0.23.0/lychee-x86_64-unknown-linux-gnu.tar.gz" | |
| echo "1fcb6ccf10d04c22b8c5873c5b9cb7be32ee7423e12169d6f1a79a6f1962ef81 /tmp/lychee.tar.gz" \ | |
| | sha256sum --check | |
| tar xzf /tmp/lychee.tar.gz -C /usr/local/bin lychee | |
| - name: Run lychee | |
| if: fromJSON(needs.metadata.outputs.metadata).doc_files | |
| id: lychee_run | |
| env: | |
| GITHUB_TOKEN: ${{ github.token }} | |
| DOC_FILES: ${{ fromJSON(needs.metadata.outputs.metadata).doc_files }} | |
| run: | | |
| exit_code=0 | |
| echo "${DOC_FILES}" | xargs \ | |
| lychee --format markdown --output ./lychee/out.md \ | |
| --hidden --suggest --no-progress --include-fragments --exclude-all-private \ | |
| || exit_code=$? | |
| echo "exit_code=$exit_code" >> "$GITHUB_OUTPUT" | |
| - name: Manage broken links issue | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| LYCHEE_EXIT_CODE: ${{ steps.lychee_run.outputs.exit_code }} | |
| run: | | |
| uvx --no-progress --from . repomatic broken-links \ | |
| ${LYCHEE_EXIT_CODE:+--lychee-exit-code "${LYCHEE_EXIT_CODE}"} |