Статически сгенерированный сайт с автоматическим деплоем

Прежде всего, конечно, нужно зарегистрировать аккаунты на google и gitlab.

После этого создать репозиторий с кодом вашего сайта, вот пример содержимого моего:

итого 96
drwxr-xr-x 7 user user  4096 мая 28 14:39 .
drwxr-xr-x 6 user user  4096 мая 25 12:36 ..
-rw-r--r-- 1 user user   269 мая 28 11:34 app.yaml
-rw-r--r-- 1 user user 54341 мая 28 14:39 conf.py
drwxr-xr-x 2 user user  4096 мая 27 12:41 files
drwxr-xr-x 2 user user  4096 мая 27 12:37 galleries
drwxr-xr-x 8 user user  4096 мая 28 14:00 .git
-rw-r--r-- 1 user user   534 мая 27 12:14 .gitlab-ci.yml
drwxr-xr-x 2 user user  4096 мая 25 19:34 images
drwxr-xr-x 9 user user  4096 мая 28 14:33 pages

После этого нужно создать сервисный аккаунт в консоли google https://cloud.google.com/iam/docs/service-accounts И назначить ему права App Engine Service Admin, App Engine Deployer, Cloud Build Service Account, Service Account User, Storage Object Admin, Service Usage Viewer - скорее всего, первое и последнее можно уменьшить до прав на создание и запись/чтение. Так-же включить соотвествующие API.

Для созданного аккаунта нужно создать ключ в формате json и сохранить его в переменную KEY в настройках проекта gitlab. Имя проекта в google cloud нужно сохранить в переменную PROJECT

app.yaml (Источник)

runtime: python27
api_version: 1
threadsafe: true

handlers:
- url: /
  static_files: output/index.html
  secure: always
  redirect_http_response_code: 301
  upload: output/index.html

- url: /(.*)/
  static_files: output/\1/index.html
  secure: always
  redirect_http_response_code: 301
  upload: output/(.*)

- url: /(.*)
  static_files: output/\1
  secure: always
  redirect_http_response_code: 301
  upload: output/(.*)

.gitlab-ci.yml (Источник)

image: docker:latest

stages:
- build
- deploy

cache:
  paths:
  - output

build:
  stage: build
  image: dragas/nikola:alpine
  script:
  - nikola plugin -i tagged_pages
  - nikola build

deploy:
  stage: deploy
  image: google/cloud-sdk
  services:
  - docker:dind
  script:
  - echo $KEY >  gcloud-service-key.json
  - gcloud auth activate-service-account --key-file gcloud-service-key.json
  - gcloud config set project $PROJECT_NAME
  - gcloud app deploy

Собственно, все. Перечисляете нужные плагины в .gitlab-ci.yml в строках - nikola plugin -i tagged_pages, вносите нужную конфигурацию в conf.py и при каждом git push ваш сайт автоматически собирается и выкладывается. Локально ставить ничего не нужно! Только git и текстовый редактор ;)