From 059ffdbb2813a71c59fbd0c06c149422028f0220 Mon Sep 17 00:00:00 2001 From: Henrique Goncalves Date: Mon, 31 May 2021 08:34:54 -0300 Subject: [PATCH 01/64] add multiple providers (#715) --- .github/workflows/marketplace-aws.yml | 9 +++ .github/workflows/marketplace-azure.yml | 17 ++++- .../workflows/marketplace-digitalocean.yml | 9 +++ .github/workflows/marketplace-gcp.yml | 15 +++- .github/workflows/marketplace-heroku.yml | 44 ------------ .github/workflows/marketplace-render.yml | 44 ------------ .github/workflows/marketplace-vultr.yml | 12 +++- README.md | 6 ++ app.json | 71 +++++++++++++++++++ heroku.yml | 3 + packer/aws.pkr.hcl | 4 +- packer/azure.pkr.hcl | 70 ++++++++++++++++++ packer/digitalocean.pkr.hcl | 6 +- packer/gcp.pkr.hcl | 35 +++++++++ packer/heroku/squidex/Dockerfile | 7 ++ packer/heroku/squidex/squidex.sh | 13 ++++ packer/render/mongo/Dockerfile | 1 + packer/render/squidex/Dockerfile | 7 ++ packer/render/squidex/squidex.sh | 10 +++ packer/vultr.pkr.hcl | 46 ++++++++++++ render.yaml | 50 +++++++++++++ 21 files changed, 380 insertions(+), 99 deletions(-) delete mode 100644 .github/workflows/marketplace-heroku.yml delete mode 100644 .github/workflows/marketplace-render.yml create mode 100644 app.json create mode 100644 heroku.yml create mode 100644 packer/azure.pkr.hcl create mode 100644 packer/gcp.pkr.hcl create mode 100644 packer/heroku/squidex/Dockerfile create mode 100644 packer/heroku/squidex/squidex.sh create mode 100644 packer/render/mongo/Dockerfile create mode 100644 packer/render/squidex/Dockerfile create mode 100644 packer/render/squidex/squidex.sh create mode 100644 packer/vultr.pkr.hcl create mode 100644 render.yaml diff --git a/.github/workflows/marketplace-aws.yml b/.github/workflows/marketplace-aws.yml index 58f1b97fb..f08962b93 100644 --- a/.github/workflows/marketplace-aws.yml +++ b/.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: diff --git a/.github/workflows/marketplace-azure.yml b/.github/workflows/marketplace-azure.yml index 885157103..fcc7c2c73 100644 --- a/.github/workflows/marketplace-azure.yml +++ b/.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/ diff --git a/.github/workflows/marketplace-digitalocean.yml b/.github/workflows/marketplace-digitalocean.yml index 70f59e9f5..99dd55c8b 100644 --- a/.github/workflows/marketplace-digitalocean.yml +++ b/.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: diff --git a/.github/workflows/marketplace-gcp.yml b/.github/workflows/marketplace-gcp.yml index 1cc8e177c..82684793b 100644 --- a/.github/workflows/marketplace-gcp.yml +++ b/.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/ diff --git a/.github/workflows/marketplace-heroku.yml b/.github/workflows/marketplace-heroku.yml deleted file mode 100644 index 23b38ed17..000000000 --- a/.github/workflows/marketplace-heroku.yml +++ /dev/null @@ -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/ diff --git a/.github/workflows/marketplace-render.yml b/.github/workflows/marketplace-render.yml deleted file mode 100644 index b5d6478a9..000000000 --- a/.github/workflows/marketplace-render.yml +++ /dev/null @@ -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/ diff --git a/.github/workflows/marketplace-vultr.yml b/.github/workflows/marketplace-vultr.yml index a18f18cbf..9fc73aaef 100644 --- a/.github/workflows/marketplace-vultr.yml +++ b/.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/ diff --git a/README.md b/README.md index 427a5917a..8552a87e4 100644 --- a/README.md +++ b/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 diff --git a/app.json b/app.json new file mode 100644 index 000000000..a4603d5e0 --- /dev/null +++ b/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" +} diff --git a/heroku.yml b/heroku.yml new file mode 100644 index 000000000..5c06863e2 --- /dev/null +++ b/heroku.yml @@ -0,0 +1,3 @@ +build: + docker: + web: packer/heroku/squidex/Dockerfile \ No newline at end of file diff --git a/packer/aws.pkr.hcl b/packer/aws.pkr.hcl index 06a7949a1..67a2e88ee 100644 --- a/packer/aws.pkr.hcl +++ b/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" { diff --git a/packer/azure.pkr.hcl b/packer/azure.pkr.hcl new file mode 100644 index 000000000..eb7e3503e --- /dev/null +++ b/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 + } +} \ No newline at end of file diff --git a/packer/digitalocean.pkr.hcl b/packer/digitalocean.pkr.hcl index 362117a3e..2301f514e 100644 --- a/packer/digitalocean.pkr.hcl +++ b/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" { diff --git a/packer/gcp.pkr.hcl b/packer/gcp.pkr.hcl new file mode 100644 index 000000000..104c0dae5 --- /dev/null +++ b/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 + } +} \ No newline at end of file diff --git a/packer/heroku/squidex/Dockerfile b/packer/heroku/squidex/Dockerfile new file mode 100644 index 000000000..a9db913a8 --- /dev/null +++ b/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"] diff --git a/packer/heroku/squidex/squidex.sh b/packer/heroku/squidex/squidex.sh new file mode 100644 index 000000000..b9e047bff --- /dev/null +++ b/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 \ No newline at end of file diff --git a/packer/render/mongo/Dockerfile b/packer/render/mongo/Dockerfile new file mode 100644 index 000000000..83bba3727 --- /dev/null +++ b/packer/render/mongo/Dockerfile @@ -0,0 +1 @@ +FROM mongo:4 diff --git a/packer/render/squidex/Dockerfile b/packer/render/squidex/Dockerfile new file mode 100644 index 000000000..a9db913a8 --- /dev/null +++ b/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"] diff --git a/packer/render/squidex/squidex.sh b/packer/render/squidex/squidex.sh new file mode 100644 index 000000000..97d881775 --- /dev/null +++ b/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 \ No newline at end of file diff --git a/packer/vultr.pkr.hcl b/packer/vultr.pkr.hcl new file mode 100644 index 000000000..a0a37bca5 --- /dev/null +++ b/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 + } +} \ No newline at end of file diff --git a/render.yaml b/render.yaml new file mode 100644 index 000000000..b103291e9 --- /dev/null +++ b/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 \ No newline at end of file From 6f701d12828e94e3f2a37628d93eddf88e6f6e40 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Mon, 31 May 2021 16:30:57 +0200 Subject: [PATCH 02/64] Improve deployment options. --- README.md | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 8552a87e4..5e2e2ebc2 100644 --- a/README.md +++ b/README.md @@ -25,10 +25,22 @@ 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 +## Deployment Options + +| Platform | Documentation | Quicklink | +| -------- | ------------- | ---- | +| Azure | [Docs](https://docs.squidex.io/01-getting-started/installation/platforms/install-azure) | +| AWS | [Docs](https://docs.squidex.io/01-getting-started/installation/platforms/install-aws) | +| Docker | [Docs](https://docs.squidex.io/01-getting-started/installation/platforms/install-docker) | [![Docker Compose](https://img.shields.io/badge/-docker--compose.yml-2496ED?style=for-the-badge&logo=docker&logoColor=ffffff)](https://github.com/Squidex/squidex-hosting/blob/master/docker-compose/docker-compose.yml) | +| GCP | [Docs](https://docs.squidex.io/01-getting-started/installation/platforms/install-gcp) | +| Heroku | [Docs](https://docs.squidex.io/01-getting-started/installation/platforms/install-heroku) | [![Deploy to Heroku](https://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) | +| IIS | [Docs](https://docs.squidex.io/01-getting-started/installation/platforms/install-azure) | +| k8 | [Docs](https://docs.squidex.io/01-getting-started/installation/platforms/install-kubernetes) | +| Render | [Docs](https://docs.squidex.io/01-getting-started/installation/platforms/install-render) | [![Deploy to Render](https://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) | +| Vultr | [Docs](https://docs.squidex.io/01-getting-started/installation/platforms/install-vultr) | [![Deploy to Vultr](https://img.shields.io/badge/-Deploy%20to%20Vultr-007BFC?style=for-the-badge&logo=vultr&logoColor=ffffff)](https://www.vultr.com/marketplace/apps/squidex) | + + -[![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 From df5fc5ca62eace60041c403f3fb13c0473d631ab Mon Sep 17 00:00:00 2001 From: Sebastian Date: Mon, 31 May 2021 18:26:04 +0200 Subject: [PATCH 03/64] Mini styling improvements. --- frontend/app/theme/_static.scss | 6 ++++-- frontend/app/theme/_vars.scss | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/frontend/app/theme/_static.scss b/frontend/app/theme/_static.scss index 33da73be4..a51619eb2 100644 --- a/frontend/app/theme/_static.scss +++ b/frontend/app/theme/_static.scss @@ -36,7 +36,8 @@ noscript { .profile { &-container { margin: 0 auto; - max-width: 45rem; + max-width: 30rem; + min-width: 10rem; padding: 1rem 2rem; } @@ -134,8 +135,9 @@ noscript { display: inline-block; font-size: 1.1rem; font-weight: normal; + margin-bottom: 4px; + margin-right: .5rem; vertical-align: middle; - width: 1.6rem; } } diff --git a/frontend/app/theme/_vars.scss b/frontend/app/theme/_vars.scss index 916f366f0..ef8a0bbd8 100644 --- a/frontend/app/theme/_vars.scss +++ b/frontend/app/theme/_vars.scss @@ -15,9 +15,9 @@ $color-code-text: #708090; $color-extern-google: #d34836; $color-extern-google-icon: #b02c1b; $color-extern-microsoft: #004185; -$color-extern-microsoft-icon: #1b67b7; +$color-extern-microsoft-icon: #1e75cc; $color-extern-github: #353535; -$color-extern-github-icon: #616161; +$color-extern-github-icon: #727272; $color-extern-twitter: #1da1f2; $color-extern-twitter-icon: #1681bf; From 5e1dcac6ac813d4682becada41c243dd35ee1e27 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Mon, 31 May 2021 18:58:33 +0200 Subject: [PATCH 04/64] More styling. --- .../Api/Controllers/Apps/Models/ClientsDto.cs | 2 +- .../Views/Account/Consent.cshtml | 6 +- .../IdentityServer/Views/Account/Login.cshtml | 150 +++++++++--------- frontend/app/theme/_static.scss | 12 +- 4 files changed, 91 insertions(+), 79 deletions(-) diff --git a/backend/src/Squidex/Areas/Api/Controllers/Apps/Models/ClientsDto.cs b/backend/src/Squidex/Areas/Api/Controllers/Apps/Models/ClientsDto.cs index fc1d9d316..08ee667b1 100644 --- a/backend/src/Squidex/Areas/Api/Controllers/Apps/Models/ClientsDto.cs +++ b/backend/src/Squidex/Areas/Api/Controllers/Apps/Models/ClientsDto.cs @@ -30,7 +30,7 @@ namespace Squidex.Areas.Api.Controllers.Apps.Models .ToArray() }; - return result; + return result.CreateLinks(resources); } private ClientsDto CreateLinks(Resources resources) diff --git a/backend/src/Squidex/Areas/IdentityServer/Views/Account/Consent.cshtml b/backend/src/Squidex/Areas/IdentityServer/Views/Account/Consent.cshtml index 563d65e59..6ebd6eee1 100644 --- a/backend/src/Squidex/Areas/IdentityServer/Views/Account/Consent.cshtml +++ b/backend/src/Squidex/Areas/IdentityServer/Views/Account/Consent.cshtml @@ -15,7 +15,7 @@

@T.Get("users.consent.headline")