Статически сгенерированный сайт с автоматическим деплоем
Прежде всего, конечно, нужно зарегистрировать аккаунты на 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
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/(.*)
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 и текстовый редактор ;)