Browse Source

add multiple providers (#715)

pull/717/head
Henrique Goncalves 5 years ago
committed by GitHub
parent
commit
059ffdbb28
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 9
      .github/workflows/marketplace-aws.yml
  2. 17
      .github/workflows/marketplace-azure.yml
  3. 9
      .github/workflows/marketplace-digitalocean.yml
  4. 15
      .github/workflows/marketplace-gcp.yml
  5. 44
      .github/workflows/marketplace-heroku.yml
  6. 44
      .github/workflows/marketplace-render.yml
  7. 12
      .github/workflows/marketplace-vultr.yml
  8. 6
      README.md
  9. 71
      app.json
  10. 3
      heroku.yml
  11. 4
      packer/aws.pkr.hcl
  12. 70
      packer/azure.pkr.hcl
  13. 6
      packer/digitalocean.pkr.hcl
  14. 35
      packer/gcp.pkr.hcl
  15. 7
      packer/heroku/squidex/Dockerfile
  16. 13
      packer/heroku/squidex/squidex.sh
  17. 1
      packer/render/mongo/Dockerfile
  18. 7
      packer/render/squidex/Dockerfile
  19. 10
      packer/render/squidex/squidex.sh
  20. 46
      packer/vultr.pkr.hcl
  21. 50
      render.yaml

9
.github/workflows/marketplace-aws.yml

@ -30,6 +30,15 @@ jobs:
- name: Inject slug/short variables
uses: rlespinasse/github-slug-action@v3.x
- name: Init
uses: hashicorp/packer-github-actions@master
with:
command: init
target: vultr.pkr.hcl
env:
PACKER_LOG: 1
working-directory: packer/
- name: Build
uses: hashicorp/packer-github-actions@master
with:

17
.github/workflows/marketplace-azure.yml

@ -5,6 +5,8 @@ on:
release:
types: [ released ]
# az ad sp create-for-rbac --name squidex
jobs:
validate:
runs-on: ubuntu-latest
@ -13,7 +15,6 @@ jobs:
uses: actions/checkout@v2
- name: Validate Template
if: false
uses: hashicorp/packer-github-actions@master
with:
command: validate
@ -31,8 +32,16 @@ jobs:
- name: Inject slug/short variables
uses: rlespinasse/github-slug-action@v3.x
- name: Init
uses: hashicorp/packer-github-actions@master
with:
command: init
target: vultr.pkr.hcl
env:
PACKER_LOG: 1
working-directory: packer/
- name: Build
if: false
uses: hashicorp/packer-github-actions@master
with:
command: build
@ -41,4 +50,8 @@ jobs:
env:
PACKER_LOG: 1
PKR_VAR_squidex_version: "${{ env.GITHUB_REF_SLUG }}"
PKR_VAR_subscription_id: "${{ secrets.AZURE_SUBSCRIPTION_ID }}"
PKR_VAR_tenant_id: "${{ secrets.AZURE_TENANT_ID }}"
PKR_VAR_client_id: "${{ secrets.AZURE_CLIENT_ID }}"
PKR_VAR_client_secret: "${{ secrets.AZURE_CLIENT_SECRET }}"
working-directory: packer/

9
.github/workflows/marketplace-digitalocean.yml

@ -30,6 +30,15 @@ jobs:
- name: Inject slug/short variables
uses: rlespinasse/github-slug-action@v3.x
- name: Init
uses: hashicorp/packer-github-actions@master
with:
command: init
target: vultr.pkr.hcl
env:
PACKER_LOG: 1
working-directory: packer/
- name: Build
uses: hashicorp/packer-github-actions@master
with:

15
.github/workflows/marketplace-gcp.yml

@ -13,7 +13,6 @@ jobs:
uses: actions/checkout@v2
- name: Validate Template
if: false
uses: hashicorp/packer-github-actions@master
with:
command: validate
@ -31,8 +30,19 @@ jobs:
- name: Inject slug/short variables
uses: rlespinasse/github-slug-action@v3.x
- name: Extract service account
run: echo "${{ secrets.GOOGLE_APPLICATION_CREDENTIALS }}" | base64 -d > /tmp/squidex.json
- name: Init
uses: hashicorp/packer-github-actions@master
with:
command: init
target: vultr.pkr.hcl
env:
PACKER_LOG: 1
working-directory: packer/
- name: Build
if: false
uses: hashicorp/packer-github-actions@master
with:
command: build
@ -41,4 +51,5 @@ jobs:
env:
PACKER_LOG: 1
PKR_VAR_squidex_version: "${{ env.GITHUB_REF_SLUG }}"
GOOGLE_APPLICATION_CREDENTIALS: "/tmp/squidex.json"
working-directory: packer/

44
.github/workflows/marketplace-heroku.yml

@ -1,44 +0,0 @@
name: Marketplace - Heroku
concurrency: marketplace-heroku
on:
release:
types: [ released ]
jobs:
validate:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v2
- name: Validate Template
if: false
uses: hashicorp/packer-github-actions@master
with:
command: validate
arguments: -syntax-only
target: heroku.pkr.hcl
working-directory: packer/
publish:
needs: validate
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v2
- name: Inject slug/short variables
uses: rlespinasse/github-slug-action@v3.x
- name: Build
if: false
uses: hashicorp/packer-github-actions@master
with:
command: build
arguments: "-color=false -on-error=abort"
target: heroku.pkr.hcl
env:
PACKER_LOG: 1
PKR_VAR_squidex_version: "${{ env.GITHUB_REF_SLUG }}"
working-directory: packer/

44
.github/workflows/marketplace-render.yml

@ -1,44 +0,0 @@
name: Marketplace - Render
concurrency: marketplace-render
on:
release:
types: [ released ]
jobs:
validate:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v2
- name: Validate Template
if: false
uses: hashicorp/packer-github-actions@master
with:
command: validate
arguments: -syntax-only
target: render.pkr.hcl
working-directory: packer/
publish:
needs: validate
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v2
- name: Inject slug/short variables
uses: rlespinasse/github-slug-action@v3.x
- name: Build
if: false
uses: hashicorp/packer-github-actions@master
with:
command: build
arguments: "-color=false -on-error=abort"
target: render.pkr.hcl
env:
PACKER_LOG: 1
PKR_VAR_squidex_version: "${{ env.GITHUB_REF_SLUG }}"
working-directory: packer/

12
.github/workflows/marketplace-vultr.yml

@ -13,7 +13,6 @@ jobs:
uses: actions/checkout@v2
- name: Validate Template
if: false
uses: hashicorp/packer-github-actions@master
with:
command: validate
@ -31,8 +30,16 @@ jobs:
- name: Inject slug/short variables
uses: rlespinasse/github-slug-action@v3.x
- name: Init
uses: hashicorp/packer-github-actions@master
with:
command: init
target: vultr.pkr.hcl
env:
PACKER_LOG: 1
working-directory: packer/
- name: Build
if: false
uses: hashicorp/packer-github-actions@master
with:
command: build
@ -41,4 +48,5 @@ jobs:
env:
PACKER_LOG: 1
PKR_VAR_squidex_version: "${{ env.GITHUB_REF_SLUG }}"
VULTR_API_KEY: "${{ secrets.VULTR_API_KEY }}"
working-directory: packer/

6
README.md

@ -25,6 +25,12 @@ Current Version ![GitHub release](https://img.shields.io/github/release/squidex/
* [MongoDB](https://www.mongodb.com/)
* [.NET Core SDK](https://www.microsoft.com/net/download/core#/current) (Already part of Visual Studio 2017)
## Quick Deploy
[![Deploy to Heroku](http://img.shields.io/badge/-Deploy%20to%20Heroku-430098?style=for-the-badge&logo=heroku&logoColor=ffffff)](https://heroku.com/deploy?template=https://github.com/Squidex/squidex)
[![Deploy to Render](http://img.shields.io/badge/-Deploy%20to%20Render-44E4B4?style=for-the-badge&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAADyklEQVR4Xu1aT0gUURh/k5qV2y5pEbpqHiqqy4IIQUGghbNOK53WkwQFdekqRHXNDkHXIKhuXdZTZu6MRkbkJRFJKAKNUnQPEir+IXdr98XbdXbfzrznjLvvObM7s5dld7553/f93u/78/4IwOEfweH+AxcAlwEOR8ANAYcTwE2CfEIAAqEzpjSmQPLobhj2zi9N4fLiotxKet87vvZloKcnqT6jyW2sx2fGz1xb38kGJgCEv0b2h/yBvuu+0/0kZRAAAtX0/wqCkGcPhBAJ6T7SbNQXPSWtqQ9ocsFFpUNpDI5xBeBnYn2+pcrTtJuZpsnSANBCRQNAK8cVgM7F4W6lvmuQZRYxy4De2ajvlSkGvO1QGkPsGXB/aeJF/7G2myxmHR/DGIBMREizsnUhcO/3xMtHdW03WDuPxjMGIKPVshwgLshXZb84lO88OcUVApDtAYAwBUn5XHV2Kbn1tzc2FhptlkYKAcCKd0yXwbnExnxzVQ012z9emb5ztzbw1AonitFpCgBU5yPnwnGaouCCcl5pCn4uxhCr3jUFwLPVbw9v+84+0BkJAXiyMn2rry7w3CoHkN7u2JtDJP0HPv2J4x0jScYUALROaym5lTheebDaSueRbu6dIE2BOBe9PNIivS9vACAQIIApIn00vbtVQOgnKFOambTCV2KDzaP13XOlBUDGWiYAoKVmtEGcJCULbeNiHwYwBkBuECdLiwEMQwAxwO4AFMM8wzLoAuAyYDsECIs+uyRBx4dACkJIimVmZTAvCWJMsAsDuLbCpZAE9xYACADiG6KcAxmQ4b8aBQ4EIJNvHQ+AWnbswgDuZdDuiyHuAOTKYH435BgGuIuhklsO89wP2I4C9LXPjltiWJTyaYWxjGOXHMC3E/wlt8onSm1HiGcIZNsgG7XCKZjeu9aeWzoqBEhn1EwACMNIxcaypyZNqmUAQG0uCUTrcvd0imlGin23a2bYSxrDc7Jrc0AQspepCj4aK9ZAO79vuClqZ+NZ2OYCYISi2R0hdEQ9WB/aNHOAQqvb1Csyaobb/t7TO0Kirg/I5VvcYBUAUjY2e/fHSC49NgRA+kG5KIkrhwAEYwwuSuIM0DpHAqAQBtA2WEzfFE33AXrNTMpgFgCDcwGuIaDxbW9DwOTJkAsAzyRoJQMufn992OOpbsvZ8A8AUJn+id/EDkciFWsXvJdwW5EUktbe2BYX5HZSrtDLDbWrunB5r1/8iHd4tPHiNdVTH460r+5U6dw+wKgPKPfnLgPKfYaN/HMZYIRQuT93GVDuM2zk338nAalfI74e1QAAAABJRU5ErkJggg==&logoColor=ffffff)](https://render.com/deploy?repo=https://github.com/Squidex/squidex)
## Contributors
### Core Team and Founders

71
app.json

@ -0,0 +1,71 @@
{
"name": "Squidex",
"description": "Headless CMS and Content Managment Hub",
"website": "https://squidex.io/",
"repository": "https://github.com/Squidex/squidex",
"logo": "https://avatars.githubusercontent.com/u/25371797?s=200&v=4",
"success_url": "/",
"env": {
"DOMAIN": {
"description": "Domain name",
"value": "squidex.example.com"
},
"MONGO_USERNAME": {
"description": "Mongo Username, follow https://devcenter.heroku.com/articles/ormongo#open-the-dashboard to create a database named Squidex and then edit the deployment to reflect the credentials you used",
"value": "Squidex"
},
"MONGO_PASSWORD": {
"description": "Mongo Password (see MONGO_USERNAME)",
"value": "Squidex123"
},
"EVENTSTORE__TYPE": {
"description": "EventStore Type",
"value": "MongoDB"
},
"IDENTITY__ADMINEMAIL": {
"description": "Admin Email",
"value": "squidex@example.com"
},
"IDENTITY__ADMINPASSWORD": {
"description": "Admin Password",
"generator": "secret"
},
"IDENTITY__GOOGLECLIENT": {
"description": "Google Client ID",
"required": false
},
"IDENTITY__GOOGLESECRET": {
"description": "Google Secret",
"required": false
},
"IDENTITY__GITHUBCLIENT": {
"description": "GitHub Client ID",
"required": false
},
"IDENTITY__GITHUBSECRET": {
"description": "GitHub Secret",
"required": false
},
"IDENTITY__MICROSOFTCLIENT": {
"description": "Microsoft Client ID",
"required": false
},
"IDENTITY__MICROSOFTSECRET": {
"description": "Microsoft Secret",
"required": false
}
},
"formation": {
"web": {
"quantity": 1,
"size": "standard-1x"
}
},
"addons": [
{
"plan": "ormongo:2-mmap",
"as": "MONGO"
}
],
"stack": "container"
}

3
heroku.yml

@ -0,0 +1,3 @@
build:
docker:
web: packer/heroku/squidex/Dockerfile

4
packer/aws.pkr.hcl

@ -3,7 +3,7 @@ variable "squidex_version" {
default = "5.7.0"
}
source "amazon-ebs" "aws" {
source "amazon-ebs" "squidex" {
ami_groups = [
"all"]
ami_virtualization_type = "hvm"
@ -44,7 +44,7 @@ source "amazon-ebs" "aws" {
build {
sources = [
"source.amazon-ebs.aws"
"source.amazon-ebs.squidex"
]
provisioner "ansible" {

70
packer/azure.pkr.hcl

@ -0,0 +1,70 @@
variable "squidex_version" {
type = string
default = "5.7.0"
}
variable "subscription_id" {
type = string
default = "${env("AZURE_SUBSCRIPTION_ID")}"
}
variable "client_id" {
type = string
default = "${env("AZURE_CLIENT_ID")}"
}
variable "client_secret" {
type = string
default = "${env("AZURE_CLIENT_SECRET")}"
}
variable "tenant_id" {
type = string
default = "${env("AZURE_TENANT_ID")}"
}
source "azure-arm" "squidex" {
subscription_id = "${var.subscription_id}"
client_id = "${var.client_id}"
client_secret = "${var.client_secret}"
tenant_id = "${var.tenant_id}"
os_type = "Linux"
image_publisher = "Canonical"
image_offer = "0001-com-ubuntu-server-focal"
image_sku = "20_04-lts"
managed_image_name = "squidex-${replace(var.squidex_version, ".", "-")}-{{ timestamp }}"
managed_image_resource_group_name = "squidex"
location = "West US"
vm_size = "Standard_A2"
}
build {
sources = [
"source.azure-arm.squidex"
]
provisioner "ansible" {
ansible_env_vars = [
"ANSIBLE_HOST_KEY_CHECKING=False",
"ANSIBLE_SSH_ARGS='-F /dev/null -o ForwardAgent=no -o ControlMaster=auto -o ControlPersist=60s'",
"ANSIBLE_NOCOLOR=True"
]
extra_arguments = [
"--extra-vars",
"squidex_version=${var.squidex_version}"]
playbook_file = "./ansible/playbook.yml"
use_proxy = false
}
provisioner "shell" {
execute_command = "chmod +x {{ .Path }}; {{ .Vars }} sudo -E sh '{{ .Path }}'"
inline = [
"/usr/sbin/waagent -force -deprovision+user && export HISTSIZE=0 && sync"
]
inline_shebang = "/bin/sh -x"
skip_clean = true
}
}

6
packer/digitalocean.pkr.hcl

@ -3,11 +3,11 @@ variable "squidex_version" {
default = "5.7.0"
}
source "digitalocean" "do" {
source "digitalocean" "squidex" {
image = "ubuntu-20-04-x64"
region = "sfo3"
droplet_name = "squidex-${replace(var.squidex_version, ".", "-")}-build-{{ timestamp }}"
snapshot_name = "squidex-${replace(var.squidex_version, ".", "-")}"
snapshot_name = "squidex-${replace(var.squidex_version, ".", "-")}-{{ timestamp }}"
snapshot_regions = [
"nyc1",
"sfo1",
@ -29,7 +29,7 @@ source "digitalocean" "do" {
build {
sources = [
"source.digitalocean.do"
"source.digitalocean.squidex"
]
provisioner "ansible" {

35
packer/gcp.pkr.hcl

@ -0,0 +1,35 @@
variable "squidex_version" {
type = string
default = "5.7.0"
}
source "googlecompute" "squidex" {
project_id = "squidex-315304"
ssh_username = "root"
zone = "us-central1-a"
source_image_family = "ubuntu-2004-lts"
instance_name = "squidex-${replace(var.squidex_version, ".", "-")}-build-{{ timestamp }}"
image_name = "squidex-${replace(var.squidex_version, ".", "-")}-{{ timestamp }}"
image_family = "squidex"
image_storage_locations = [
"us"]
}
build {
sources = [
"source.googlecompute.squidex"
]
provisioner "ansible" {
ansible_env_vars = [
"ANSIBLE_HOST_KEY_CHECKING=False",
"ANSIBLE_SSH_ARGS='-F /dev/null -o ForwardAgent=no -o ControlMaster=auto -o ControlPersist=60s'",
"ANSIBLE_NOCOLOR=True"
]
extra_arguments = [
"--extra-vars",
"squidex_version=${var.squidex_version}"]
playbook_file = "./ansible/playbook.yml"
use_proxy = false
}
}

7
packer/heroku/squidex/Dockerfile

@ -0,0 +1,7 @@
FROM squidex/squidex:5
ADD squidex.sh /squidex.sh
RUN chmod +x /squidex.sh
ENTRYPOINT ["/bin/sh", "/squidex.sh"]

13
packer/heroku/squidex/squidex.sh

@ -0,0 +1,13 @@
#!/bin/sh
export URLS__BASEURL="https://${DOMAIN}"
export MONGO_STRIP="$(echo ${MONGO_RS_URL} | sed 's@mongodb://@@g' | sed 's@?replicaSet@Squidex?retryWrites=false\&replicaSet@g')"
export EVENTSTORE__MONGODB__CONFIGURATION="mongodb://${MONGO_USERNAME}:${MONGO_PASSWORD}@${MONGO_STRIP}"
export STORE__MONGODB__CONFIGURATION="mongodb://${MONGO_USERNAME}:${MONGO_PASSWORD}@${MONGO_STRIP}"
export STORE__MONGODB__CONTENTDATABASE="Squidex"
export ASPNETCORE_URLS="http://+:$PORT"
dotnet Squidex.dll

1
packer/render/mongo/Dockerfile

@ -0,0 +1 @@
FROM mongo:4

7
packer/render/squidex/Dockerfile

@ -0,0 +1,7 @@
FROM squidex/squidex:5
ADD squidex.sh /squidex.sh
RUN chmod +x /squidex.sh
ENTRYPOINT ["/bin/sh", "/squidex.sh"]

10
packer/render/squidex/squidex.sh

@ -0,0 +1,10 @@
#!/bin/sh
echo "Waiting 60 seconds ..."
sleep 60
export URLS__BASEURL="https://${DOMAIN}"
export EVENTSTORE__MONGODB__CONFIGURATION="mongodb://${MONGO}"
export STORE__MONGODB__CONFIGURATION="mongodb://${MONGO}"
dotnet Squidex.dll

46
packer/vultr.pkr.hcl

@ -0,0 +1,46 @@
packer {
required_plugins {
vultr = {
version = ">= 2.3.1"
source = "github.com/vultr/vultr"
}
}
}
variable "squidex_version" {
type = string
default = "5.7.0"
}
variable "vultr_api_key" {
type = string
default = "${env("VULTR_API_KEY")}"
}
source "vultr" "squidex" {
api_key = "${var.vultr_api_key}"
region_id = "lax"
plan_id = "vc2-1c-2gb"
os_id = "387" // Ubuntu 20.04
hostname = "squidex-${replace(var.squidex_version, ".", "-")}-build-{{ timestamp }}"
snapshot_description = "squidex-${replace(var.squidex_version, ".", "-")}-{{ timestamp }}"
ssh_username = "root"
state_timeout = "10m"
}
build {
sources = [
"source.vultr.squidex"
]
provisioner "ansible" {
ansible_env_vars = [
"ANSIBLE_HOST_KEY_CHECKING=False",
"ANSIBLE_SSH_ARGS='-F /dev/null -o ForwardAgent=no -o ControlMaster=auto -o ControlPersist=60s'",
"ANSIBLE_NOCOLOR=True"
]
extra_arguments = ["--extra-vars", "squidex_version=${var.squidex_version}"]
playbook_file = "./ansible/playbook.yml"
use_proxy = false
}
}

50
render.yaml

@ -0,0 +1,50 @@
services:
- type: web
name: squidex_squidex
env: docker
repo: https://github.com/Squidex/squidex.git
dockerfilePath: ./packer/render/squidex/Dockerfile
dockerContext: ./packer/render/squidex/
disk:
name: assets
mountPath: /app/Assets
sizeGB: 10
healthCheckPath: /healthz # hanging
envVars:
- key: DOMAIN
sync: false
- key: MONGO
fromService:
name: squidex_mongo
type: pserv
property: hostport
- key: EVENTSTORE__TYPE
value: MongoDB
- key: IDENTITY__ADMINEMAIL
sync: false
- key: IDENTITY__ADMINPASSWORD
generateValue: true
- key: IDENTITY__GOOGLECLIENT
sync: false
- key: IDENTITY__GOOGLESECRET
sync: false
- key: IDENTITY__GITHUBCLIENT
sync: false
- key: IDENTITY__GITHUBSECRET
sync: false
- key: IDENTITY__MICROSOFTCLIENT
sync: false
- key: IDENTITY__MICROSOFTSECRET
sync: false
- key: ASPNETCORE_URLS
value: http://+:5000
- type: pserv
name: squidex_mongo
env: docker
repo: https://github.com/Squidex/squidex.git
dockerfilePath: ./packer/render/mongo/Dockerfile
dockerContext: ./packer/render/mongo/
disk:
name: db
mountPath: /data/db
sizeGB: 10
Loading…
Cancel
Save