About workflows (GitHub Actions).

Continous Integration (CI) workflow


The “Continous Integration” (CI) workflow does all the work. It is triggered by these events:

  • push

  • pull_request

  • publishing a release

  • repository_dispatch.

A repository_dispatch event can be created like this:

curl -X POST \ \
   -H 'Accept: application/vnd.github.everest-preview+json' \
   -H 'Authorization: token 08abthis9is6notdafreal3token02030a75675e' \
   --data '{"event_type": "CI.yml-webhook"}

You need to get your personal access token from Github and insert it in the command above. When requesting the token you only need to apply for “repo access”.


Make sure to only merge pull-requests when job passed-all-tests succeeds.

Jobs in the workflow


A quick display of some context variables.


Identifies a pull_request event and shows how to filter for that.


Identifies a push event and shows how to filter for that.


Identifies a release event and shows how to filter for that.


Identifies a pull_request and shows how to filter for that.


Makes sure the frontend run succeeds.


Does Python code checking.


Needs [yarn-frontend, lint]. Creates the Python distribution package of the Sphinx extension and provides it as artifact. All further steps are done with that package. It has the form of a Python wheel package.


Needs: [build]. Render the documentation and provide as artifact.


Needs: [build]. Runs the unit tests of the package.


Needs [build]. Garantees that the theme package is importable and can be used for Sphinx rendering. Artifacts are produced.


Needs: [make-docs, make-test, sphinx-quickstart].

This is a sentinal job to indicate whether the build is good for usage or not. A pull-request may only be merged if this job succeeds.


Needs: [passed-all-tests]. Only run for release events.

This job verifies that we have a “pure and clean” release number in the form of ‘1.2.3’ (three numbers).


Needs [assert-good-release-version]. Only run for release events.

Upload a new release to PyPi, the Python packet index.


Needs: [upload-to-pypi].

After uploading to PyPi the asset folder ‘static’ is uploaded to the content delivery network.


Needs: [passed-all-tests].

This is a convenience task that uses the docker container with the theme and provides the rendering of some TYPO3 manuals for download.

Uploads to the CDN

The static theme data of each release on PyPi will automatically be uploaded to the TYPO3 content delivery network (CDN). The general url is:<NAME>/<BRANCH|MAJOR.MINOR.PATCH>/css/theme.css

For example, to access 4.3.2 data, write:

To access the latest version insert ‘master’ for ‘branch’: