├── .gitignore
├── docs
├── requirements.txt
├── _images
│ └── sphinx-notes.png
├── index.rst
├── Makefile
├── make.bat
└── conf.py
├── .github
└── workflows
│ └── pages.yml
├── LICENSE
├── main.sh
├── action.yml
└── README.rst
/.gitignore:
--------------------------------------------------------------------------------
1 | _build/
2 |
--------------------------------------------------------------------------------
/docs/requirements.txt:
--------------------------------------------------------------------------------
1 | furo
2 | sphinxcontrib-gtagjs
3 |
--------------------------------------------------------------------------------
/docs/_images/sphinx-notes.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sphinx-notes/pages/HEAD/docs/_images/sphinx-notes.png
--------------------------------------------------------------------------------
/docs/index.rst:
--------------------------------------------------------------------------------
1 | .. This file is generated from sphinx-notes/template. DO NOT EDIT.
2 |
3 | .. include:: ../README.rst
4 |
5 | The Sphinx Notes Project
6 | ========================
7 |
8 | This project is a developed by `Shengyu Zhang`__,
9 | as part of **The Sphinx Notes Project**.
10 |
11 | .. toctree::
12 | :caption: The Sphinx Notes Project
13 |
14 | Home
15 | Blog
16 | PyPI
17 |
18 | __ https://github.com/SilverRainZ
19 |
--------------------------------------------------------------------------------
/.github/workflows/pages.yml:
--------------------------------------------------------------------------------
1 | name: Deploy Sphinx documentation to Pages
2 |
3 | # Runs on pushes targeting the default branch
4 | on:
5 | push:
6 | branches: [v3]
7 |
8 | # Cancel any in-progress job or run
9 | # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#concurrency
10 | concurrency:
11 | group: ${{ github.ref }}
12 | cancel-in-progress: true
13 |
14 | jobs:
15 | pages:
16 | runs-on: ubuntu-latest
17 | environment:
18 | name: github-pages
19 | url: ${{ steps.deployment.outputs.page_url }}
20 | permissions:
21 | pages: write
22 | id-token: write
23 | steps:
24 | - id: deployment
25 | uses: sphinx-notes/pages@v3
26 |
--------------------------------------------------------------------------------
/docs/Makefile:
--------------------------------------------------------------------------------
1 | # This file is generated from sphinx-notes/template. DO NOT EDIT.
2 | #
3 | # Minimal makefile for Sphinx documentation
4 |
5 | # You can set these variables from the command line.
6 | SPHINXOPTS =
7 | SPHINXBUILD = python3 -msphinx
8 | SOURCEDIR = .
9 | BUILDDIR = _build
10 |
11 | default: html
12 |
13 | # Put it first so that "make" without argument is like "make help".
14 | help:
15 | @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
16 |
17 | .PHONY: help Makefile default
18 |
19 | # Catch-all target: route all unknown targets to Sphinx using the new
20 | # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
21 | %: Makefile
22 | @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
23 |
--------------------------------------------------------------------------------
/docs/make.bat:
--------------------------------------------------------------------------------
1 | REM This file is generated from sphinx-notes/template. DO NOT EDIT.
2 |
3 | @ECHO OFF
4 |
5 | pushd %~dp0
6 |
7 | REM Command file for Sphinx documentation
8 |
9 | if "%SPHINXBUILD%" == "" (
10 | set SPHINXBUILD=python -msphinx
11 | )
12 | set SOURCEDIR=.
13 | set BUILDDIR=_build
14 |
15 | if "%1" == "" goto help
16 |
17 | %SPHINXBUILD% >NUL 2>NUL
18 | if errorlevel 9009 (
19 | echo.
20 | echo.The Sphinx module was not found. Make sure you have Sphinx installed,
21 | echo.then set the SPHINXBUILD environment variable to point to the full
22 | echo.path of the 'sphinx-build' executable. Alternatively you may add the
23 | echo.Sphinx directory to PATH.
24 | echo.
25 | echo.If you don't have Sphinx installed, grab it from
26 | echo.http://sphinx-doc.org/
27 | exit /b 1
28 | )
29 |
30 | %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
31 | goto end
32 |
33 | :help
34 | %SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
35 |
36 | :end
37 | popd
38 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 Sphinx Notes
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/main.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # set -x
4 | set -e
5 |
6 | echo ::group:: Initialize various paths
7 |
8 | repo_dir=$GITHUB_WORKSPACE/$INPUT_REPOSITORY_PATH
9 | doc_dir=$repo_dir/$INPUT_DOCUMENTATION_PATH
10 | # https://stackoverflow.com/a/4774063/4799273
11 | action_dir=$GITHUB_ACTION_PATH
12 |
13 | echo Action: $action_dir
14 | echo Workspace: $GITHUB_WORKSPACE
15 | echo Repository: $repo_dir
16 | echo Documentation: $doc_dir
17 |
18 | echo ::endgroup::
19 |
20 | # The actions doesn't depends on any images,
21 | # so we have to try various package manager.
22 | echo ::group:: Installing Sphinx
23 |
24 | echo Installing sphinx via pip
25 | if [ -z "$INPUT_SPHINX_VERSION" ] ; then
26 | pip3 install -U sphinx
27 | else
28 | pip3 install -U sphinx==$INPUT_SPHINX_VERSION
29 | fi
30 |
31 | echo Adding ~/.local/bin to system path
32 | PATH=$HOME/.local/bin:$PATH
33 | if ! command -v sphinx-build &>/dev/null; then
34 | echo Sphinx is not successfully installed
35 | exit 1
36 | else
37 | echo Everything goes well
38 | fi
39 |
40 | pip3 install -U sphinxnotes-incrbuild>=1.0
41 |
42 | echo ::endgroup::
43 |
44 | if [ ! -z "$INPUT_REQUIREMENTS_PATH" ] ; then
45 | echo ::group:: Installing dependencies declared by $INPUT_REQUIREMENTS_PATH
46 | if [ -f "$INPUT_REQUIREMENTS_PATH" ]; then
47 | pip3 install -r "$INPUT_REQUIREMENTS_PATH"
48 | else
49 | echo No $INPUT_REQUIREMENTS_PATH found, skipped
50 | fi
51 | echo ::endgroup::
52 | fi
53 |
54 | if [ ! -z "$INPUT_PYPROJECT_EXTRAS" ] ; then
55 | echo ::group:: Installing dependencies declared by pyproject.toml[$INPUT_PYPROJECT_EXTRAS]
56 | if [ -f "pyproject.toml" ]; then
57 | pip3 install .[$INPUT_PYPROJECT_EXTRAS]
58 | else
59 | echo No pyproject.toml found, skipped
60 | fi
61 | echo ::endgroup::
62 | fi
63 |
64 | echo ::group:: Running Sphinx builder
65 | build_dir=/tmp/sphinxnotes-pages
66 | mkdir -p $build_dir || true
67 | echo Temp directory \"$build_dir\" is created
68 | if [ "$INPUT_CACHE" == "true" ]; then
69 | sphinx_build=sphinxnotes-incrbuild
70 | else
71 | sphinx_build=sphinx-build
72 | fi
73 | if ! $sphinx_build -b html $INPUT_SPHINX_BUILD_OPTIONS "$doc_dir" "$build_dir"; then
74 | for l in $(find /tmp -name 'sphinx-err*.log' 2>/dev/null); do
75 | # Replace "\n" to "%0A" for supporting multiline text in the error message.
76 | # https://github.com/actions/toolkit/issues/193#issuecomment-605394935
77 | traceback=$(tail -n500 $l | awk '{ printf "%s%%0A", $0 }')
78 | echo "::error title=Sphinx traceback::$traceback"
79 | done
80 | echo ::endgroup::
81 | exit 1
82 | fi
83 | echo ::endgroup::
84 |
85 | echo "artifact=$build_dir" >> $GITHUB_OUTPUT
86 |
--------------------------------------------------------------------------------
/docs/conf.py:
--------------------------------------------------------------------------------
1 | # This file is generated from sphinx-notes/template. DO NOT EDIT.
2 | #
3 | # Configuration file for the Sphinx documentation builder.
4 | #
5 | # This file only contains a selection of the most common options. For a full
6 | # list see the documentation:
7 | # https://www.sphinx-doc.org/en/master/usage/configuration.html
8 |
9 | import os
10 | import sys
11 |
12 | # -- Project information -----------------------------------------------------
13 |
14 | project = 'sphinxnotes-pages'
15 | author = 'Shengyu Zhang'
16 | copyright = "2023, " + author
17 |
18 | # The full version, including alpha/beta/rc tags
19 | version = release = 'v3'
20 |
21 | # -- General configuration ---------------------------------------------------
22 |
23 | # Add any Sphinx extension module names here, as strings. They can be
24 | # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
25 | # ones.
26 | extensions = [
27 | 'sphinx.ext.githubpages',
28 | 'sphinxcontrib.gtagjs',
29 | ]
30 |
31 | gtagjs_ids = ['G-E4SNX0WZYV']
32 |
33 | # Add any paths that contain templates here, relative to this directory.
34 | templates_path = ['_templates']
35 |
36 | # The document name of the “master” document, that is,
37 | # the document that contains the root toctree directive.
38 | # Default is 'index', we set it here for supporting Sphinx<2.0
39 | master_doc = 'index'
40 |
41 | # List of patterns, relative to source directory, that match files and
42 | # directories to ignore when looking for source files.
43 | # This pattern also affects html_static_path and html_extra_path.
44 | exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
45 |
46 | # A boolean that decides whether codeauthor and sectionauthor directives
47 | # produce any output in the built files.
48 | show_authors = True
49 |
50 | # -- Options for HTML output -------------------------------------------------
51 |
52 | # The theme to use for HTML and HTML Help pages. See the documentation for
53 | # a list of builtin themes.
54 | #
55 | html_theme = 'furo'
56 |
57 | html_theme_options = {}
58 |
59 | # Add any paths that contain custom static files (such as style sheets) here,
60 | # relative to this directory. They are copied after the builtin static files,
61 | # so a file named "default.css" will overwrite the builtin "default.css".
62 | html_static_path = ['_static']
63 | html_theme_options = {
64 | "source_repository": "https://github.com/sphinx-notes/pages/",
65 | "source_branch": "master",
66 | "source_directory": "docs/",
67 | }
68 |
69 | # The URL which points to the root of the HTML documentation.
70 | # It is used to indicate the location of document like canonical_url
71 | html_baseurl = 'https://sphinx.silverrainz.me/pages'
72 |
73 | html_logo = html_favicon = '_images/sphinx-notes.png'
74 |
--------------------------------------------------------------------------------
/action.yml:
--------------------------------------------------------------------------------
1 | # https://help.github.com/en/articles/metadata-syntax-for-github-actions
2 | name: 'Sphinx to GitHub Pages'
3 | description: 'GitHub Action to deploy Sphinx documentation to GitHub Pages'
4 | author: 'Shengyu Zhang'
5 | branding:
6 | color: 'green'
7 | icon: 'upload-cloud'
8 | inputs:
9 | documentation_path:
10 | description: 'Path to Sphinx source files'
11 | required: false
12 | default: './docs'
13 | requirements_path:
14 | description: 'Path to requirements file, used in `pip install -r XXX` command'
15 | required: false
16 | default: './docs/requirements.txt'
17 | pyproject_extras:
18 | description: 'Extras of Requirement Specifier, used in `pip install .[XXX]` command'
19 | required: false
20 | default: 'docs'
21 | python_version:
22 | description: 'Version of Python'
23 | required: false
24 | default: '3.12'
25 | sphinx_version:
26 | description: 'Version of Sphinx'
27 | required: false
28 | default: ''
29 | cache:
30 | description: 'Enable cache to speed up documentation building'
31 | required: false
32 | default: false
33 | sphinx_build_options:
34 | description: 'Additional options passed to sphinx-build'
35 | required: false
36 | default: ''
37 | checkout:
38 | description: 'Whether to automatically checkout the repository, if false, user need to do it byself'
39 | required: false
40 | default: true
41 | publish:
42 | description: 'Whether to automatically publish the pages, if false, user need to manually publish by self'
43 | required: false
44 | default: true
45 | outputs:
46 | page_url:
47 | description: 'URL to deployed GitHub Pages, only available when option publish is set to true'
48 | value: ${{ steps.deployment.outputs.page_url }}
49 | artifact:
50 | description: 'Directory where artifact (HTML documentation) is stored, user can use it to deploy GitHub Pages manually'
51 | value: ${{ steps.build.outputs.artifact }}
52 |
53 | runs:
54 | using: "composite"
55 | steps:
56 | - name: Checkout
57 | uses: actions/checkout@v4
58 | if: ${{ inputs.checkout == 'true' && inputs.cache == 'true' }}
59 | with:
60 | fetch-depth: 0 # Required by sphinxnotes-incrbuild
61 | - name: Checkout
62 | uses: actions/checkout@v4
63 | if: ${{ inputs.checkout == 'true' && inputs.cache == 'false' }}
64 |
65 | - name: Setup python
66 | uses: actions/setup-python@v5
67 | if: ${{ inputs.cache == 'true' }}
68 | with:
69 | python-version: ${{ inputs.python_version }}
70 | cache: 'pip'
71 | - name: Setup python
72 | uses: actions/setup-python@v5
73 | if: ${{ inputs.cache == 'false' }}
74 | with:
75 | python-version: ${{ inputs.python_version }}
76 |
77 | - name: Restore cache
78 | uses: actions/cache@v4
79 | if: ${{ inputs.cache == 'true' }}
80 | with:
81 | path: /tmp/sphinxnotes-incrbuild
82 | # https://github.com/actions/cache/blob/main/tips-and-workarounds.md#update-a-cache
83 | key: sphinxnotes-pages-${{ runner.os }}-${{ github.run_id }}
84 | restore-keys: |
85 | sphinxnotes-pages-${{ runner.os }}
86 |
87 | - name: Enable github problem matcher
88 | uses: sphinx-doc/github-problem-matcher@master
89 |
90 | - id: build
91 | name: Build documentation
92 | run: ${{ github.action_path }}/main.sh
93 | shell: bash
94 | env:
95 | # See https://github.com/actions/runner/issues/665
96 | INPUT_DOCUMENTATION_PATH: ${{ inputs.documentation_path }}
97 | INPUT_REQUIREMENTS_PATH: ${{ inputs.requirements_path }}
98 | INPUT_PYPROJECT_EXTRAS: ${{ inputs.pyproject_extras }}
99 | INPUT_SPHINX_VERSION: ${{ inputs.sphinx_version }}
100 | INPUT_CACHE: ${{ inputs.cache }}
101 | INPUT_SPHINX_BUILD_OPTIONS: ${{ inputs.sphinx_build_options }}
102 |
103 | - name: Setup Pages
104 | uses: actions/configure-pages@v4
105 | if: ${{ inputs.publish == 'true' }}
106 |
107 | - name: Fix file permissions
108 | shell: sh
109 | if: runner.os == 'Linux'
110 | # https://github.com/actions/deploy-pages/issues/188
111 | run: |
112 | chmod -c -R +rX "$INPUT_PATH" |
113 | while read line; do
114 | echo "::warning title=Invalid file permissions automatically fixed::$line"
115 | done
116 | env:
117 | INPUT_PATH: ${{ steps.build.outputs.artifact }}
118 |
119 | - name: Upload artifact
120 | uses: actions/upload-pages-artifact@v3
121 | if: ${{ inputs.publish == 'true' }}
122 | with:
123 | path: ${{ steps.build.outputs.artifact }}
124 |
125 | - id: deployment
126 | name: Deploy to GitHub Pages
127 | uses: actions/deploy-pages@v4
128 | if: ${{ inputs.publish == 'true' }}
129 |
--------------------------------------------------------------------------------
/README.rst:
--------------------------------------------------------------------------------
1 | =========================
2 | Sphinx to GitHub Pages V3
3 | =========================
4 |
5 | .. image:: https://img.shields.io/github/stars/sphinx-notes/pages.svg?style=social&label=Star&maxAge=2592000
6 | :target: https://github.com/sphinx-notes/pages
7 |
8 | Helps you deploy your Sphinx documentation to Github Pages.
9 |
10 | Usage
11 | =====
12 |
13 | We provides two ways for publishing GitHub pages.
14 | The first one is the default but **still in beta**, use the second one if you tend to be stable.
15 |
16 | Publishing with this action (default)
17 | ***************************************
18 |
19 | 1. `Set the publishing sources to "Github Actions"`__
20 | 2. Create the following workflow:
21 |
22 | .. code-block:: yaml
23 |
24 | name: Deploy Sphinx documentation to Pages
25 |
26 | on:
27 | push:
28 | branches: [master] # branch to trigger deployment
29 |
30 | jobs:
31 | pages:
32 | runs-on: ubuntu-latest
33 | environment:
34 | name: github-pages
35 | url: ${{ steps.deployment.outputs.page_url }}
36 | permissions:
37 | pages: write
38 | id-token: write
39 | steps:
40 | - id: deployment
41 | uses: sphinx-notes/pages@v3
42 |
43 | __ https://docs.github.com/en/pages/getting-started-with-github-pages/configuring-a-publishing-source-for-your-github-pages-site#publishing-with-a-custom-github-actions-workflow
44 |
45 | Publishing from a branch (classical)
46 | ************************************
47 |
48 | 1. Create a branch ``gh-pages``
49 | 2. `Set the publishing sources to "Deploy from a branch"`__, then specify the branch just created
50 | 3. Create the following workflow, in this way user need to publish the site by another action,
51 | we use `peaceiris/actions-gh-pages`__ here:
52 |
53 | .. code-block:: yaml
54 |
55 | name: Deploy Sphinx documentation to Pages
56 |
57 | on:
58 | push:
59 | branches: [master] # branch to trigger deployment
60 |
61 | jobs:
62 | pages:
63 | runs-on: ubuntu-latest
64 | steps:
65 | - id: deployment
66 | uses: sphinx-notes/pages@v3
67 | with:
68 | publish: false
69 | - uses: peaceiris/actions-gh-pages@v3
70 | with:
71 | github_token: ${{ secrets.GITHUB_TOKEN }}
72 | publish_dir: ${{ steps.deployment.outputs.artifact }}
73 |
74 | __ https://docs.github.com/en/pages/getting-started-with-github-pages/configuring-a-publishing-source-for-your-github-pages-site#publishing-from-a-branch
75 | __ https://github.com/peaceiris/actions-gh-pages
76 |
77 | Inputs
78 | ======
79 |
80 | ========================== ============================ ======== =================================================
81 | Input Default Required Description
82 | -------------------------- ---------------------------- -------- -------------------------------------------------
83 | ``documentation_path`` ``./docs`` false Path to Sphinx source files
84 | ``requirements_path`` ``./docs/requirements.txt`` false Path to to requirements file,
85 | used in ``pip install -r XXX`` command
86 | ``pyproject_extras`` ``docs`` false Extras of `Requirement Specifier`__
87 | used in ``pip install .[XXX]``
88 | ========================== ============================ ======== =================================================
89 |
90 | Advanced
91 | ********
92 |
93 | In most cases you don't need to know about the following inputs.
94 | Unless you need to highly customize the action's behavior.
95 |
96 | ========================== ============================ ======== =================================================
97 | Input Default Required Description
98 | -------------------------- ---------------------------- -------- -------------------------------------------------
99 | ``python_version`` ``3.12`` false Version of Python
100 | ``sphinx_version`` ``latest`` false Version of Sphinx
101 | ``sphinx_build_options`` false Additional options passed to ``sphinx-build``
102 | ``cache`` ``false`` false Enable cache to speed up documentation building
103 | ``checkout`` ``true`` false Whether to automatically checkout the repository,
104 | if false, user need to do it byself
105 | ``publish`` ``true`` false Whether to automatically publish the repository
106 | ========================== ============================ ======== =================================================
107 |
108 | __ https://pip.pypa.io/en/stable/reference/requirement-specifiers/#overview
109 |
110 | Outputs
111 | =======
112 |
113 | ======================= =========================================================
114 | Output Description
115 | ----------------------- ---------------------------------------------------------
116 | ``page_url`` URL to deployed GitHub Pages,
117 | only available when option ``publish`` is set to ``true``
118 | ``artifact`` Directory where artifact (HTML documentation) is stored,
119 | user can use it to deploy GitHub Pages manually
120 | ======================= =========================================================
121 |
122 | Examples
123 | ========
124 |
125 | The following repository's pages are built by this action:
126 |
127 | - https://github.com/SilverRainZ/bullet
128 | - https://github.com/sphinx-notes/pages
129 | - https://github.com/sphinx-notes/lilypond
130 | - https://github.com/sphinx-notes/strike
131 | - `and more...`__
132 |
133 | You can find the workflow file in the above repositories.
134 |
135 | __ https://github.com/sphinx-notes/pages/network/dependents
136 |
137 | Tips
138 | ====
139 |
140 | Copy extra files to site
141 | ************************
142 |
143 | Use Sphinx confval html_extra_path__.
144 |
145 | __ https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-html_extra_path
146 |
147 | Cancel any in-progress job
148 | **************************
149 |
150 | It is useful when you have pushed a new commit to remote but the job of the previous
151 | commit is not finished yet. See concurrency__ for more details.
152 |
153 | .. code-block:: yaml
154 |
155 | concurrency:
156 | group: ${{ github.ref }}
157 | cancel-in-progress: true
158 |
159 | __ https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#concurrency
160 |
161 | Install extra dependencies
162 | **************************
163 |
164 | For python dependencies, just add them to your ``requirements.txt`` or ``pyproject.toml`` file.
165 |
166 | For non-python dependencies, add a step to your workflow file, and install them with the appropriate tools
167 | (such as apt, wget, ...). See `#24`__ for example.
168 |
169 | __ https://github.com/sphinx-notes/pages/issues/24
170 |
171 | Customize checkout options
172 | **************************
173 |
174 | Repository is automatically checkout by default, but some user may need to customize checkout options
175 | (For example, checkout private repository, checkout multiple repositories).
176 | For this case, user can set the ``checkout`` options to ``false``, then use `action/checkout`__ byeself.
177 |
178 | .. code:: yaml
179 |
180 | steps:
181 | - uses: actions/checkout@master
182 | with:
183 | YOUR_CUSTOM_OPTIONS: ...
184 | - id: deployment
185 | uses: sphinx-notes/pages@v3
186 | with:
187 | checkout: false
188 |
189 | __ https://github.com/actions/checkout
190 |
--------------------------------------------------------------------------------