diff --git a/worker-{{cookiecutter.slug}}/ci/build.sh b/worker-{{cookiecutter.slug}}/ci/build.sh
index 5c0c9b03a2fd104fa80f24fbb7706f392081eec1..f29f50f27b88056216e6f880bb713012fc4e9956 100755
--- a/worker-{{cookiecutter.slug}}/ci/build.sh
+++ b/worker-{{cookiecutter.slug}}/ci/build.sh
@@ -14,15 +14,19 @@ if [ -z "$VERSION" -o -z "$CI_PROJECT_DIR" -o -z "$CI_REGISTRY_IMAGE" ]; then
 	exit 1
 fi
 
-if [ -n "$CI_REGISTRY" -a -n "$CI_REGISTRY_USER" -a -n "$CI_REGISTRY_PASSWORD" ]; then
-	echo Logging in to container registry…
-	echo $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY
-fi
-
 IMAGE_TAG="$CI_REGISTRY_IMAGE:$VERSION"
 
 cd $CI_PROJECT_DIR
 docker build -f Dockerfile . -t "$IMAGE_TAG"
-if [ -n "$CI_REGISTRY" ]; then
-	docker push "$IMAGE_TAG"
+
+# Publish the image on the main branch or on a tag
+if [ "$CI_COMMIT_REF_NAME" = "main" -o -n "$CI_COMMIT_TAG" ]; then
+  if [ -n "$CI_REGISTRY" -a -n "$CI_REGISTRY_USER" -a -n "$CI_REGISTRY_PASSWORD" ]; then
+    echo $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY
+    docker push $IMAGE_TAG
+  else
+    echo "Missing environment variables to log in to the container registry…"
+  fi
+else
+  echo "The build was not published to the repository registry (only for main branch or tags)…"
 fi