Community resources#
This training shows an end result, not how to generate it. But almost nothing in the two repositories was written from scratch. Most of it comes from templates and tools the Plone Community already maintains, and this chapter says which, so you can find your way back to the source when you build your own setup.
What was added: the GitLab CI/CD layer#
Cookieplone generates GitHub Actions workflows. Choosing GitLab gives you a devops/README-GITLAB.md
describing a pipeline, but no .gitlab-ci.yml. So the deploy demo adds a GitLab layer on top of
what Cookieplone generates, and this is all of it:
File |
What it is |
|
|---|---|---|
new |
|
Stages, workflow rules, image pins, includes |
new |
|
The first job: reads |
new |
|
Shared job templates and rules |
new |
|
Lint, test, i18n, changelog checks |
new |
|
Image builds and the swarm deploy |
replaced |
|
Instead of |
rewritten |
|
The CI/CD reference |
extended |
|
|
extended |
|
|
extended |
|
A |
extended |
|
The local stack, from |
removed |
|
Seven new files, a handful of extended ones, one directory removed. The part I like most is the
[deployment] section in repository.toml: every value that differs between one deployment and
the next lives there, so the pipeline, the stack file and the local stack never need editing for a
new host name.
Tools the pipeline reuses#
- repoplone
Reads
repository.tomland reports the project's Python, Plone and Volto versions. The pipeline's first job asks it, so no version is written down twice.- The Plone container images
plone/server-builderandplone/server-prod-configfor the backend,plone/frontend-builderfor the frontend. The project's Dockerfiles build on them.- docker-stack-deploy
A small image that logs in to a registry, connects to a Docker Swarm manager over SSH, and runs
docker stack deploy. It was written as a GitHub Action by kitconcept, and works unchanged as the image of a GitLab job.- zot
The container registry on the CI host: one container, with per-repository access control.
- Ansible roles
geerlingguy.dockerandgeerlingguy.swapfor the hosts, andriemers.gitlab-runnerto install and register the GitLab Runner.
Last year's training#
If you want to deploy your own first project to a single host, step by step, the 2025 deployment training is still the better starting point. It uses Cookieplone's defaults directly, where this training shows where they lead.