- Strapi CMS deployed on AppEngine
- Content on Postgres (Cloud SQL) / Media on a Cloud Storage bucket
- Static 11ty site deployed on Cloud Storage + Cloud CDN
- Cloud build pipeline triggered by a Strapi webhook to update website with new content
- nip.io is used for simplicity, to provide a https url
- Get a GCP project with a linked billing account
- Create app engine application
- Create a bucket for terraform state
- Fork this repository
- Connect your forked repository to Cloud Build
- Set config files from templates (infra/backend.conf.template & infra/terraform.tfvars.template)
| Property | Description |
|---|---|
| bucket | Name of the terraform state bucket |
| prefix | Prefix for state files in the bucket (usually tfstate/) |
| Property | Description |
|---|---|
| project_id | GCP project id. |
| service_src_bucket | Name of the bucket that will be created to store app engine sources. |
| strapi_app_keys | See app.keys. You can set random strings separated by a comma. |
| strapi_api_token_salt | See apiToken.salt. You can set a random string. |
| strapi_admin_jwt_secret | See auth.secret. You can set a random string. |
| strapi_jwt_secret | See JWT configuration. You can set a random string. |
| strapi_media_bucket | Name of the bucket that will be created to store strapi media files. |
| front_bucket | Name of the bucket that will be created to store 11ty static website. |
| repository_owner | Owner of the forked bucket (https://github.com/<repository_owner>/<repository_name>). |
| repository_name | Name of the forked bucket (https://github.com/<repository_owner>/<repository_name>). |
terraform init -backend-config=backend.conf
terraform plan
terraform applyNote the outputs:
Outputs:
front_url = "<ip>.nip.io"
strapi_url = "https://strapi-dot-<project_id>.appspot.com/admin"- Browse Cloud Build triggers page on the GCP console
- Click on webhook-trigger
- Click on SHOW URL PREVIEW and copy the webhook url
- Browse Strapi url (url in the terraform outputs)
- Create an admin account
- Go to Settings > Webhooks
- Create a new webhook: set a name > paste the webhook url > enable Entry events > Save
- Go to Settings > USERS & PERMISSIONS PLUGIN > Roles
- Add a new role: Post > enable find & findOne > Save
- Go to Content Manager > Post
- Add a new entry with some images in the content and publish it
- You shoud see a new build triggered in the Cloud Build page
- Once the build is completed, browse the front url (url in the terraform outputs) and you should find your post in the Blog section
