From 45913de805b9747cf0f468ab533208db4f189bd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Fri, 8 Jul 2022 11:14:18 +0200 Subject: [PATCH 01/81] Refine docs, first step --- README.md | 31 ++++++++++++++++++++++----- deployment/kubernetes/DigitalOcean.md | 3 ++- 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index a74a590b6..a57f1840a 100644 --- a/README.md +++ b/README.md @@ -8,14 +8,20 @@ This repository is an in use template to rebrand, configure, and deploy [ocelot.social](https://github.com/Ocelot-Social-Community/Ocelot-Social) networks. The forked original repository is [Ocelot-Social-Deploy-Rebranding](https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding). +

Ocelot-Social

+ - Logins: @@ -24,7 +30,8 @@ Logins: | `user@example.org` | 1234 | user | | `moderator@example.org` | 1234 | moderator | | `admin@example.org` | 1234 | admin | ---> + +Deployed networks can be found [here](#list-of-deployed-networks). ## Usage @@ -44,7 +51,7 @@ The next step is: - [Configure And Branding](/branding/README.md) -### Optional: Proof Configuration And Branding Locally +### Optional: Locally Testing Configuration And Branding Just in case you have Docker installed and run the following, you can check your branding locally: @@ -74,7 +81,7 @@ Secondly, in your GitHub repository, click on the 'Settings' tab and go to the ' 1. Named `DOCKERHUB_TOKEN` with the newly created DockerHub token (only the code, not the token name). 2. Named `DOCKERHUB_USERNAME` with your DockerHub username. -### Optional: Proof DockerHub Images Locally +### Optional: Locally Testing Your DockerHub Images Just in case you like to check your pushed Docker images in your organisation's DockerHub repositories locally: @@ -123,6 +130,20 @@ Browser compatibility testing with [BrowserStack](https://www.browserstack.com/) BrowserStack Logo --> +## List Of Deployed Networks + +You may need an invitation to access a network. + +### More Likely To Try + +- [wir.social](https://wir.social) + +### Others + +- [freilernen.social](https://freilernen.social) +- [helfa.social](https://helfa.social) +- [sender.fm](https://sender.fm) + ## License See the [LICENSE](/LICENSE.md) file for license rights and limitations (MIT). diff --git a/deployment/kubernetes/DigitalOcean.md b/deployment/kubernetes/DigitalOcean.md index 50b70346b..b935ff7d1 100644 --- a/deployment/kubernetes/DigitalOcean.md +++ b/deployment/kubernetes/DigitalOcean.md @@ -18,7 +18,8 @@ On the right top you find the button `Create`. Click on it and choose `Kubernete - use the latest Kubernetes version - choose your datacenter region - name your node pool: e.g. `pool-` -- 2 `Basic node` with a total of 4GB and 2 shared CPUs are enough to start with +- `2 Basic nodes` with a total of `4 GB` and `2 shared CPUs` are enough to start with +- `2 Basic nodes` with a total of `8 GB` and `2 shared CPUs` are a bit more optimal for the beginning - no tags necessary - set your cluster name: e.g. `cluster-` - select your project From 2dd33909c7a7829828d1ff994a7f5f67061d3ce4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Sat, 9 Jul 2022 21:20:16 +0200 Subject: [PATCH 02/81] Update cert-manager apiVersion "cert-manager.io/v1alpha2" to "cert-manager.io/v1" --- .../kubernetes/templates/issuer/letsencrypt-production.yaml | 2 +- deployment/kubernetes/templates/issuer/letsencrypt-staging.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/deployment/kubernetes/templates/issuer/letsencrypt-production.yaml b/deployment/kubernetes/templates/issuer/letsencrypt-production.yaml index 2836cceff..6f82f3686 100644 --- a/deployment/kubernetes/templates/issuer/letsencrypt-production.yaml +++ b/deployment/kubernetes/templates/issuer/letsencrypt-production.yaml @@ -1,4 +1,4 @@ -apiVersion: cert-manager.io/v1alpha2 +apiVersion: cert-manager.io/v1 kind: ClusterIssuer metadata: name: letsencrypt-production diff --git a/deployment/kubernetes/templates/issuer/letsencrypt-staging.yaml b/deployment/kubernetes/templates/issuer/letsencrypt-staging.yaml index 7190e6553..e488d9335 100644 --- a/deployment/kubernetes/templates/issuer/letsencrypt-staging.yaml +++ b/deployment/kubernetes/templates/issuer/letsencrypt-staging.yaml @@ -1,4 +1,4 @@ -apiVersion: cert-manager.io/v1alpha2 +apiVersion: cert-manager.io/v1 kind: ClusterIssuer metadata: name: letsencrypt-staging From 70a60122b4c456e0a087a0a82ba66a2ec30f875f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Sat, 9 Jul 2022 21:21:33 +0200 Subject: [PATCH 03/81] Update deploy instructions --- LICENSE.md | 2 +- deployment/kubernetes/DigitalOcean.md | 11 +++++----- deployment/kubernetes/LICENSE | 12 ----------- deployment/kubernetes/README.md | 31 ++++++++++++++++++++++----- 4 files changed, 32 insertions(+), 24 deletions(-) delete mode 100644 deployment/kubernetes/LICENSE diff --git a/LICENSE.md b/LICENSE.md index d2be00378..69cc340af 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -2,7 +2,7 @@ MIT License -Copyright \(c\) 2021 by the [Ocelot.Social Community](https://github.com/Ocelot-Social-Community) +Copyright \(c\) 2022 by the [Ocelot.Social Community](https://github.com/Ocelot-Social-Community) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files \(the "Software"\), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: diff --git a/deployment/kubernetes/DigitalOcean.md b/deployment/kubernetes/DigitalOcean.md index b935ff7d1..2c919d5f2 100644 --- a/deployment/kubernetes/DigitalOcean.md +++ b/deployment/kubernetes/DigitalOcean.md @@ -18,18 +18,17 @@ On the right top you find the button `Create`. Click on it and choose `Kubernete - use the latest Kubernetes version - choose your datacenter region - name your node pool: e.g. `pool-` -- `2 Basic nodes` with a total of `4 GB` and `2 shared CPUs` are enough to start with -- `2 Basic nodes` with a total of `8 GB` and `2 shared CPUs` are a bit more optimal for the beginning -- no tags necessary +- `2 Basic nodes` with `2.5 GB RAM (total of 4 GB)`, `2 shared CPUs`, and `80 GB Disk` each is optimal for the beginning - set your cluster name: e.g. `cluster-` - select your project +- no tags necessary ## Getting Started -After your cluster is set up, see progress bar above, click on `Getting started`. Please install the following management tools: +After your cluster is set up – see progress bar above – click on `Getting started`. Please install the following management tools: -- [kubectl](https://kubernetes.io/docs/tasks/tools/) -- [doctl](https://github.com/digitalocean/doctl) +- [kubectl v1.24.1](https://kubernetes.io/docs/tasks/tools/) +- [doctl v1.78.0](https://github.com/digitalocean/doctl) Install the tools as described on the tab or see the links here. diff --git a/deployment/kubernetes/LICENSE b/deployment/kubernetes/LICENSE deleted file mode 100644 index a027039fd..000000000 --- a/deployment/kubernetes/LICENSE +++ /dev/null @@ -1,12 +0,0 @@ -# LICENSE - -MIT License - -Copyright \(c\) 2021 Ulf Gebhardt - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files \(the "Software"\), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - diff --git a/deployment/kubernetes/README.md b/deployment/kubernetes/README.md index c519cb06d..8388f502c 100644 --- a/deployment/kubernetes/README.md +++ b/deployment/kubernetes/README.md @@ -19,15 +19,36 @@ Besides the `values.template.yaml` file we provide a `nginx.values.template.yaml ## Installation -Due to the many limitations of Helm you still have to do several manual steps. Those occur before you run the actual *ocelot.social* Helm chart. Obviously it is expected of you to have `helm` and `kubectl` installed. For DigitalOcean you might require `doctl` aswell. +Due to the many limitations of Helm you still have to do several manual steps. +Those occur before you run the actual *ocelot.social* Helm chart. +Obviously it is expected of you to have `helm` and `kubectl` installed. +For the cert-manager you may need `cmctl`, see below. +For DigitalOcean you may also need `doctl`. + +Install: + +- [kubectl v1.24.1](https://kubernetes.io/docs/tasks/tools/) +- [doctl v1.78.0](https://docs.digitalocean.com/reference/doctl/how-to/install/) +- [cmctl v1.8.2](https://cert-manager.io/docs/usage/cmctl/#installation) +- [helm v3.9.0](https://helm.sh/docs/intro/install/) + ### Cert Manager (https) -Please refer to [cert-manager.io docs](https://cert-manager.io/docs/installation/kubernetes/) for more details. +Please refer to [cert-manager.io docs](https://cert-manager.io/docs/installation/) for more details. ***ATTENTION:*** *Be with the Terminal in your repository in the folder of this README.* -#### 1. Create Namespace +We have three ways to install the cert-manager, purely via `kubectl`, via `cmctl`, or with `helm`. + +We recommend using `helm` because then we do not mix the installation methods. +Please have a look here: + +- [Installing with Helm](https://cert-manager.io/docs/installation/helm/#installing-with-helm) + +***ATTENTION:*** *When uninstalling cert-manager, be sure to use the same method as for installation! Otherwise, we could end up in a broken state, see [Uninstall](https://cert-manager.io/docs/installation/kubectl/#uninstalling).* + + ### Ingress-Nginx @@ -108,7 +129,7 @@ You will need an API token, which you can generate in the control panel at Date: Sat, 9 Jul 2022 21:33:39 +0200 Subject: [PATCH 04/81] Update TODO-next-update.md --- TODO-next-update.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/TODO-next-update.md b/TODO-next-update.md index b27f5f1e0..458536484 100644 --- a/TODO-next-update.md +++ b/TODO-next-update.md @@ -2,7 +2,14 @@ When you overtake this deploy and rebrand repo to your network you have to recognize the following changes and doings … -## This Latest Version > 1.0.7 with 'ocelotDockerVersionTag' 1.0.7-171 +## Version > 1.0.8 with 'ocelotDockerVersionTag' 1.0.8-182 + +### Deployment/Rebranding PR – chore: [WIP] 🍰 Refine docs, first step #46 + +- Commit: `Update cert-manager apiVersion "cert-manager.io/v1alpha2" to "cert-manager.io/v1" + - Check for `kubectl` and `helm` versions. + +## Version 1.0.8 with 'ocelotDockerVersionTag' 1.0.8-182 ### PR – feat: 🍰 Configure Cookie Expire Time #43 From 11742743760737d9b7c138e3d5cb9ec4a8a5739b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Mon, 18 Jul 2022 07:24:58 +0200 Subject: [PATCH 05/81] Add Docker documentation --- docker/DOCKER_MORE_CLOSELY.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 docker/DOCKER_MORE_CLOSELY.md diff --git a/docker/DOCKER_MORE_CLOSELY.md b/docker/DOCKER_MORE_CLOSELY.md new file mode 100644 index 000000000..c5c926982 --- /dev/null +++ b/docker/DOCKER_MORE_CLOSELY.md @@ -0,0 +1,16 @@ +# Docker + +## Apple M1 Platform + +***Attention:** For using Docker commands in Apple M1 environments!* + +```bash +# set env variable for your shell +$ export DOCKER_DEFAULT_PLATFORM=linux/amd64 +``` + +For even more informations, see [Docker More Closely](#docker-more-closely) + +## Docker More Closely + +To get more informations about the Apple M1 platform and to analyze the Docker builds etc. you find our documentation in our main code, [here](https://github.com/Ocelot-Social-Community/Ocelot-Social/blob/master/DOCKER_MORE_CLOSELY.md). From d6480c14e5ac47577d4cd24bbd036063d06544f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Mon, 18 Jul 2022 07:56:06 +0200 Subject: [PATCH 06/81] Rename Neo4j Docker image in general to 'neo4j-community:*' --- docker-compose.ocelotsocial-branded.yml | 27 ++++++++++------ docker-compose.yml | 41 ++++++++++++++++--------- docker/neo4j.Dockerfile | 3 +- 3 files changed, 47 insertions(+), 24 deletions(-) diff --git a/docker-compose.ocelotsocial-branded.yml b/docker-compose.ocelotsocial-branded.yml index 6d4c148f8..7591b4a3a 100644 --- a/docker-compose.ocelotsocial-branded.yml +++ b/docker-compose.ocelotsocial-branded.yml @@ -2,10 +2,12 @@ version: "3.4" services: + ######################################################## # WEBAPP ############################################### ######################################################## webapp: + # name the image to match our image to be tested from our DockerHub repository so that it can be pulled from there, otherwise it will be created locally from the 'dockerfile' image: ocelotsocialnetwork/webapp-branded:latest ports: - 3000:3000 @@ -19,10 +21,12 @@ services: - MAPBOX_TOKEN="pk.eyJ1IjoiYnVzZmFrdG9yIiwiYSI6ImNraDNiM3JxcDBhaWQydG1uczhpZWtpOW4ifQ.7TNRTO-o9aK1Y6MyW_Nd4g" # - WEBSOCKETS_URI=ws://backend:4000/graphql # is not working and not given in Docker YAML in main repo - PUBLIC_REGISTRATION=true + ######################################################## # BACKEND ############################################## ######################################################## backend: + # name the image to match our image to be tested from our DockerHub repository so that it can be pulled from there, otherwise it will be created locally from the 'dockerfile' image: ocelotsocialnetwork/backend-branded:latest networks: - test-network @@ -47,10 +51,23 @@ services: - SMTP_HOST=mailserver - SMTP_PORT=25 - SMTP_IGNORE_TLS=true + + ######################################################## + # MAINTENANCE ########################################## + ######################################################## + maintenance: + # name the image to match our image to be tested from our DockerHub repository so that it can be pulled from there, otherwise it will be created locally from the 'dockerfile' + image: ocelotsocialnetwork/maintenance-branded:latest + networks: + - test-network + ports: + - 3001:80 + ######################################################## # NEO4J ################################################ ######################################################## neo4j: + # name the image to match our image to be tested from our DockerHub repository so that it can be pulled from there, otherwise it will be created locally from the 'dockerfile' image: ocelotsocialnetwork/neo4j-community-branded:latest networks: - test-network @@ -62,15 +79,7 @@ services: - 7687:7687 volumes: - neo4j_data:/data - ######################################################## - # MAINTENANCE ########################################## - ######################################################## - maintenance: - image: ocelotsocialnetwork/maintenance-branded:latest - networks: - - test-network - ports: - - 5000:80 + ######################################################## # MAILSERVER TO FAKE SMTP ############################## ######################################################## diff --git a/docker-compose.yml b/docker-compose.yml index 41d515dec..5610511ce 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,11 +1,15 @@ # This docker-compose file is just here for testing + version: "3.4" services: + ######################################################## # WEBAPP ############################################### ######################################################## webapp: + # name the image so that it cannot be found in a DockerHub repository, otherwise it will not be built locally from the 'dockerfile' but pulled from there + image: ocelotsocialnetwork/webapp-branded:local-production build: dockerfile: docker/webapp.Dockerfile target: branded @@ -22,10 +26,13 @@ services: - MAPBOX_TOKEN="pk.eyJ1IjoiYnVzZmFrdG9yIiwiYSI6ImNraDNiM3JxcDBhaWQydG1uczhpZWtpOW4ifQ.7TNRTO-o9aK1Y6MyW_Nd4g" # - WEBSOCKETS_URI=ws://backend:4000/graphql # is not working and not given in Docker YAML in main repo - PUBLIC_REGISTRATION=true + ######################################################## # BACKEND ############################################## ######################################################## backend: + # name the image so that it cannot be found in a DockerHub repository, otherwise it will not be built locally from the 'dockerfile' but pulled from there + image: ocelotsocialnetwork/backend-branded:local-production build: dockerfile: docker/backend.Dockerfile target: branded @@ -53,11 +60,29 @@ services: - SMTP_HOST=mailserver - SMTP_PORT=25 - SMTP_IGNORE_TLS=true + + ######################################################## + # MAINTENANCE ########################################## + ######################################################## + maintenance: + # name the image so that it cannot be found in a DockerHub repository, otherwise it will not be built locally from the 'dockerfile' but pulled from there + image: ocelotsocialnetwork/maintenance-branded:local-production + build: + # TODO: Separate from webapp, this must be independent + dockerfile: docker/maintenance.Dockerfile + target: branded + context: . + networks: + - test-network + ports: + - 3001:80 + ######################################################## # NEO4J ################################################ ######################################################## neo4j: - image: ocelotsocialnetwork/neo4j:community + # name the image so that it cannot be found in a DockerHub repository, otherwise it will not be built locally from the 'dockerfile' but pulled from there + image: ocelotsocialnetwork/neo4j-community-branded:local-production networks: - test-network volumes: @@ -68,19 +93,7 @@ services: - NEO4J_ACCEPT_LICENSE_AGREEMENT=yes ports: - 7687:7687 - ######################################################## - # MAINTENANCE ########################################## - ######################################################## - maintenance: - build: - # TODO: Separate from webapp, this must be independent - dockerfile: docker/maintenance.Dockerfile - target: branded - context: . - networks: - - test-network - ports: - - 5000:80 + ######################################################## # MAILSERVER TO FAKE SMTP ############################## ######################################################## diff --git a/docker/neo4j.Dockerfile b/docker/neo4j.Dockerfile index 980c45e41..eddc7be38 100644 --- a/docker/neo4j.Dockerfile +++ b/docker/neo4j.Dockerfile @@ -1,4 +1,4 @@ -ARG APP_IMAGE=ocelotsocialnetwork/neo4j +ARG APP_IMAGE=ocelotsocialnetwork/neo4j-community ARG APP_IMAGE_TAG=latest ARG APP_IMAGE_COMMUNITY=${APP_IMAGE}:${APP_IMAGE_TAG} @@ -10,4 +10,5 @@ FROM $APP_IMAGE_COMMUNITY as community-branded ################################################################################## # ENTERPRISE ##################################################################### ################################################################################## +# Todo: refactor this with 'APP_IMAGE', 'APP_IMAGE_TAG', and similar to 'APP_IMAGE_COMMUNITY', Neo4j 'dockerfile' from main code FROM ocelotsocialnetwork/neo4j-enterprise:latest as enterprise-branded From d66e8f0f1752b55879a452ee0091ba77087c0db5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Mon, 18 Jul 2022 10:55:10 +0200 Subject: [PATCH 07/81] Adjust maintenance container name in deployment with Helm --- deployment/kubernetes/templates/maintenance/Deployment.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deployment/kubernetes/templates/maintenance/Deployment.yaml b/deployment/kubernetes/templates/maintenance/Deployment.yaml index 5a2eb394e..fd1aa311a 100644 --- a/deployment/kubernetes/templates/maintenance/Deployment.yaml +++ b/deployment/kubernetes/templates/maintenance/Deployment.yaml @@ -26,7 +26,7 @@ spec: rollme: {{ randAlphaNum 5 | quote }} spec: containers: - - name: maintenance + - name: container-{{ .Release.Name }}-maintenance image: "{{ .Values.MAINTENANCE.DOCKER_IMAGE_REPO }}:{{ .Chart.AppVersion }}" imagePullPolicy: {{ .Values.MAINTENANCE.DOCKER_IMAGE_PULL_POLICY }} envFrom: From 86a613cbe025f94fb6a02185c8da246716fd44db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Mon, 18 Jul 2022 13:39:40 +0200 Subject: [PATCH 08/81] Release new build version v1.0.8-184 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 9963e6949..57fcb263c 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ocelot-social-branded", "version": "1.0.8", - "ocelotDockerVersionTag": "1.0.8-182", + "ocelotDockerVersionTag": "1.0.8-184", "dockerOrganisation": "ocelotsocialnetwork", "description": "ocelot.social Branded", "author": "ocelot.social Community", From a9d43d88e5c24d10cd3737eb4b7ee7781703fcf3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Mon, 18 Jul 2022 18:38:30 +0200 Subject: [PATCH 09/81] Fix 'apiVersion: cert-manager.io/v1alpha2' to '*/v1' --- .../kubernetes/templates/issuer/letsencrypt-production.yaml | 2 +- deployment/kubernetes/templates/issuer/letsencrypt-staging.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/deployment/kubernetes/templates/issuer/letsencrypt-production.yaml b/deployment/kubernetes/templates/issuer/letsencrypt-production.yaml index 2836cceff..6f82f3686 100644 --- a/deployment/kubernetes/templates/issuer/letsencrypt-production.yaml +++ b/deployment/kubernetes/templates/issuer/letsencrypt-production.yaml @@ -1,4 +1,4 @@ -apiVersion: cert-manager.io/v1alpha2 +apiVersion: cert-manager.io/v1 kind: ClusterIssuer metadata: name: letsencrypt-production diff --git a/deployment/kubernetes/templates/issuer/letsencrypt-staging.yaml b/deployment/kubernetes/templates/issuer/letsencrypt-staging.yaml index 7190e6553..e488d9335 100644 --- a/deployment/kubernetes/templates/issuer/letsencrypt-staging.yaml +++ b/deployment/kubernetes/templates/issuer/letsencrypt-staging.yaml @@ -1,4 +1,4 @@ -apiVersion: cert-manager.io/v1alpha2 +apiVersion: cert-manager.io/v1 kind: ClusterIssuer metadata: name: letsencrypt-staging From f09a32d0d19f984a186cf343c54560b3d6e07e8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Wed, 20 Jul 2022 08:28:13 +0200 Subject: [PATCH 10/81] Implement 'PRODUCTION_DB_CLEAN_ALLOW' for production environments on staging servers --- deployment/kubernetes/templates/backend/ConfigMap.yml | 1 + deployment/kubernetes/values.template.yaml | 1 + docker-compose.ocelotsocial-branded.yml | 1 + 3 files changed, 3 insertions(+) diff --git a/deployment/kubernetes/templates/backend/ConfigMap.yml b/deployment/kubernetes/templates/backend/ConfigMap.yml index 4ea065c01..a4c8405f0 100644 --- a/deployment/kubernetes/templates/backend/ConfigMap.yml +++ b/deployment/kubernetes/templates/backend/ConfigMap.yml @@ -11,6 +11,7 @@ metadata: app.kubernetes.io/managed-by: "{{ .Release.Service }}" helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}" data: + PRODUCTION_DB_CLEAN_ALLOW: "{{ .Values.PRODUCTION_DB_CLEAN_ALLOW }}" PUBLIC_REGISTRATION: "{{ .Values.PUBLIC_REGISTRATION }}" INVITE_REGISTRATION: "{{ .Values.INVITE_REGISTRATION }}" CLIENT_URI: "{{ .Values.BACKEND.CLIENT_URI }}" diff --git a/deployment/kubernetes/values.template.yaml b/deployment/kubernetes/values.template.yaml index 921ce3cde..9b5b751dc 100644 --- a/deployment/kubernetes/values.template.yaml +++ b/deployment/kubernetes/values.template.yaml @@ -1,6 +1,7 @@ # please duplicate template file and rename to "values.yaml" and fill in your value # change all the below if needed +PRODUCTION_DB_CLEAN_ALLOW: false # only true for production environments on staging servers PUBLIC_REGISTRATION: false INVITE_REGISTRATION: false COOKIE_EXPIRE_TIME: 730 # days (730 days, two years is the default in main code) diff --git a/docker-compose.ocelotsocial-branded.yml b/docker-compose.ocelotsocial-branded.yml index 7591b4a3a..9d678ecff 100644 --- a/docker-compose.ocelotsocial-branded.yml +++ b/docker-compose.ocelotsocial-branded.yml @@ -45,6 +45,7 @@ services: - PRIVATE_KEY_PASSPHRASE=a7dsf78sadg87ad87sfagsadg78 - EMAIL_SUPPORT=support@wir.social - EMAIL_DEFAULT_SENDER=info@wir.social + - PRODUCTION_DB_CLEAN_ALLOW=true # because this is stage.ocelot.social # false # only true for production environments on staging servers - PUBLIC_REGISTRATION=true - SMTP_USERNAME=${SMTP_USERNAME} - SMTP_PASSWORD=${SMTP_PASSWORD} From 0317d44adee9db47eb59aca3e49c124003dca107 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Wed, 20 Jul 2022 09:37:16 +0200 Subject: [PATCH 11/81] Set push branch temporary to this branch as well --- .github/workflows/publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 0fde053ed..c89ab3f5b 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -4,7 +4,7 @@ on: push: branches: - master - # - 14-new-deployment-with-base-and-code # for testing while developing + - 5065-automatic-deployment-to-stage.ocelot.social-on-push-to-master-branch # for testing while developing jobs: ############################################################################## From efc78594de545471b9498b1203681aa0b95d1a41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Wed, 20 Jul 2022 09:38:50 +0200 Subject: [PATCH 12/81] Add Documentation for 'Kubernetes Commands (Without Helm) To Deploy New Docker Images To A Kubernetes Cluster' --- deployment/kubernetes/README.md | 47 +++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/deployment/kubernetes/README.md b/deployment/kubernetes/README.md index c519cb06d..e14ab4015 100644 --- a/deployment/kubernetes/README.md +++ b/deployment/kubernetes/README.md @@ -225,3 +225,50 @@ support, try this [helm chart](https://github.com/helm/charts/tree/master/stable On our kubernetes cluster we get "mult-attach" errors for persistent volumes. Apparently DigitalOcean's kubernetes clusters do not fulfill the requirements. + +## Kubernetes Commands (Without Helm) To Deploy New Docker Images To A Kubernetes Cluster + +### Deploy A Version + +```bash +# !!! be aware of the correct kube context !!! +$ kubectl config get-contexts + +# deploy version '$BUILD_VERSION' +# !!! 'latest' is not recommended on production !!! + +# for easyness set env +$ export BUILD_VERSION=1.0.8-48-ocelot.social1.0.8-184 # example +# check this with +$ echo $BUILD_VERSION +1.0.8-48-ocelot.social1.0.8-184 + +# deploy actual version '$BUILD_VERSION' to Kubernetes cluster +$ kubectl -n default set image deployment/ocelot-webapp container-ocelot-webapp=ocelotsocialnetwork/webapp:$BUILD_VERSION +$ kubectl -n default rollout restart deployment/ocelot-webapp +$ kubectl -n default set image deployment/ocelot-backend container-ocelot-backend=ocelotsocialnetwork/backend:$BUILD_VERSION +$ kubectl -n default rollout restart deployment/ocelot-backend +$ kubectl -n default set image deployment/ocelot-maintenance container-ocelot-maintenance=ocelotsocialnetwork/maintenance:$BUILD_VERSION +$ kubectl -n default rollout restart deployment/ocelot-maintenance +$ kubectl -n default set image deployment/ocelot-neo4j container-ocelot-neo4j=ocelotsocialnetwork/neo4j-community:$BUILD_VERSION +$ kubectl -n default rollout restart deployment/ocelot-neo4j +# verify deployment and wait for the pods of each deployment to get ready for cleaning and seeding of the database +$ kubectl -n default rollout status deployment/ocelot-webapp --timeout=240s +$ kubectl -n default rollout status deployment/ocelot-maintenance --timeout=240s +$ kubectl -n default rollout status deployment/ocelot-backend --timeout=240s +$ kubectl -n default rollout status deployment/ocelot-neo4j --timeout=240s +``` + +### Staging – Clean And Seed Neo4j Database + +***ATTENTION:*** Cleaning and seeding of our Neo4j database is only possible in production if env `PRODUCTION_DB_CLEAN_ALLOW=true` is set in our deployment. + +```bash +# !!! be aware of the correct kube context !!! +$ kubectl config get-contexts + +# reset and seed Neo4j database via backend for staging +$ kubectl -n default exec -it $(kubectl -n default get pods | grep ocelot-backend | awk '{ print $1 }') -- /bin/sh -c "node dist/db/clean.js" +$ kubectl -n default exec -it $(kubectl -n default get pods | grep ocelot-backend | awk '{ print $1 }') -- /bin/sh -c "node dist/db/seed.js" + +``` From eafc73dc0f449827598a538dc85518acdf5e7226 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Wed, 20 Jul 2022 09:51:30 +0200 Subject: [PATCH 13/81] Comment out 'PRODUCTION_DB_CLEAN_ALLOW' in 'docker-compose.ocelotsocial-branded.yml' --- docker-compose.ocelotsocial-branded.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.ocelotsocial-branded.yml b/docker-compose.ocelotsocial-branded.yml index 9d678ecff..b8c3ce43d 100644 --- a/docker-compose.ocelotsocial-branded.yml +++ b/docker-compose.ocelotsocial-branded.yml @@ -45,7 +45,7 @@ services: - PRIVATE_KEY_PASSPHRASE=a7dsf78sadg87ad87sfagsadg78 - EMAIL_SUPPORT=support@wir.social - EMAIL_DEFAULT_SENDER=info@wir.social - - PRODUCTION_DB_CLEAN_ALLOW=true # because this is stage.ocelot.social # false # only true for production environments on staging servers + # - PRODUCTION_DB_CLEAN_ALLOW=false # only true for production environments on staging servers - PUBLIC_REGISTRATION=true - SMTP_USERNAME=${SMTP_USERNAME} - SMTP_PASSWORD=${SMTP_PASSWORD} From ac19f5959c6ad7c3a322e4ebf27c02aa7b57de0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Wed, 20 Jul 2022 09:52:56 +0200 Subject: [PATCH 14/81] Comment out 'PRODUCTION_DB_CLEAN_ALLOW' in 'docker-compose.yml' --- docker-compose.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/docker-compose.yml b/docker-compose.yml index 5610511ce..285a0d374 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -54,6 +54,7 @@ services: - PRIVATE_KEY_PASSPHRASE=a7dsf78sadg87ad87sfagsadg78 - EMAIL_SUPPORT=support@wir.social - EMAIL_DEFAULT_SENDER=info@wir.social + # - PRODUCTION_DB_CLEAN_ALLOW=false # only true for production environments on staging servers - PUBLIC_REGISTRATION=true - SMTP_USERNAME=${SMTP_USERNAME} - SMTP_PASSWORD=${SMTP_PASSWORD} From 126c92480b8b55e742799838bac83a7a5013d2b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Wed, 20 Jul 2022 10:00:55 +0200 Subject: [PATCH 15/81] Fix changing of push branch temporary to this branch as well --- .github/workflows/publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index c89ab3f5b..ce08ee14b 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -4,7 +4,7 @@ on: push: branches: - master - - 5065-automatic-deployment-to-stage.ocelot.social-on-push-to-master-branch # for testing while developing + - 55-implement-PRODUCTION_DB_CLEAN_ALLOW-for-staging-production-evironments # for testing while developing jobs: ############################################################################## From a44f00310490aa20c128e15ea7c9185e43898e96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Wed, 20 Jul 2022 10:11:35 +0200 Subject: [PATCH 16/81] Add Docker Compose override for Apple M1 --- docker-compose.apple-m1.override.yml | 36 ++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 docker-compose.apple-m1.override.yml diff --git a/docker-compose.apple-m1.override.yml b/docker-compose.apple-m1.override.yml new file mode 100644 index 000000000..80344e49f --- /dev/null +++ b/docker-compose.apple-m1.override.yml @@ -0,0 +1,36 @@ +# This docker-compose file is just here for testing + +version: "3.4" + +services: + + ######################################################## + # WEBAPP ############################################### + ######################################################## + webapp: + platform: linux/amd64 + + ######################################################## + # BACKEND ############################################## + ######################################################## + backend: + platform: linux/amd64 + + ######################################################## + # MAINTENANCE ########################################## + ######################################################## + maintenance: + platform: linux/amd64 + + ######################################################## + # NEO4J ################################################ + ######################################################## + neo4j: + platform: linux/amd64 + + ######################################################## + # MAILSERVER TO FAKE SMTP ############################## + ######################################################## + # commented out, because otherwise override of production would error. and it seems unnecessary + # mailserver: + # platform: linux/amd64 From b36eb508a64363ef7b3a60ad2bd040765cabd7ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Wed, 20 Jul 2022 10:45:38 +0200 Subject: [PATCH 17/81] Document Docker Compose override for Apple M1 --- docker/DOCKER_MORE_CLOSELY.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 docker/DOCKER_MORE_CLOSELY.md diff --git a/docker/DOCKER_MORE_CLOSELY.md b/docker/DOCKER_MORE_CLOSELY.md new file mode 100644 index 000000000..113e3a4da --- /dev/null +++ b/docker/DOCKER_MORE_CLOSELY.md @@ -0,0 +1,33 @@ +# Docker + +## Apple M1 Platform + +***Attention:** For using Docker commands in Apple M1 environments!* + +```bash +# set env variable for your shell +$ export DOCKER_DEFAULT_PLATFORM=linux/amd64 +``` + +For even more informations, see [Docker More Closely](#docker-more-closely) + +### Docker Compose Override File For Apple M1 Platform + +For Docker compose `up` or `build` commands, you can use our Apple M1 override file that specifies the M1 platform: + +```bash +# in main folder + +# for production +$ docker compose -f docker-compose.yml -f docker-compose.apple-m1.override.yml up + +# for production testing Docker images from DockerHub +$ docker compose -f docker-compose.ocelotsocial-branded.yml -f docker-compose.apple-m1.override.yml up + +# only once: init admin user and create indexes and contraints in Neo4j database +$ docker compose exec backend /bin/sh -c "yarn prod:migrate init" +``` + +## Docker More Closely In Main Code + +To get more informations about the Apple M1 platform and to analyze the Docker builds etc. you find our documentation in our main code, [here](https://github.com/Ocelot-Social-Community/Ocelot-Social/blob/master/DOCKER_MORE_CLOSELY.md). From 0adbe7696b8540814367f614ad230995150a7377 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Wed, 20 Jul 2022 14:50:07 +0200 Subject: [PATCH 18/81] Change back to only publish on master branch push --- .github/workflows/publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index ce08ee14b..2743a25df 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -4,7 +4,7 @@ on: push: branches: - master - - 55-implement-PRODUCTION_DB_CLEAN_ALLOW-for-staging-production-evironments # for testing while developing + # - 55-implement-PRODUCTION_DB_CLEAN_ALLOW-for-staging-production-evironments # for testing while developing jobs: ############################################################################## From 92007dfb7452a1b072dd8f927ae2ada9d4407dba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Wed, 20 Jul 2022 14:53:10 +0200 Subject: [PATCH 19/81] Change document by accumulate Neo4j db 'clean.js' and 'seed.js' and make the node calls await with flag '--experimental-repl-await' in 'publish.yml' --- deployment/kubernetes/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deployment/kubernetes/README.md b/deployment/kubernetes/README.md index e14ab4015..1a9a762b9 100644 --- a/deployment/kubernetes/README.md +++ b/deployment/kubernetes/README.md @@ -268,7 +268,7 @@ $ kubectl -n default rollout status deployment/ocelot-neo4j --timeout=240s $ kubectl config get-contexts # reset and seed Neo4j database via backend for staging -$ kubectl -n default exec -it $(kubectl -n default get pods | grep ocelot-backend | awk '{ print $1 }') -- /bin/sh -c "node dist/db/clean.js" -$ kubectl -n default exec -it $(kubectl -n default get pods | grep ocelot-backend | awk '{ print $1 }') -- /bin/sh -c "node dist/db/seed.js" +$ kubectl -n default exec -it $(kubectl -n default get pods | grep ocelot-backend | awk '{ print $1 }') -- /bin/sh -c "node --experimental-repl-await dist/db/clean.js && node --experimental-repl-await dist/db/seed.js" + ``` From eb8d3903a289177127075dcb56b75202639fa2aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Wed, 20 Jul 2022 16:17:24 +0200 Subject: [PATCH 20/81] Release v1.0.9-199 --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 57fcb263c..da08624e6 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ocelot-social-branded", - "version": "1.0.8", - "ocelotDockerVersionTag": "1.0.8-184", + "version": "1.0.9", + "ocelotDockerVersionTag": "1.0.9-199", "dockerOrganisation": "ocelotsocialnetwork", "description": "ocelot.social Branded", "author": "ocelot.social Community", From 7afb2d688e390c61a985ad3b87b8f4d5da14158f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Mon, 25 Jul 2022 18:07:53 +0200 Subject: [PATCH 21/81] Update issue templates --- .github/ISSUE_TEMPLATE/---bug-report.md | 11 +++++++++++ .github/ISSUE_TEMPLATE/---devops-ticket.md | 11 +++++++++++ .github/ISSUE_TEMPLATE/---epic.md | 15 +++++++++++++++ .github/ISSUE_TEMPLATE/---feature-request.md | 11 +++++++++++ .github/ISSUE_TEMPLATE/---question.md | 15 +++++++++++++++ .github/ISSUE_TEMPLATE/---refactor.md | 11 +++++++++++ .github/ISSUE_TEMPLATE/custom.md | 10 ++++++++++ 7 files changed, 84 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/---bug-report.md create mode 100644 .github/ISSUE_TEMPLATE/---devops-ticket.md create mode 100644 .github/ISSUE_TEMPLATE/---epic.md create mode 100644 .github/ISSUE_TEMPLATE/---feature-request.md create mode 100644 .github/ISSUE_TEMPLATE/---question.md create mode 100644 .github/ISSUE_TEMPLATE/---refactor.md create mode 100644 .github/ISSUE_TEMPLATE/custom.md diff --git a/.github/ISSUE_TEMPLATE/---bug-report.md b/.github/ISSUE_TEMPLATE/---bug-report.md new file mode 100644 index 000000000..602283ac7 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/---bug-report.md @@ -0,0 +1,11 @@ +--- +name: "\U0001F41B Bug Report" +about: Create a report to help us improve +title: "\U0001F41B [Bug] XXX" +labels: bug +assignees: '' + +--- + +## :bug: Bug Report + diff --git a/.github/ISSUE_TEMPLATE/---devops-ticket.md b/.github/ISSUE_TEMPLATE/---devops-ticket.md new file mode 100644 index 000000000..a382d1f19 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/---devops-ticket.md @@ -0,0 +1,11 @@ +--- +name: "\U0001F4A5 DevOps Ticket" +about: Help us manage our deployed app. +title: "\U0001F4A5 [DevOps] XXX" +labels: '' +assignees: '' + +--- + +## 💥 DevOps Ticket + diff --git a/.github/ISSUE_TEMPLATE/---epic.md b/.github/ISSUE_TEMPLATE/---epic.md new file mode 100644 index 000000000..8dcb1952c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/---epic.md @@ -0,0 +1,15 @@ +--- +name: "\U0001F31F Epic" +about: Define a big development step. +title: "\U0001F31F [EPIC] XXX" +labels: '' +assignees: '' + +--- + + + + +## 🌟 EPIC + diff --git a/.github/ISSUE_TEMPLATE/---feature-request.md b/.github/ISSUE_TEMPLATE/---feature-request.md new file mode 100644 index 000000000..f387d7703 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/---feature-request.md @@ -0,0 +1,11 @@ +--- +name: "\U0001F680 Feature Request" +about: Suggest an idea for this project. +title: "\U0001F680 [Feature] XXX" +labels: enhancement +assignees: '' + +--- + +## :rocket: Feature Request + diff --git a/.github/ISSUE_TEMPLATE/---question.md b/.github/ISSUE_TEMPLATE/---question.md new file mode 100644 index 000000000..cbbcaaa9c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/---question.md @@ -0,0 +1,15 @@ +--- +name: "\U0001F4AC Question" +about: If you need help understanding ocelot.social. +title: "\U0001F4AC [Question] XXX" +labels: '' +assignees: '' + +--- + + + + +## 💬 Question + diff --git a/.github/ISSUE_TEMPLATE/---refactor.md b/.github/ISSUE_TEMPLATE/---refactor.md new file mode 100644 index 000000000..fb1ac4e61 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/---refactor.md @@ -0,0 +1,11 @@ +--- +name: "\U0001F527 Refactor" +about: Help us improve our code by refactoring it. +title: "\U0001F527 [Refactor] XXX" +labels: enhancement +assignees: '' + +--- + +## 🔧 Refactor + diff --git a/.github/ISSUE_TEMPLATE/custom.md b/.github/ISSUE_TEMPLATE/custom.md new file mode 100644 index 000000000..48d5f81fa --- /dev/null +++ b/.github/ISSUE_TEMPLATE/custom.md @@ -0,0 +1,10 @@ +--- +name: Custom issue template +about: Describe this issue template's purpose here. +title: '' +labels: '' +assignees: '' + +--- + + From 1d7f3988cb6116c2511a7a333fec392ef003d740 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Mon, 25 Jul 2022 18:08:13 +0200 Subject: [PATCH 22/81] Update issue templates --- .github/ISSUE_TEMPLATE/---bug-report.md | 11 +++++++++++ .github/ISSUE_TEMPLATE/---devops-ticket.md | 11 +++++++++++ .github/ISSUE_TEMPLATE/---epic.md | 13 +++++++++++++ .github/ISSUE_TEMPLATE/---feature-request.md | 11 +++++++++++ .github/ISSUE_TEMPLATE/---question.md | 14 ++++++++++++++ .github/ISSUE_TEMPLATE/---refactor.md | 11 +++++++++++ 6 files changed, 71 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/---bug-report.md create mode 100644 .github/ISSUE_TEMPLATE/---devops-ticket.md create mode 100644 .github/ISSUE_TEMPLATE/---epic.md create mode 100644 .github/ISSUE_TEMPLATE/---feature-request.md create mode 100644 .github/ISSUE_TEMPLATE/---question.md create mode 100644 .github/ISSUE_TEMPLATE/---refactor.md diff --git a/.github/ISSUE_TEMPLATE/---bug-report.md b/.github/ISSUE_TEMPLATE/---bug-report.md new file mode 100644 index 000000000..602283ac7 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/---bug-report.md @@ -0,0 +1,11 @@ +--- +name: "\U0001F41B Bug Report" +about: Create a report to help us improve +title: "\U0001F41B [Bug] XXX" +labels: bug +assignees: '' + +--- + +## :bug: Bug Report + diff --git a/.github/ISSUE_TEMPLATE/---devops-ticket.md b/.github/ISSUE_TEMPLATE/---devops-ticket.md new file mode 100644 index 000000000..a382d1f19 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/---devops-ticket.md @@ -0,0 +1,11 @@ +--- +name: "\U0001F4A5 DevOps Ticket" +about: Help us manage our deployed app. +title: "\U0001F4A5 [DevOps] XXX" +labels: '' +assignees: '' + +--- + +## 💥 DevOps Ticket + diff --git a/.github/ISSUE_TEMPLATE/---epic.md b/.github/ISSUE_TEMPLATE/---epic.md new file mode 100644 index 000000000..5099f6a28 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/---epic.md @@ -0,0 +1,13 @@ +--- +name: "\U0001F31F Epic" +about: Define a big development step. +title: "\U0001F31F [EPIC] XXX" +labels: '' +assignees: '' + +--- + + + +## 🌟 EPIC + diff --git a/.github/ISSUE_TEMPLATE/---feature-request.md b/.github/ISSUE_TEMPLATE/---feature-request.md new file mode 100644 index 000000000..f387d7703 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/---feature-request.md @@ -0,0 +1,11 @@ +--- +name: "\U0001F680 Feature Request" +about: Suggest an idea for this project. +title: "\U0001F680 [Feature] XXX" +labels: enhancement +assignees: '' + +--- + +## :rocket: Feature Request + diff --git a/.github/ISSUE_TEMPLATE/---question.md b/.github/ISSUE_TEMPLATE/---question.md new file mode 100644 index 000000000..0ac81f92f --- /dev/null +++ b/.github/ISSUE_TEMPLATE/---question.md @@ -0,0 +1,14 @@ +--- +name: "\U0001F4AC Question" +about: If you need help understanding ocelot.social. +title: "\U0001F4AC [Question] XXX" +labels: '' +assignees: '' + +--- + + + + +## 💬 Question + diff --git a/.github/ISSUE_TEMPLATE/---refactor.md b/.github/ISSUE_TEMPLATE/---refactor.md new file mode 100644 index 000000000..fb1ac4e61 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/---refactor.md @@ -0,0 +1,11 @@ +--- +name: "\U0001F527 Refactor" +about: Help us improve our code by refactoring it. +title: "\U0001F527 [Refactor] XXX" +labels: enhancement +assignees: '' + +--- + +## 🔧 Refactor + From 323b73680a0efe0f7abdde6bc3513a7bc8466fd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Wed, 3 Aug 2022 15:50:21 +0200 Subject: [PATCH 23/81] Add 'CATEGORIES_ACTIVE' config --- TODO-next-update.md | 7 +++++++ deployment/kubernetes/templates/backend/ConfigMap.yml | 1 + deployment/kubernetes/templates/webapp/ConfigMap.yml | 1 + deployment/kubernetes/values.template.yaml | 1 + 4 files changed, 10 insertions(+) diff --git a/TODO-next-update.md b/TODO-next-update.md index b27f5f1e0..59bbf8363 100644 --- a/TODO-next-update.md +++ b/TODO-next-update.md @@ -2,6 +2,13 @@ When you overtake this deploy and rebrand repo to your network you have to recognize the following changes and doings … +## This Latest Version > 1.0.9 with 'ocelotDockerVersionTag' 1.0.9-199 + +### PR – chore: 🍰 Release v1.1.0 - Implement Categories Again #63 + +- You have to add the `CATEGORIES_ACTIVE` from the `deployment/kubernetes/values.template.yaml` to your `deployment/kubernetes/values.yaml` and set it to your prevered value. +- Make sure the correct categories are in your Neo4j database on the server. + ## This Latest Version > 1.0.7 with 'ocelotDockerVersionTag' 1.0.7-171 ### PR – feat: 🍰 Configure Cookie Expire Time #43 diff --git a/deployment/kubernetes/templates/backend/ConfigMap.yml b/deployment/kubernetes/templates/backend/ConfigMap.yml index a4c8405f0..1222b0da0 100644 --- a/deployment/kubernetes/templates/backend/ConfigMap.yml +++ b/deployment/kubernetes/templates/backend/ConfigMap.yml @@ -14,6 +14,7 @@ data: PRODUCTION_DB_CLEAN_ALLOW: "{{ .Values.PRODUCTION_DB_CLEAN_ALLOW }}" PUBLIC_REGISTRATION: "{{ .Values.PUBLIC_REGISTRATION }}" INVITE_REGISTRATION: "{{ .Values.INVITE_REGISTRATION }}" + CATEGORIES_ACTIVE: "{{ .Values.CATEGORIES_ACTIVE }}" CLIENT_URI: "{{ .Values.BACKEND.CLIENT_URI }}" EMAIL_DEFAULT_SENDER: "{{ .Values.BACKEND.EMAIL_DEFAULT_SENDER }}" SMTP_HOST: "{{ .Values.BACKEND.SMTP_HOST }}" diff --git a/deployment/kubernetes/templates/webapp/ConfigMap.yml b/deployment/kubernetes/templates/webapp/ConfigMap.yml index 685f67675..762b355cc 100644 --- a/deployment/kubernetes/templates/webapp/ConfigMap.yml +++ b/deployment/kubernetes/templates/webapp/ConfigMap.yml @@ -14,6 +14,7 @@ data: HOST: "0.0.0.0" PUBLIC_REGISTRATION: "{{ .Values.PUBLIC_REGISTRATION }}" INVITE_REGISTRATION: "{{ .Values.INVITE_REGISTRATION }}" + CATEGORIES_ACTIVE: "{{ .Values.CATEGORIES_ACTIVE }}" COOKIE_EXPIRE_TIME: "{{ .Values.COOKIE_EXPIRE_TIME }}" WEBSOCKETS_URI: "{{ .Values.WEBAPP.WEBSOCKETS_URI }}" GRAPHQL_URI: "http://{{ .Release.Name }}-backend:4000" \ No newline at end of file diff --git a/deployment/kubernetes/values.template.yaml b/deployment/kubernetes/values.template.yaml index 9b5b751dc..e601f1ae6 100644 --- a/deployment/kubernetes/values.template.yaml +++ b/deployment/kubernetes/values.template.yaml @@ -5,6 +5,7 @@ PRODUCTION_DB_CLEAN_ALLOW: false # only true for production environments on stag PUBLIC_REGISTRATION: false INVITE_REGISTRATION: false COOKIE_EXPIRE_TIME: 730 # days (730 days, two years is the default in main code) +CATEGORIES_ACTIVE: false BACKEND: # change all the below if needed From b094bdb27822112a80796978af74c07b6fa9f5a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Thu, 4 Aug 2022 06:18:18 +0200 Subject: [PATCH 24/81] Refine 'TODO-next-update.md' --- TODO-next-update.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TODO-next-update.md b/TODO-next-update.md index 59bbf8363..f05dfcbf2 100644 --- a/TODO-next-update.md +++ b/TODO-next-update.md @@ -2,7 +2,7 @@ When you overtake this deploy and rebrand repo to your network you have to recognize the following changes and doings … -## This Latest Version > 1.0.9 with 'ocelotDockerVersionTag' 1.0.9-199 +## This Latest Version >= 1.1.0 with 'ocelotDockerVersionTag' 1.1.0-205 ### PR – chore: 🍰 Release v1.1.0 - Implement Categories Again #63 From bfa39422385fcfa32842918020268128d69c60db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Thu, 4 Aug 2022 06:19:03 +0200 Subject: [PATCH 25/81] Release v1.1.0-205 --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index da08624e6..1bbd611c5 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ocelot-social-branded", - "version": "1.0.9", - "ocelotDockerVersionTag": "1.0.9-199", + "version": "1.1.0", + "ocelotDockerVersionTag": "1.1.0-205", "dockerOrganisation": "ocelotsocialnetwork", "description": "ocelot.social Branded", "author": "ocelot.social Community", From 0285c4c622891463fe2fe944bbc2b9d7e10035ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Tue, 13 Sep 2022 15:01:51 +0200 Subject: [PATCH 26/81] Add documentation for `PRODUCTION_DB_CLEAN_ALLOW` --- TODO-next-update.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/TODO-next-update.md b/TODO-next-update.md index 458536484..c324ad95f 100644 --- a/TODO-next-update.md +++ b/TODO-next-update.md @@ -2,10 +2,12 @@ When you overtake this deploy and rebrand repo to your network you have to recognize the following changes and doings … -## Version > 1.0.8 with 'ocelotDockerVersionTag' 1.0.8-182 +## Version 1.0.9 with 'ocelotDockerVersionTag' 1.0.9-199 ### Deployment/Rebranding PR – chore: [WIP] 🍰 Refine docs, first step #46 +- PR: `chore: 🍰 Implement PRODUCTION_DB_CLEAN_ALLOW for Staging Production Environments #56` + - Copy `PRODUCTION_DB_CLEAN_ALLOW` from `values.template.yaml` to `values.yaml` and set it to `false` for production envireonments and only for several stage test servers to `true`. - Commit: `Update cert-manager apiVersion "cert-manager.io/v1alpha2" to "cert-manager.io/v1" - Check for `kubectl` and `helm` versions. From c68499c2a8adde36bd9d9d2cf4221e7332a74bdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Tue, 13 Sep 2022 15:39:44 +0200 Subject: [PATCH 27/81] Remove live networks --- README.md | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/README.md b/README.md index a57f1840a..9b70d3a8c 100644 --- a/README.md +++ b/README.md @@ -31,8 +31,6 @@ Logins: | `moderator@example.org` | 1234 | moderator | | `admin@example.org` | 1234 | admin | -Deployed networks can be found [here](#list-of-deployed-networks). - ## Usage Fork this repository to configure and rebrand it for your own [ocelot.social](https://github.com/Ocelot-Social-Community/Ocelot-Social) network. @@ -130,20 +128,6 @@ Browser compatibility testing with [BrowserStack](https://www.browserstack.com/) BrowserStack Logo --> -## List Of Deployed Networks - -You may need an invitation to access a network. - -### More Likely To Try - -- [wir.social](https://wir.social) - -### Others - -- [freilernen.social](https://freilernen.social) -- [helfa.social](https://helfa.social) -- [sender.fm](https://sender.fm) - ## License See the [LICENSE](/LICENSE.md) file for license rights and limitations (MIT). From ba4ad7550851e9bbfc2eb586a1c668e262b1865e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Tue, 13 Sep 2022 16:25:31 +0200 Subject: [PATCH 28/81] Refine main readme for cert-manager and kubectl version --- deployment/kubernetes/README.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/deployment/kubernetes/README.md b/deployment/kubernetes/README.md index 868676dc1..0f7ecd20f 100644 --- a/deployment/kubernetes/README.md +++ b/deployment/kubernetes/README.md @@ -46,6 +46,10 @@ Please have a look here: - [Installing with Helm](https://cert-manager.io/docs/installation/helm/#installing-with-helm) +Our Helm installation is optimized for cert-manager version `v1.9.1` and `kubectl` version `"v1.24.2`. + +Please search here for cert-manager versions that are compatible with your `kubectl` version on the cluster and on the client: [cert-manager Supported Releases](https://cert-manager.io/docs/installation/supported-releases/#supported-releases). + ***ATTENTION:*** *When uninstalling cert-manager, be sure to use the same method as for installation! Otherwise, we could end up in a broken state, see [Uninstall](https://cert-manager.io/docs/installation/kubectl/#uninstalling).* ### Ingress-Nginx -#### 1. Add Helm repository and update +#### 1. Add Helm repository for `ingress-nginx` and update ```bash $ helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx @@ -160,7 +164,7 @@ $ doctl compute firewall get --context This chart is only necessary (recommended is more precise) if you run DigitalOcean without load balancer. You need to generate an access token with read + write for the `dns.values.yaml` at and fill it in. -#### 1. Add Helm repository and update +#### 1. Add Helm repository for `binami` and update ```bash $ helm repo add bitnami https://charts.bitnami.com/bitnami From 8d6a80cc3a24c35c97a0e747267a432a1b8e9e38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Tue, 13 Sep 2022 16:48:59 +0200 Subject: [PATCH 29/81] Release v1.1.0-225 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1bbd611c5..021f7ca5a 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ocelot-social-branded", "version": "1.1.0", - "ocelotDockerVersionTag": "1.1.0-205", + "ocelotDockerVersionTag": "1.1.0-225", "dockerOrganisation": "ocelotsocialnetwork", "description": "ocelot.social Branded", "author": "ocelot.social Community", From 239faa1acf698c70ec4a4917f5e1fc3bd42e0d00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Tue, 13 Sep 2022 16:53:41 +0200 Subject: [PATCH 30/81] Refine installation partly before pull main deploy repo --- .../kubernetes/templates/issuer/letsencrypt-production.yaml | 2 +- deployment/kubernetes/templates/issuer/letsencrypt-staging.yaml | 2 +- package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/deployment/kubernetes/templates/issuer/letsencrypt-production.yaml b/deployment/kubernetes/templates/issuer/letsencrypt-production.yaml index 2836cceff..6f82f3686 100644 --- a/deployment/kubernetes/templates/issuer/letsencrypt-production.yaml +++ b/deployment/kubernetes/templates/issuer/letsencrypt-production.yaml @@ -1,4 +1,4 @@ -apiVersion: cert-manager.io/v1alpha2 +apiVersion: cert-manager.io/v1 kind: ClusterIssuer metadata: name: letsencrypt-production diff --git a/deployment/kubernetes/templates/issuer/letsencrypt-staging.yaml b/deployment/kubernetes/templates/issuer/letsencrypt-staging.yaml index 7190e6553..e488d9335 100644 --- a/deployment/kubernetes/templates/issuer/letsencrypt-staging.yaml +++ b/deployment/kubernetes/templates/issuer/letsencrypt-staging.yaml @@ -1,4 +1,4 @@ -apiVersion: cert-manager.io/v1alpha2 +apiVersion: cert-manager.io/v1 kind: ClusterIssuer metadata: name: letsencrypt-staging diff --git a/package.json b/package.json index d98284468..c87a9371d 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "yunite.net", "version": "1.0.8", "ocelotDockerVersionTag": "1.0.8-182", - "dockerOrganisation": "XXX", + "dockerOrganisation": "tirokk", "description": "yunite.net Branded", "author": "yunite.net Community", "license": "MIT", From 5d5ac673fd9b5f80d4bb68635eee5dee491d7ea1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Tue, 20 Sep 2022 08:41:25 +0200 Subject: [PATCH 31/81] Ignore value.yaml files of the different deploys --- deployment/kubernetes/.gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/deployment/kubernetes/.gitignore b/deployment/kubernetes/.gitignore index e0473b0fd..092cda60e 100644 --- a/deployment/kubernetes/.gitignore +++ b/deployment/kubernetes/.gitignore @@ -1,3 +1,4 @@ /dns.values.yaml /nginx.values.yaml /values.yaml +/values*-ME.yaml \ No newline at end of file From 870fe89a80ca031782629a60aff3ccfbe134797c Mon Sep 17 00:00:00 2001 From: ogerly Date: Thu, 22 Sep 2022 19:49:24 +0200 Subject: [PATCH 32/81] refactor rebranding --- branding/assets/styles/import/_branding.scss | 5 +++++ branding/constants/headerMenu.js | 12 ++++++++++++ branding/constants/logos.js | 1 + docker-compose.ocelotsocial-branded.yml | 4 ++++ docker-compose.yml | 4 ++++ docker/webapp.Dockerfile | 2 ++ 6 files changed, 28 insertions(+) create mode 100644 branding/assets/styles/import/_branding.scss create mode 100644 branding/constants/headerMenu.js diff --git a/branding/assets/styles/import/_branding.scss b/branding/assets/styles/import/_branding.scss new file mode 100644 index 000000000..75058595d --- /dev/null +++ b/branding/assets/styles/import/_branding.scss @@ -0,0 +1,5 @@ +/* + * + * Here, all SCSS variables and classes can be adapted to your custom design. + * +*/ \ No newline at end of file diff --git a/branding/constants/headerMenu.js b/branding/constants/headerMenu.js new file mode 100644 index 000000000..33cba8d5c --- /dev/null +++ b/branding/constants/headerMenu.js @@ -0,0 +1,12 @@ +export default { + MENU: [ + // { + // name: 'Beiträge', + // path: '/#', + // }, + // { + // name: 'Über Yunite', + // url: 'https://yunite.org', + // }, + ], +} diff --git a/branding/constants/logos.js b/branding/constants/logos.js index d093c7b46..2bea199da 100644 --- a/branding/constants/logos.js +++ b/branding/constants/logos.js @@ -2,6 +2,7 @@ // this are the paths in the webapp export default { LOGO_HEADER_PATH: '/img/custom/logo-horizontal.svg', + LOGO_HEADER_WIDTH: '130px', LOGO_SIGNUP_PATH: '/img/custom/logo-squared.svg', LOGO_WELCOME_PATH: '/img/custom/logo-squared.svg', LOGO_LOGOUT_PATH: '/img/custom/logo-squared.svg', diff --git a/docker-compose.ocelotsocial-branded.yml b/docker-compose.ocelotsocial-branded.yml index b8c3ce43d..0c42d6273 100644 --- a/docker-compose.ocelotsocial-branded.yml +++ b/docker-compose.ocelotsocial-branded.yml @@ -21,6 +21,8 @@ services: - MAPBOX_TOKEN="pk.eyJ1IjoiYnVzZmFrdG9yIiwiYSI6ImNraDNiM3JxcDBhaWQydG1uczhpZWtpOW4ifQ.7TNRTO-o9aK1Y6MyW_Nd4g" # - WEBSOCKETS_URI=ws://backend:4000/graphql # is not working and not given in Docker YAML in main repo - PUBLIC_REGISTRATION=true + - INVITE_REGISTRATION=true + - CATEGORIES_ACTIVE=true ######################################################## # BACKEND ############################################## @@ -47,6 +49,8 @@ services: - EMAIL_DEFAULT_SENDER=info@wir.social # - PRODUCTION_DB_CLEAN_ALLOW=false # only true for production environments on staging servers - PUBLIC_REGISTRATION=true + - INVITE_REGISTRATION=true + - CATEGORIES_ACTIVE=true - SMTP_USERNAME=${SMTP_USERNAME} - SMTP_PASSWORD=${SMTP_PASSWORD} - SMTP_HOST=mailserver diff --git a/docker-compose.yml b/docker-compose.yml index 285a0d374..535d485be 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -26,6 +26,8 @@ services: - MAPBOX_TOKEN="pk.eyJ1IjoiYnVzZmFrdG9yIiwiYSI6ImNraDNiM3JxcDBhaWQydG1uczhpZWtpOW4ifQ.7TNRTO-o9aK1Y6MyW_Nd4g" # - WEBSOCKETS_URI=ws://backend:4000/graphql # is not working and not given in Docker YAML in main repo - PUBLIC_REGISTRATION=true + - INVITE_REGISTRATION=true + - CATEGORIES_ACTIVE=true ######################################################## # BACKEND ############################################## @@ -56,6 +58,8 @@ services: - EMAIL_DEFAULT_SENDER=info@wir.social # - PRODUCTION_DB_CLEAN_ALLOW=false # only true for production environments on staging servers - PUBLIC_REGISTRATION=true + - INVITE_REGISTRATION=true + - CATEGORIES_ACTIVE=true - SMTP_USERNAME=${SMTP_USERNAME} - SMTP_PASSWORD=${SMTP_PASSWORD} - SMTP_HOST=mailserver diff --git a/docker/webapp.Dockerfile b/docker/webapp.Dockerfile index 1d7ee67c3..81748e08f 100644 --- a/docker/webapp.Dockerfile +++ b/docker/webapp.Dockerfile @@ -13,6 +13,7 @@ FROM $APP_IMAGE_CODE as code COPY branding/static/ static/ COPY branding/constants/ constants/ COPY branding/locales/ locales/ +COPY branding/assets/styles/imports/ assets/styles/imports/ ################################################################################## # BUILD ########################################################################## @@ -41,6 +42,7 @@ COPY --from=build ${DOCKER_WORKDIR}/config/ ./config/ COPY --from=build ${DOCKER_WORKDIR}/constants ./constants COPY --from=build ${DOCKER_WORKDIR}/static ./static COPY --from=build ${DOCKER_WORKDIR}/locales ./locales +COPY --from=build ${DOCKER_WORKDIR}/assets/styles/imports ./assets/styles/imports # Copy package.json for script definitions (lock file should not be needed) COPY --from=build ${DOCKER_WORKDIR}/package.json ./package.json From 5f967f563a37bda6d1dd8db1e80fc4b81607b5fd Mon Sep 17 00:00:00 2001 From: ogerly Date: Thu, 22 Sep 2022 20:48:40 +0200 Subject: [PATCH 33/81] update package.json to v1.1.1 -228 --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 021f7ca5a..61afb1f1b 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ocelot-social-branded", - "version": "1.1.0", - "ocelotDockerVersionTag": "1.1.0-225", + "version": "1.1.1", + "ocelotDockerVersionTag": "1.1.1-228", "dockerOrganisation": "ocelotsocialnetwork", "description": "ocelot.social Branded", "author": "ocelot.social Community", From e0b2b098cfc544c6704a023c9ee54558a31ecc66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Fri, 23 Sep 2022 07:20:14 +0200 Subject: [PATCH 34/81] Fix folder name from `branding/assets/styles/import` to `branding/assets/styles/imports` --- branding/assets/styles/{import => imports}/_branding.scss | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename branding/assets/styles/{import => imports}/_branding.scss (100%) diff --git a/branding/assets/styles/import/_branding.scss b/branding/assets/styles/imports/_branding.scss similarity index 100% rename from branding/assets/styles/import/_branding.scss rename to branding/assets/styles/imports/_branding.scss From 0f2785828456d9bb9d3953e9f53ba362d85a1f47 Mon Sep 17 00:00:00 2001 From: ogerly Date: Fri, 23 Sep 2022 08:45:41 +0200 Subject: [PATCH 35/81] resolve conflicts --- branding/assets/styles/imports/_branding.scss | 28 ++++++ branding/constants/emails.js | 8 +- branding/constants/headerMenu.js | 16 ++-- branding/constants/links.js | 38 ++++---- branding/constants/logos.js | 2 +- branding/constants/metadata.js | 10 +- branding/static/favicon.ico | Bin 5558 -> 5558 bytes branding/static/icon.png | Bin 21631 -> 7958 bytes .../static/img/custom/logo-horizontal.svg | 81 ++-------------- branding/static/img/custom/logo-squared.svg | 87 ++---------------- 10 files changed, 83 insertions(+), 187 deletions(-) create mode 100644 branding/assets/styles/imports/_branding.scss diff --git a/branding/assets/styles/imports/_branding.scss b/branding/assets/styles/imports/_branding.scss new file mode 100644 index 000000000..5f6607013 --- /dev/null +++ b/branding/assets/styles/imports/_branding.scss @@ -0,0 +1,28 @@ +/* + * + * Here, all SCSS variables and classes can be adapted to your custom design. + * +*/ + +$color-primary: #6e8b87; +$color-primary-light: #a6ff00; + +$color-header-background: $color-primary; +$color-footer-background: $color-primary-light; + +$color-locale-menu: $color-primary-light; + +.main-navigation a { + color: $color-primary-light; +} +.main-navigation a:hover { + color: $color-neutral-100; +} + +.main-navigation .locale-menu { + color: $color-primary-light; +} + +.main-navigation .base-button { + color: $color-primary-light; +} \ No newline at end of file diff --git a/branding/constants/emails.js b/branding/constants/emails.js index f5bd9a4a6..d64a9e772 100644 --- a/branding/constants/emails.js +++ b/branding/constants/emails.js @@ -1,8 +1,8 @@ // this file is duplicated in `backend/src/config/` and `webapp/constants/` and replaced on rebranding by https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/tree/master/branding/constants/ export default { - SUPPORT_EMAIL: 'hello@ocelot.social', - MODERATION_EMAIL: 'hello@ocelot.social', + SUPPORT_EMAIL: 'support@yunite.org', + MODERATION_EMAIL: 'hello@yunite.org', // ATTENTION: the following links have to be defined even for internal pages with full URLs as example like 'https://staging.ocelot.social/support', because they are used in e-mails! - ORGANIZATION_LINK: 'https://ocelot.social', - SUPPORT_LINK: 'https://ocelot.social', + ORGANIZATION_LINK: 'https://yunite.org', + SUPPORT_LINK: 'https://yunite.org', } diff --git a/branding/constants/headerMenu.js b/branding/constants/headerMenu.js index 33cba8d5c..c95e79122 100644 --- a/branding/constants/headerMenu.js +++ b/branding/constants/headerMenu.js @@ -1,12 +1,12 @@ export default { MENU: [ - // { - // name: 'Beiträge', - // path: '/#', - // }, - // { - // name: 'Über Yunite', - // url: 'https://yunite.org', - // }, + { + name: 'Beiträge', + path: '/#', + }, + { + name: 'Über Yunite', + url: 'https://yunite.org', + }, ], } diff --git a/branding/constants/links.js b/branding/constants/links.js index 9cbc605c0..4d27e9669 100644 --- a/branding/constants/links.js +++ b/branding/constants/links.js @@ -3,7 +3,7 @@ import { defaultPageParamsPages } from '~/components/utils/InternalPages.js' const ORGANIZATION = defaultPageParamsPages.ORGANIZATION.overwrite({ - externalLink: 'https://ocelot.social', // if string is defined and not empty it's dominating + externalLink: 'https://yunite.org', // if string is defined and not empty it's dominating internalPage: { // footerIdent: 'site.made', // localized string identifier, if undefined default is used @@ -12,12 +12,12 @@ const ORGANIZATION = defaultPageParamsPages.ORGANIZATION.overwrite({ hasContainer: true, hasBaseCard: true, hasLoginInHeader: true, - // in case internal page content is here 'branding/locales/html/' + // in case internal page content is here 'webapp/locales/html/' }, }) const DONATE = defaultPageParamsPages.DONATE.overwrite({ // we use 'ocelot-social.herokuapp.com' at the moment, because redirections of 'ocelot.social' subpages are not working correctly - externalLink: 'https://ocelot-social.herokuapp.com/donations', // if string is defined and not empty it's dominating + externalLink: 'https://yunite.org/brand-guidelines/', // if string is defined and not empty it's dominating internalPage: { // footerIdent: 'site.donate', // localized string identifier, if undefined default is used @@ -26,12 +26,12 @@ const DONATE = defaultPageParamsPages.DONATE.overwrite({ hasContainer: true, hasBaseCard: true, hasLoginInHeader: true, - // in case internal page content is here 'branding/locales/html/' + // in case internal page content is here 'webapp/locales/html/' }, }) const IMPRINT = defaultPageParamsPages.IMPRINT.overwrite({ // we use 'ocelot-social.herokuapp.com' at the moment, because redirections of 'ocelot.social' subpages are not working correctly - externalLink: 'https://ocelot-social.herokuapp.com/imprint', // if string is defined and not empty it's dominating + externalLink: 'https://yunite.org/impressum/', // if string is defined and not empty it's dominating internalPage: { // footerIdent: 'site.imprint', // localized string identifier, if undefined default is used @@ -40,7 +40,7 @@ const IMPRINT = defaultPageParamsPages.IMPRINT.overwrite({ hasContainer: true, hasBaseCard: true, hasLoginInHeader: true, - // in case internal page content is here 'branding/locales/html/' + // in case internal page content is here 'webapp/locales/html/' }, }) const TERMS_AND_CONDITIONS = defaultPageParamsPages.TERMS_AND_CONDITIONS.overwrite({ @@ -53,11 +53,11 @@ const TERMS_AND_CONDITIONS = defaultPageParamsPages.TERMS_AND_CONDITIONS.overwri hasContainer: true, hasBaseCard: true, hasLoginInHeader: true, - // in case internal page content is here 'branding/locales/html/' + // in case internal page content is here 'webapp/locales/html/' }, }) const CODE_OF_CONDUCT = defaultPageParamsPages.CODE_OF_CONDUCT.overwrite({ - // externalLink: null, // if string is defined and not empty it's dominating + externalLink: 'https://yunite.org/ueber-yunite/unsere-werte/', // if string is defined and not empty it's dominating internalPage: { // footerIdent: 'site.code-of-conduct', // localized string identifier, if undefined default is used @@ -66,11 +66,11 @@ const CODE_OF_CONDUCT = defaultPageParamsPages.CODE_OF_CONDUCT.overwrite({ hasContainer: true, hasBaseCard: true, hasLoginInHeader: true, - // in case internal page content is here 'branding/locales/html/' + // in case internal page content is here 'webapp/locales/html/' }, }) const DATA_PRIVACY = defaultPageParamsPages.DATA_PRIVACY.overwrite({ - // externalLink: null, // if string is defined and not empty it's dominating + externalLink: 'https://yunite.org/datenschutz/', // if string is defined and not empty it's dominating internalPage: { // footerIdent: 'site.data-privacy', // localized string identifier, if undefined default is used @@ -79,11 +79,11 @@ const DATA_PRIVACY = defaultPageParamsPages.DATA_PRIVACY.overwrite({ hasContainer: true, hasBaseCard: true, hasLoginInHeader: true, - // in case internal page content is here 'branding/locales/html/' + // in case internal page content is here 'webapp/locales/html/' }, }) const FAQ = defaultPageParamsPages.FAQ.overwrite({ - // externalLink: null, // if string is defined and not empty it's dominating + externalLink: 'https://yunite.org/ueber-yunite/faq-hilfe/', // if string is defined and not empty it's dominating internalPage: { // footerIdent: 'site.faq', // localized string identifier, if undefined default is used @@ -92,11 +92,11 @@ const FAQ = defaultPageParamsPages.FAQ.overwrite({ hasContainer: true, hasBaseCard: true, hasLoginInHeader: true, - // in case internal page content is here 'branding/locales/html/' + // in case internal page content is here 'webapp/locales/html/' }, }) const SUPPORT = defaultPageParamsPages.SUPPORT.overwrite({ - externalLink: 'https://ocelot.social', // if string is defined and not empty it's dominating + // externalLink: '', // if string is defined and not empty it's dominating internalPage: { // footerIdent: 'site.support', // localized string identifier, if undefined default is used @@ -105,7 +105,7 @@ const SUPPORT = defaultPageParamsPages.SUPPORT.overwrite({ hasContainer: true, hasBaseCard: true, hasLoginInHeader: true, - // in case internal page content is here 'branding/locales/html/' + // in case internal page content is here 'webapp/locales/html/' }, }) @@ -125,12 +125,12 @@ export default { FOOTER_LINK_LIST: [ ORGANIZATION, - TERMS_AND_CONDITIONS, + // TERMS_AND_CONDITIONS, CODE_OF_CONDUCT, DATA_PRIVACY, FAQ, - DONATE, + // DONATE, + // SUPPORT, IMPRINT, - SUPPORT, ], -} +} \ No newline at end of file diff --git a/branding/constants/logos.js b/branding/constants/logos.js index 2bea199da..75ac91b30 100644 --- a/branding/constants/logos.js +++ b/branding/constants/logos.js @@ -2,7 +2,7 @@ // this are the paths in the webapp export default { LOGO_HEADER_PATH: '/img/custom/logo-horizontal.svg', - LOGO_HEADER_WIDTH: '130px', + LOGO_HEADER_WIDTH: '47px', LOGO_SIGNUP_PATH: '/img/custom/logo-squared.svg', LOGO_WELCOME_PATH: '/img/custom/logo-squared.svg', LOGO_LOGOUT_PATH: '/img/custom/logo-squared.svg', diff --git a/branding/constants/metadata.js b/branding/constants/metadata.js index 3d09066d5..623612dab 100644 --- a/branding/constants/metadata.js +++ b/branding/constants/metadata.js @@ -1,9 +1,9 @@ // this file is duplicated in `backend/src/config/metadata.js` and `webapp/constants/metadata.js` and replaced on rebranding export default { - APPLICATION_NAME: 'ocelot.social', - APPLICATION_SHORT_NAME: 'ocelot.social', - APPLICATION_DESCRIPTION: 'Ocelot Social Community', + APPLICATION_NAME: 'yunite.me', + APPLICATION_SHORT_NAME: 'yunite.me', + APPLICATION_DESCRIPTION: 'Yunite Community', COOKIE_NAME: 'ocelot-social-token', - ORGANIZATION_NAME: 'busFaktor e.V.', - ORGANIZATION_JURISDICTION: 'Deutschland', + ORGANIZATION_NAME: 'Verein Corona-Reset', + ORGANIZATION_JURISDICTION: 'Switzerland', } diff --git a/branding/static/favicon.ico b/branding/static/favicon.ico index 430cef437289d45eaceaa1d096a3674fccbf62cc..0f8dc3ea6fe96277c031128c682cfdcbe9d67a60 100644 GIT binary patch literal 5558 zcmds5X=oi)6rL<%^;gnG1%DV7Bxn^}sy`H$KWbG3e~1>5RuDC7+t?&+>e7;zzASAP zu}N(bmtri1wxP}P-po^DQ&3!fsI4GM!3CwbRuHVz_Zk`!9x!mcsUGU>vr@{t+~7$-837gh%8#$2H1O7CQ4CGO-A@YAs2f zaIuKv5DS#dAkJ~k_(dJ+!p2;NB(4MQQA^%~%~S?fCU(&O)KOj7fUSInB<=&|PwqPh z+2$PI*H2+`+#}k8%_u|cm5~1vv4dW)&7!GnhfXN}r#h{aJ?Fz><@6PA^@mVK{No?L5_LN&o z&K17aEnu2^OyfbHB9JYMe?KT&yVpx=do8F&w)E6V$sfberQIktD5G}??#<*A`Q#qY z$c@JaWP7|y;vKb0y$*vG%S6k?-*Q zDS%A&cQ?83)gQ%=Qhyy;_UnFW?p&wmjyZqLSFbCP=UHs-S|>|>I{^G#IgnX@quf6! zxdrzf-?bI{9mBpa1r~`pz`5;MTk&~+jy(vtf7}@4xPKjae7Hr=9rJHP|3%}>xJm z#n6lL=NYW{h(@(z+*1gkcp)@!=2DU5Bv_!=cGsEImb1~1P!svQCp5#as;xD6yUpy zwTMLCtvk8~8OZvFi+kMPZ=QE%3^lt!iTv!{&AMSzcGeF`z%SaKtuIAW<8s#rFDsGv zueq|&;gCZYV-58;{ca*=-9VGn4K_(SJ~31lI@GlvaAP%#O)Tm(?rPNjuQ<(rBgdFh z*RDDH`_`7yQ^VTJv!4&{;dx(DH%LDvHyj_-o`8Kpa1TDCAK-sVR*l3ZhMtD>XkZU* z{LhS^t^MwEJ2%Lh12IsuY~ER)(F6P9r+eVvKS!?kZb-Uf6>|GWy-Hp9Jt4h^l#5Osl*@kDE5&EVmB=r{ez@m>Ii8Wf h)aP*XnCHj)jfycQnY%8_`Ef0{f9HCB{Wc=<{{nFHQI7xs literal 5558 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 diff --git a/branding/static/icon.png b/branding/static/icon.png index 1c81fa5fca1a415323627f025eb8a68fbc2a6b79..8a3da6f6014ab8e257a8b5d3a88618216e7eab3b 100644 GIT binary patch delta 6718 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/branding/static/img/custom/logo-squared.svg b/branding/static/img/custom/logo-squared.svg index 15f420c79..6c12acd28 100644 --- a/branding/static/img/custom/logo-squared.svg +++ b/branding/static/img/custom/logo-squared.svg @@ -1,82 +1,15 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + From 3f59926a75e43f472d560f2fe23689f314b11144 Mon Sep 17 00:00:00 2001 From: ogerly Date: Fri, 23 Sep 2022 08:53:20 +0200 Subject: [PATCH 36/81] change neo4j image path docker-compose.yml --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 535d485be..519c9a9e8 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -87,7 +87,7 @@ services: ######################################################## neo4j: # name the image so that it cannot be found in a DockerHub repository, otherwise it will not be built locally from the 'dockerfile' but pulled from there - image: ocelotsocialnetwork/neo4j-community-branded:local-production + image: ocelotsocialnetwork/neo4j-community-branded:latest networks: - test-network volumes: From d14fd3f47ad39054f0b1c837c31bd6e40b277810 Mon Sep 17 00:00:00 2001 From: Alexander Friedland Date: Fri, 23 Sep 2022 09:09:56 +0200 Subject: [PATCH 37/81] Update branding/constants/links.js MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Wolfgang Huß --- branding/constants/links.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/branding/constants/links.js b/branding/constants/links.js index 4d27e9669..dff55e7c6 100644 --- a/branding/constants/links.js +++ b/branding/constants/links.js @@ -26,7 +26,7 @@ const DONATE = defaultPageParamsPages.DONATE.overwrite({ hasContainer: true, hasBaseCard: true, hasLoginInHeader: true, - // in case internal page content is here 'webapp/locales/html/' + // in case internal page content is here 'branding/locales/html/' }, }) const IMPRINT = defaultPageParamsPages.IMPRINT.overwrite({ From 3ea522ff2a06a4cc8a9ad700ce9edf9fcd9a8747 Mon Sep 17 00:00:00 2001 From: Alexander Friedland Date: Fri, 23 Sep 2022 09:10:03 +0200 Subject: [PATCH 38/81] Update branding/constants/links.js MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Wolfgang Huß --- branding/constants/links.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/branding/constants/links.js b/branding/constants/links.js index dff55e7c6..65916bbe4 100644 --- a/branding/constants/links.js +++ b/branding/constants/links.js @@ -40,7 +40,7 @@ const IMPRINT = defaultPageParamsPages.IMPRINT.overwrite({ hasContainer: true, hasBaseCard: true, hasLoginInHeader: true, - // in case internal page content is here 'webapp/locales/html/' + // in case internal page content is here 'branding/locales/html/' }, }) const TERMS_AND_CONDITIONS = defaultPageParamsPages.TERMS_AND_CONDITIONS.overwrite({ From af6a7ee06334b83a74b0e620c31d2057ba1fe240 Mon Sep 17 00:00:00 2001 From: Alexander Friedland Date: Fri, 23 Sep 2022 09:10:10 +0200 Subject: [PATCH 39/81] Update branding/constants/links.js MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Wolfgang Huß --- branding/constants/links.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/branding/constants/links.js b/branding/constants/links.js index 65916bbe4..afadb77c4 100644 --- a/branding/constants/links.js +++ b/branding/constants/links.js @@ -53,7 +53,7 @@ const TERMS_AND_CONDITIONS = defaultPageParamsPages.TERMS_AND_CONDITIONS.overwri hasContainer: true, hasBaseCard: true, hasLoginInHeader: true, - // in case internal page content is here 'webapp/locales/html/' + // in case internal page content is here 'branding/locales/html/' }, }) const CODE_OF_CONDUCT = defaultPageParamsPages.CODE_OF_CONDUCT.overwrite({ From 5c134140f76a1657dff8837f86968b4e29a146aa Mon Sep 17 00:00:00 2001 From: Alexander Friedland Date: Fri, 23 Sep 2022 09:10:15 +0200 Subject: [PATCH 40/81] Update branding/constants/links.js MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Wolfgang Huß --- branding/constants/links.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/branding/constants/links.js b/branding/constants/links.js index afadb77c4..a3229c79e 100644 --- a/branding/constants/links.js +++ b/branding/constants/links.js @@ -66,7 +66,7 @@ const CODE_OF_CONDUCT = defaultPageParamsPages.CODE_OF_CONDUCT.overwrite({ hasContainer: true, hasBaseCard: true, hasLoginInHeader: true, - // in case internal page content is here 'webapp/locales/html/' + // in case internal page content is here 'branding/locales/html/' }, }) const DATA_PRIVACY = defaultPageParamsPages.DATA_PRIVACY.overwrite({ From f764a5e840070252bc83a9d7bb91edf05b6756e3 Mon Sep 17 00:00:00 2001 From: Alexander Friedland Date: Fri, 23 Sep 2022 09:10:21 +0200 Subject: [PATCH 41/81] Update branding/constants/links.js MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Wolfgang Huß --- branding/constants/links.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/branding/constants/links.js b/branding/constants/links.js index a3229c79e..4ce3ea19d 100644 --- a/branding/constants/links.js +++ b/branding/constants/links.js @@ -79,7 +79,7 @@ const DATA_PRIVACY = defaultPageParamsPages.DATA_PRIVACY.overwrite({ hasContainer: true, hasBaseCard: true, hasLoginInHeader: true, - // in case internal page content is here 'webapp/locales/html/' + // in case internal page content is here 'branding/locales/html/' }, }) const FAQ = defaultPageParamsPages.FAQ.overwrite({ From b44ab6ff930924b952a2931570ba3c85993e3cc7 Mon Sep 17 00:00:00 2001 From: Alexander Friedland Date: Fri, 23 Sep 2022 09:10:26 +0200 Subject: [PATCH 42/81] Update branding/constants/links.js MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Wolfgang Huß --- branding/constants/links.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/branding/constants/links.js b/branding/constants/links.js index 4ce3ea19d..3c67cb7f9 100644 --- a/branding/constants/links.js +++ b/branding/constants/links.js @@ -92,7 +92,7 @@ const FAQ = defaultPageParamsPages.FAQ.overwrite({ hasContainer: true, hasBaseCard: true, hasLoginInHeader: true, - // in case internal page content is here 'webapp/locales/html/' + // in case internal page content is here 'branding/locales/html/' }, }) const SUPPORT = defaultPageParamsPages.SUPPORT.overwrite({ From a9b1ab8e2c7e491e570d171611f8594d97973205 Mon Sep 17 00:00:00 2001 From: Alexander Friedland Date: Fri, 23 Sep 2022 09:10:31 +0200 Subject: [PATCH 43/81] Update branding/constants/links.js MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Wolfgang Huß --- branding/constants/links.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/branding/constants/links.js b/branding/constants/links.js index 3c67cb7f9..7e89159eb 100644 --- a/branding/constants/links.js +++ b/branding/constants/links.js @@ -105,7 +105,7 @@ const SUPPORT = defaultPageParamsPages.SUPPORT.overwrite({ hasContainer: true, hasBaseCard: true, hasLoginInHeader: true, - // in case internal page content is here 'webapp/locales/html/' + // in case internal page content is here 'branding/locales/html/' }, }) From 48860b7c701e1ffec83f7c6d63bbbc3220a3f70f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Fri, 23 Sep 2022 12:37:24 +0200 Subject: [PATCH 44/81] Add '/dns.values*-ME.yaml' to .gitignore --- deployment/kubernetes/.gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/deployment/kubernetes/.gitignore b/deployment/kubernetes/.gitignore index 092cda60e..3bcb187b9 100644 --- a/deployment/kubernetes/.gitignore +++ b/deployment/kubernetes/.gitignore @@ -1,4 +1,5 @@ /dns.values.yaml +/dns.values*-ME.yaml /nginx.values.yaml /values.yaml /values*-ME.yaml \ No newline at end of file From 7e05f2e82ab81a24bb077382e0688296a9e36e15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Mon, 26 Sep 2022 14:52:22 +0200 Subject: [PATCH 45/81] Implement automatic deployment for groups branch `5059-epic-groups` for Yunite branding --- .github/workflows/publish.yml | 106 ++++++++++++++++++++++++++++------ 1 file changed, 89 insertions(+), 17 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 2743a25df..3d067c5a5 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -3,8 +3,8 @@ name: ocelot.social publish branded CI on: push: branches: - - master - # - 55-implement-PRODUCTION_DB_CLEAN_ALLOW-for-staging-production-evironments # for testing while developing + # - master + - 5059-epic-groups # for testing while developing jobs: ############################################################################## @@ -83,13 +83,13 @@ jobs: ########################################################################## - name: Backend | Build `branded` image run: | - docker build --target branded -t "${DOCKER_ORGANISATION}/backend-branded:latest" -t "${DOCKER_ORGANISATION}/backend-branded:${VERSION}" -t "${DOCKER_ORGANISATION}/backend-branded:${BUILD_VERSION}" -f docker/backend.Dockerfile --build-arg "APP_IMAGE_TAG_CODE=${OCELOT_DOCKER_VERSION_TAG}-code" --build-arg "APP_IMAGE_TAG_BASE=${OCELOT_DOCKER_VERSION_TAG}-base" . - docker save "${DOCKER_ORGANISATION}/backend-branded" > /tmp/backend-branded.tar + docker build --target branded -t "${DOCKER_ORGANISATION}/backend-groups-branded:latest" -t "${DOCKER_ORGANISATION}/backend-groups-branded:${VERSION}" -t "${DOCKER_ORGANISATION}/backend-groups-branded:${BUILD_VERSION}" -f docker/backend.Dockerfile --build-arg "APP_IMAGE=ocelotsocialnetwork/backend-groups" --build-arg "APP_IMAGE_TAG_CODE=${OCELOT_DOCKER_VERSION_TAG}-code" --build-arg "APP_IMAGE_TAG_BASE=${OCELOT_DOCKER_VERSION_TAG}-base" . + docker save "${DOCKER_ORGANISATION}/backend-groups-branded" > /tmp/backend-groups-branded.tar - name: Upload Artifact uses: actions/upload-artifact@v2 with: name: docker-backend-branded - path: /tmp/backend-branded.tar + path: /tmp/backend-groups-branded.tar ############################################################################## # JOB: DOCKER BUILD BRANDED WEBAPP ########################################### @@ -125,13 +125,13 @@ jobs: ########################################################################## - name: Webapp | Build `branded` image run: | - docker build --target branded -t "${DOCKER_ORGANISATION}/webapp-branded:latest" -t "${DOCKER_ORGANISATION}/webapp-branded:${VERSION}" -t "${DOCKER_ORGANISATION}/webapp-branded:${BUILD_VERSION}" -f docker/webapp.Dockerfile --build-arg "APP_IMAGE_TAG_CODE=${OCELOT_DOCKER_VERSION_TAG}-code" --build-arg "APP_IMAGE_TAG_BASE=${OCELOT_DOCKER_VERSION_TAG}-base" . - docker save "${DOCKER_ORGANISATION}/webapp-branded" > /tmp/webapp-branded.tar + docker build --target branded -t "${DOCKER_ORGANISATION}/webapp-groups-branded:latest" -t "${DOCKER_ORGANISATION}/webapp-groups-branded:${VERSION}" -t "${DOCKER_ORGANISATION}/webapp-groups-branded:${BUILD_VERSION}" -f docker/webapp.Dockerfile --build-arg "APP_IMAGE=ocelotsocialnetwork/webapp-groups" --build-arg "APP_IMAGE_TAG_CODE=${OCELOT_DOCKER_VERSION_TAG}-code" --build-arg "APP_IMAGE_TAG_BASE=${OCELOT_DOCKER_VERSION_TAG}-base" . + docker save "${DOCKER_ORGANISATION}/webapp-groups-branded" > /tmp/webapp-groups-branded.tar - name: Upload Artifact uses: actions/upload-artifact@v2 with: name: docker-webapp-branded - path: /tmp/webapp-branded.tar + path: /tmp/webapp-groups-branded.tar ############################################################################## # JOB: DOCKER BUILD BRANDED MAINTENANCE ###################################### @@ -167,13 +167,13 @@ jobs: ########################################################################## - name: Maintenance | Build `branded` image run: | - docker build --target branded -t "${DOCKER_ORGANISATION}/maintenance-branded:latest" -t "${DOCKER_ORGANISATION}/maintenance-branded:${VERSION}" -t "${DOCKER_ORGANISATION}/maintenance-branded:${BUILD_VERSION}" -f docker/maintenance.Dockerfile --build-arg "APP_IMAGE_TAG_CODE=${OCELOT_DOCKER_VERSION_TAG}-code" --build-arg "APP_IMAGE_TAG_BASE=${OCELOT_DOCKER_VERSION_TAG}-base" . - docker save "${DOCKER_ORGANISATION}/maintenance-branded" > /tmp/maintenance-branded.tar + docker build --target branded -t "${DOCKER_ORGANISATION}/maintenance-groups-branded:latest" -t "${DOCKER_ORGANISATION}/maintenance-groups-branded:${VERSION}" -t "${DOCKER_ORGANISATION}/maintenance-groups-branded:${BUILD_VERSION}" -f docker/maintenance.Dockerfile --build-arg "APP_IMAGE=ocelotsocialnetwork/maintenance-groups" --build-arg "APP_IMAGE_TAG_CODE=${OCELOT_DOCKER_VERSION_TAG}-code" --build-arg "APP_IMAGE_TAG_BASE=${OCELOT_DOCKER_VERSION_TAG}-base" . + docker save "${DOCKER_ORGANISATION}/maintenance-groups-branded" > /tmp/maintenance-groups-branded.tar - name: Upload Artifact uses: actions/upload-artifact@v2 with: name: docker-maintenance-branded - path: /tmp/maintenance-branded.tar + path: /tmp/maintenance-groups-branded.tar ############################################################################## # JOB: UPLOAD TO DOCKERHUB ################################################### @@ -225,7 +225,7 @@ jobs: name: docker-backend-branded path: /tmp - name: Load Docker Image - run: docker load < /tmp/backend-branded.tar + run: docker load < /tmp/backend-groups-branded.tar # Webapp - name: Download Docker Image (Webapp) uses: actions/download-artifact@v2 @@ -233,7 +233,7 @@ jobs: name: docker-webapp-branded path: /tmp - name: Load Docker Image - run: docker load < /tmp/webapp-branded.tar + run: docker load < /tmp/webapp-groups-branded.tar # Maintenance - name: Download Docker Image (Maintenance) uses: actions/download-artifact@v2 @@ -241,7 +241,7 @@ jobs: name: docker-maintenance-branded path: /tmp - name: Load Docker Image - run: docker load < /tmp/maintenance-branded.tar + run: docker load < /tmp/maintenance-groups-branded.tar ########################################################################## # Upload ################################################################# ########################################################################## @@ -250,11 +250,83 @@ jobs: - name: Push Neo4j Community run: docker push --all-tags ${DOCKER_ORGANISATION}/neo4j-community-branded - name: Push Backend - run: docker push --all-tags ${DOCKER_ORGANISATION}/backend-branded + run: docker push --all-tags ${DOCKER_ORGANISATION}/backend-groups-branded - name: Push Webapp - run: docker push --all-tags ${DOCKER_ORGANISATION}/webapp-branded + run: docker push --all-tags ${DOCKER_ORGANISATION}/webapp-groups-branded - name: Push Maintenance - run: docker push --all-tags ${DOCKER_ORGANISATION}/maintenance-branded + run: docker push --all-tags ${DOCKER_ORGANISATION}/maintenance-groups-branded + + ############################################################################## + # JOB: KUBERNETES DEPLOY ACTUAL/LATEST VERSION ###################################### + ############################################################################## + kubernetes_deploy: + # see example https://github.com/do-community/example-doctl-action + # see example https://github.com/do-community/example-doctl-action/blob/main/.github/workflows/workflow.yaml + name: Kubernetes deploy of latest version to stage.ocelot.social cluster at DigitalOcean + runs-on: ubuntu-latest + needs: [upload_to_dockerhub] + steps: + ########################################################################## + # CHECKOUT CODE ########################################################## + ########################################################################## + - name: Checkout code + uses: actions/checkout@v2 + ########################################################################## + # SET ENVS ############################################################### + ########################################################################## + - name: ENV - VERSION + run: echo "VERSION=$(node -p -e "require('./package.json').version")" >> $GITHUB_ENV + - name: ENV - BUILD_VERSION + run: echo "BUILD_VERSION=${VERSION}-${GITHUB_RUN_NUMBER}" >> $GITHUB_ENV + ########################################################################## + # Install DigitalOceans doctl and set kubeconfig ######################### + ########################################################################## + - name: Install doctl + uses: digitalocean/action-doctl@v2 + with: + token: ${{ secrets.DIGITALOCEAN_ACCESS_TOKEN }} + - name: Save DigitalOcean kubeconfig with short-lived credentials + run: doctl kubernetes cluster kubeconfig save --expiry-seconds 600 cluster-stage-ocelot-social + ########################################################################## + # Deploy new Docker images to DigitalOcean Kubernetes cluster ############ + ########################################################################## + # - name: Deploy 'latest' to DigitalOcean Kubernetes + # run: | + # kubectl -n default set image deployment/ocelot-webapp container-ocelot-webapp=ocelotsocialnetwork/webapp:latest + # kubectl -n default rollout restart deployment/ocelot-webapp + # kubectl -n default set image deployment/ocelot-backend container-ocelot-backend=ocelotsocialnetwork/backend:latest + # kubectl -n default rollout restart deployment/ocelot-backend + # kubectl -n default set image deployment/ocelot-maintenance container-ocelot-maintenance=ocelotsocialnetwork/maintenance:latest + # kubectl -n default rollout restart deployment/ocelot-maintenance + # kubectl -n default set image deployment/ocelot-neo4j container-ocelot-neo4j=ocelotsocialnetwork/neo4j-community:latest + # kubectl -n default rollout restart deployment/ocelot-neo4j + - name: Deploy actual version '$BUILD_VERSION' to DigitalOcean Kubernetes + run: | + kubectl -n default set image deployment/ocelot-webapp container-ocelot-webapp=ocelotsocialnetwork/webapp-groups:$BUILD_VERSION + kubectl -n default rollout restart deployment/ocelot-webapp + kubectl -n default set image deployment/ocelot-backend container-ocelot-backend=ocelotsocialnetwork/backend-groups:$BUILD_VERSION + kubectl -n default rollout restart deployment/ocelot-backend + kubectl -n default set image deployment/ocelot-maintenance container-ocelot-maintenance=ocelotsocialnetwork/maintenance-groups:$BUILD_VERSION + kubectl -n default rollout restart deployment/ocelot-maintenance + kubectl -n default set image deployment/ocelot-neo4j container-ocelot-neo4j=ocelotsocialnetwork/neo4j-community:$BUILD_VERSION + kubectl -n default rollout restart deployment/ocelot-neo4j + # because this step 'kubectl -n default rollout status deployment/* --timeout=600s' does not work as expected + # and we need the pods to be up again for cleaning and seeding the Neo4j database and the backend. + # !!! this is not a perfect solution !!! + # deployments are regularely up again after 3 minutes and 10 seconds + - name: Sleep for 4 minutes, means 240 seconds + run: sleep 240s + shell: bash + - name: Verify deployment and wait for the pods of each deplyment to get ready for cleaning and seeding of the database + run: | + kubectl -n default rollout status deployment/ocelot-backend --timeout=600s + kubectl -n default rollout status deployment/ocelot-neo4j --timeout=600s + kubectl -n default rollout status deployment/ocelot-maintenance --timeout=600s + kubectl -n default rollout status deployment/ocelot-webapp --timeout=600s + - name: Reset and seed Neo4j database via backend for staging + # db cleaning and seeding is only possible in production if env 'PRODUCTION_DB_CLEAN_ALLOW=true' is set in deployment + run: | + kubectl -n default exec -it $(kubectl -n default get pods | grep ocelot-backend | awk '{ print $1 }') -- /bin/sh -c "node --experimental-repl-await dist/db/clean.js && node --experimental-repl-await dist/db/seed.js" ############################################################################## # JOB: GITHUB TAG LATEST VERSION ############################################# From bb2b4df2763f1340521494e75da8f9bdc0caa8a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Mon, 26 Sep 2022 16:48:59 +0200 Subject: [PATCH 46/81] Implement automatic deployment for groups branch `5059-epic-groups` for Yunite branding --- .github/workflows/publish.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 3d067c5a5..8df86c03f 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -274,6 +274,8 @@ jobs: ########################################################################## # SET ENVS ############################################################### ########################################################################## + - name: ENV - DOCKER_ORGANISATION + run: echo "DOCKER_ORGANISATION=$(node -p -e "require('./package.json').dockerOrganisation")" >> $GITHUB_ENV - name: ENV - VERSION run: echo "VERSION=$(node -p -e "require('./package.json').version")" >> $GITHUB_ENV - name: ENV - BUILD_VERSION @@ -302,13 +304,13 @@ jobs: # kubectl -n default rollout restart deployment/ocelot-neo4j - name: Deploy actual version '$BUILD_VERSION' to DigitalOcean Kubernetes run: | - kubectl -n default set image deployment/ocelot-webapp container-ocelot-webapp=ocelotsocialnetwork/webapp-groups:$BUILD_VERSION + kubectl -n default set image deployment/ocelot-webapp container-ocelot-webapp=${DOCKER_ORGANISATION}/webapp-groups:$BUILD_VERSION kubectl -n default rollout restart deployment/ocelot-webapp - kubectl -n default set image deployment/ocelot-backend container-ocelot-backend=ocelotsocialnetwork/backend-groups:$BUILD_VERSION + kubectl -n default set image deployment/ocelot-backend container-ocelot-backend=${DOCKER_ORGANISATION}/backend-groups:$BUILD_VERSION kubectl -n default rollout restart deployment/ocelot-backend - kubectl -n default set image deployment/ocelot-maintenance container-ocelot-maintenance=ocelotsocialnetwork/maintenance-groups:$BUILD_VERSION + kubectl -n default set image deployment/ocelot-maintenance container-ocelot-maintenance=${DOCKER_ORGANISATION}/maintenance-groups:$BUILD_VERSION kubectl -n default rollout restart deployment/ocelot-maintenance - kubectl -n default set image deployment/ocelot-neo4j container-ocelot-neo4j=ocelotsocialnetwork/neo4j-community:$BUILD_VERSION + kubectl -n default set image deployment/ocelot-neo4j container-ocelot-neo4j=${DOCKER_ORGANISATION}/neo4j-community:$BUILD_VERSION kubectl -n default rollout restart deployment/ocelot-neo4j # because this step 'kubectl -n default rollout status deployment/* --timeout=600s' does not work as expected # and we need the pods to be up again for cleaning and seeding the Neo4j database and the backend. From 34c50967554234604e6005c0c647c9c4cc8c9dd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Mon, 26 Sep 2022 16:52:43 +0200 Subject: [PATCH 47/81] Change build number --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index dfce46c3c..feb38ece5 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "yunite.net", "version": "1.1.1", - "ocelotDockerVersionTag": "1.1.1-228", + "ocelotDockerVersionTag": "1.1.1-229", "dockerOrganisation": "tirokk", "description": "yunite.net Branded", "author": "yunite.net Community", From 3b034679bc873a9b28e40e6c988ae805687bc9e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Mon, 26 Sep 2022 17:16:38 +0200 Subject: [PATCH 48/81] Add groups header menu --- branding/constants/headerMenu.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/branding/constants/headerMenu.js b/branding/constants/headerMenu.js index c95e79122..e6d76d8be 100644 --- a/branding/constants/headerMenu.js +++ b/branding/constants/headerMenu.js @@ -4,6 +4,10 @@ export default { name: 'Beiträge', path: '/#', }, + { + name: 'Gruppen', + path: '/my-groups', + }, { name: 'Über Yunite', url: 'https://yunite.org', From c800930ee11f8d7510bcea384d6f33ebe7c153ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Mon, 26 Sep 2022 17:17:03 +0200 Subject: [PATCH 49/81] Fix publishing of groups branch --- .github/workflows/publish.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 8df86c03f..b55545166 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -304,11 +304,11 @@ jobs: # kubectl -n default rollout restart deployment/ocelot-neo4j - name: Deploy actual version '$BUILD_VERSION' to DigitalOcean Kubernetes run: | - kubectl -n default set image deployment/ocelot-webapp container-ocelot-webapp=${DOCKER_ORGANISATION}/webapp-groups:$BUILD_VERSION + kubectl -n default set image deployment/ocelot-webapp container-ocelot-webapp=${DOCKER_ORGANISATION}/webapp-groups-branded:$BUILD_VERSION kubectl -n default rollout restart deployment/ocelot-webapp - kubectl -n default set image deployment/ocelot-backend container-ocelot-backend=${DOCKER_ORGANISATION}/backend-groups:$BUILD_VERSION + kubectl -n default set image deployment/ocelot-backend container-ocelot-backend=${DOCKER_ORGANISATION}/backend-groups-branded:$BUILD_VERSION kubectl -n default rollout restart deployment/ocelot-backend - kubectl -n default set image deployment/ocelot-maintenance container-ocelot-maintenance=${DOCKER_ORGANISATION}/maintenance-groups:$BUILD_VERSION + kubectl -n default set image deployment/ocelot-maintenance container-ocelot-maintenance=${DOCKER_ORGANISATION}/maintenance-groups-branded:$BUILD_VERSION kubectl -n default rollout restart deployment/ocelot-maintenance kubectl -n default set image deployment/ocelot-neo4j container-ocelot-neo4j=${DOCKER_ORGANISATION}/neo4j-community:$BUILD_VERSION kubectl -n default rollout restart deployment/ocelot-neo4j From 49d89bff9b2df2af3b9c712c7fe189cf556a19ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Mon, 26 Sep 2022 19:35:47 +0200 Subject: [PATCH 50/81] Fix publishing of groups branch, again --- .github/workflows/publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index b55545166..55933f052 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -288,7 +288,7 @@ jobs: with: token: ${{ secrets.DIGITALOCEAN_ACCESS_TOKEN }} - name: Save DigitalOcean kubeconfig with short-lived credentials - run: doctl kubernetes cluster kubeconfig save --expiry-seconds 600 cluster-stage-ocelot-social + run: doctl kubernetes cluster kubeconfig save --expiry-seconds 600 cluster-stage-yunite-me ########################################################################## # Deploy new Docker images to DigitalOcean Kubernetes cluster ############ ########################################################################## From ca20e11b91680d51a9657eb49fe05b93db76cece Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Mon, 26 Sep 2022 20:07:25 +0200 Subject: [PATCH 51/81] Fix publishing of groups branch, again, again --- .github/workflows/publish.yml | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 55933f052..9531e783d 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -274,12 +274,17 @@ jobs: ########################################################################## # SET ENVS ############################################################### ########################################################################## - - name: ENV - DOCKER_ORGANISATION - run: echo "DOCKER_ORGANISATION=$(node -p -e "require('./package.json').dockerOrganisation")" >> $GITHUB_ENV - name: ENV - VERSION run: echo "VERSION=$(node -p -e "require('./package.json').version")" >> $GITHUB_ENV + - name: ENV - BUILD_DATE + run: echo "BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_ENV + - name: ENV - OCELOT_DOCKER_VERSION_TAG + run: echo "OCELOT_DOCKER_VERSION_TAG=$(node -p -e "require('./package.json').ocelotDockerVersionTag")" >> $GITHUB_ENV + - name: ENV - DOCKER_ORGANISATION + run: echo "DOCKER_ORGANISATION=$(node -p -e "require('./package.json').dockerOrganisation")" >> $GITHUB_ENV + # this is based on the node Docker version tag "node:12.19.0-alpine3.10" and looks like "app-branded:1.0.2-3-ocelot.social1.0.2-79" - name: ENV - BUILD_VERSION - run: echo "BUILD_VERSION=${VERSION}-${GITHUB_RUN_NUMBER}" >> $GITHUB_ENV + run: echo "BUILD_VERSION=${VERSION}-${GITHUB_RUN_NUMBER}-ocelot.social${OCELOT_DOCKER_VERSION_TAG}" >> $GITHUB_ENV ########################################################################## # Install DigitalOceans doctl and set kubeconfig ######################### ########################################################################## @@ -304,13 +309,13 @@ jobs: # kubectl -n default rollout restart deployment/ocelot-neo4j - name: Deploy actual version '$BUILD_VERSION' to DigitalOcean Kubernetes run: | - kubectl -n default set image deployment/ocelot-webapp container-ocelot-webapp=${DOCKER_ORGANISATION}/webapp-groups-branded:$BUILD_VERSION + kubectl -n default set image deployment/ocelot-webapp container-ocelot-webapp=${DOCKER_ORGANISATION}/webapp-groups-branded:${BUILD_VERSION} kubectl -n default rollout restart deployment/ocelot-webapp - kubectl -n default set image deployment/ocelot-backend container-ocelot-backend=${DOCKER_ORGANISATION}/backend-groups-branded:$BUILD_VERSION + kubectl -n default set image deployment/ocelot-backend container-ocelot-backend=${DOCKER_ORGANISATION}/backend-groups-branded:${BUILD_VERSION} kubectl -n default rollout restart deployment/ocelot-backend - kubectl -n default set image deployment/ocelot-maintenance container-ocelot-maintenance=${DOCKER_ORGANISATION}/maintenance-groups-branded:$BUILD_VERSION + kubectl -n default set image deployment/ocelot-maintenance container-ocelot-maintenance=${DOCKER_ORGANISATION}/maintenance-groups-branded:${BUILD_VERSION} kubectl -n default rollout restart deployment/ocelot-maintenance - kubectl -n default set image deployment/ocelot-neo4j container-ocelot-neo4j=${DOCKER_ORGANISATION}/neo4j-community:$BUILD_VERSION + kubectl -n default set image deployment/ocelot-neo4j container-ocelot-neo4j=${DOCKER_ORGANISATION}/neo4j-community:${BUILD_VERSION} kubectl -n default rollout restart deployment/ocelot-neo4j # because this step 'kubectl -n default rollout status deployment/* --timeout=600s' does not work as expected # and we need the pods to be up again for cleaning and seeding the Neo4j database and the backend. From 0a33fc05b175714e8c60f90e31c20580b47d4e3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Mon, 26 Sep 2022 20:26:41 +0200 Subject: [PATCH 52/81] Fix 'neo4j-community' name to 'neo4j-community-branded' --- .github/workflows/publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 9531e783d..7fa3e608a 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -315,7 +315,7 @@ jobs: kubectl -n default rollout restart deployment/ocelot-backend kubectl -n default set image deployment/ocelot-maintenance container-ocelot-maintenance=${DOCKER_ORGANISATION}/maintenance-groups-branded:${BUILD_VERSION} kubectl -n default rollout restart deployment/ocelot-maintenance - kubectl -n default set image deployment/ocelot-neo4j container-ocelot-neo4j=${DOCKER_ORGANISATION}/neo4j-community:${BUILD_VERSION} + kubectl -n default set image deployment/ocelot-neo4j container-ocelot-neo4j=${DOCKER_ORGANISATION}/neo4j-community-branded:${BUILD_VERSION} kubectl -n default rollout restart deployment/ocelot-neo4j # because this step 'kubectl -n default rollout status deployment/* --timeout=600s' does not work as expected # and we need the pods to be up again for cleaning and seeding the Neo4j database and the backend. From ccd039ec6143fe2d4ca43c8e98ac2cbf8707dc81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Mon, 26 Sep 2022 21:02:11 +0200 Subject: [PATCH 53/81] Add 'stage.yunite.me' to the live demo list --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 9b70d3a8c..28dcd80ef 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,8 @@ __Try out our deployed [development environment](https://stage.ocelot.social).__ Visit our staging networks: -- central staging network: [stage.ocelot.social](https://stage.ocelot.social). +- central staging network: [stage.ocelot.social](https://stage.ocelot.social) +- Yunite staging network: [stage.yunite.me](https://stage.yunite.me) Logins: From 4f5ff1ff36b394c39e77676b30323ab7dbb6ca8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Fri, 30 Sep 2022 09:52:09 +0200 Subject: [PATCH 54/81] Release v1.1.1-231 show new group features --- TODO-next-update.md | 8 +++++++- branding/constants/groups.js | 5 +++++ package.json | 2 +- 3 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 branding/constants/groups.js diff --git a/TODO-next-update.md b/TODO-next-update.md index 4cf3c8d10..844dde5a1 100644 --- a/TODO-next-update.md +++ b/TODO-next-update.md @@ -2,11 +2,17 @@ When you overtake this deploy and rebrand repo to your network you have to recognize the following changes and doings … +## This Latest Version >= 1.1.1 with 'ocelotDockerVersionTag' 1.1.1-231 + +### Yunite Deployment/Rebranding PR – chore: 🍰 Release v1.1.1-231 - New Group Features #14 + +- You have to add the file `webapp/constants/groups.js` as `branding/constants/groups.js` which should include `SHOW_GROUP_BUTTON_IN_HEADER` set to your needs. + ## This Latest Version >= 1.1.0 with 'ocelotDockerVersionTag' 1.1.0-205 ### Deployment/Rebranding PR – chore: 🍰 Release v1.1.0 - Implement Categories Again #63 -- You have to add the `CATEGORIES_ACTIVE` from the `deployment/kubernetes/values.template.yaml` to your `deployment/kubernetes/values.yaml` and set it to your prevered value. +- You have to add the `CATEGORIES_ACTIVE` from the `deployment/kubernetes/values.template.yaml` to your `deployment/kubernetes/values.yaml` and set it to your preferred value. - Make sure the correct categories are in your Neo4j database on the server. ## Version >= 1.0.9 with 'ocelotDockerVersionTag' 1.0.9-199 diff --git a/branding/constants/groups.js b/branding/constants/groups.js new file mode 100644 index 000000000..3b00b2433 --- /dev/null +++ b/branding/constants/groups.js @@ -0,0 +1,5 @@ +// this file is duplicated in `backend/src/constants/group.js` and `webapp/constants/group.js` +export const GROUPNAME_MIN_LENGTH = 3 +export const GROUPNAME_MAX_LENGTH = 50 +export const GROUPDESCRIPTION_WITHOUT_HTML_LENGTH_MIN = 100 // with removed HTML tags +export const SHOW_GROUP_BUTTON_IN_HEADER = false diff --git a/package.json b/package.json index dfce46c3c..1dd33f47e 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "yunite.net", "version": "1.1.1", - "ocelotDockerVersionTag": "1.1.1-228", + "ocelotDockerVersionTag": "1.1.1-231", "dockerOrganisation": "tirokk", "description": "yunite.net Branded", "author": "yunite.net Community", From 111b1da00d3d45d0708ca33036d33a2502b3f6a6 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Tue, 11 Oct 2022 18:59:52 +0200 Subject: [PATCH 55/81] test jq to merge locale files --- docker/webapp.Dockerfile | 3 +++ tools/test/file1.json | 12 ++++++++++++ tools/test/file2.json | 11 +++++++++++ tools/test/result.json | 15 +++++++++++++++ 4 files changed, 41 insertions(+) create mode 100644 tools/test/file1.json create mode 100644 tools/test/file2.json create mode 100644 tools/test/result.json diff --git a/docker/webapp.Dockerfile b/docker/webapp.Dockerfile index 81748e08f..5c3f98f6e 100644 --- a/docker/webapp.Dockerfile +++ b/docker/webapp.Dockerfile @@ -15,6 +15,9 @@ COPY branding/constants/ constants/ COPY branding/locales/ locales/ COPY branding/assets/styles/imports/ assets/styles/imports/ +## Something like (bash, jq must be installed) +# for locale in `ls locales/*.json`; do jq -s '.[0] * .[1]' source/$locale $locale; done; + ################################################################################## # BUILD ########################################################################## ################################################################################## diff --git a/tools/test/file1.json b/tools/test/file1.json new file mode 100644 index 000000000..19ec4e19e --- /dev/null +++ b/tools/test/file1.json @@ -0,0 +1,12 @@ +{ + "a-key": "A", + "b-key": { + "a-subkey": "A", + "b-subkey": "B", + "c-subkey": { + "a-subsubkey": "A", + "b-subsubkey": "B" + } + }, + "c-key": "C" +} diff --git a/tools/test/file2.json b/tools/test/file2.json new file mode 100644 index 000000000..e4d7ade81 --- /dev/null +++ b/tools/test/file2.json @@ -0,0 +1,11 @@ +{ + "a-key": "AA", + "b-key": { + "b-subkey": "BB", + "c-subkey": { + "b-subsubkey": "BB", + "c-subsubkey": "C" + } + }, + "d-key": "D" +} diff --git a/tools/test/result.json b/tools/test/result.json new file mode 100644 index 000000000..843c23538 --- /dev/null +++ b/tools/test/result.json @@ -0,0 +1,15 @@ +{ + "a-key": "AA", + "b-key": { + "a-subkey": "A", + "b-subkey": "BB", + "c-subkey": { + "a-subsubkey": "A", + "b-subsubkey": "BB", + "c-subsubkey": "C" + } + }, + "c-key": "C", + "d-key": "D" +} + From 9045ac3199545789ffd47ece6f5997371b0ebe0f Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Wed, 12 Oct 2022 15:33:07 +0200 Subject: [PATCH 56/81] add script to merge variables --- branding/locales/de.json | 3 +++ docker/webapp.Dockerfile | 8 +++++++- tools/merge-locales.sh | 10 ++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 branding/locales/de.json create mode 100755 tools/merge-locales.sh diff --git a/branding/locales/de.json b/branding/locales/de.json new file mode 100644 index 000000000..7fa1f1b48 --- /dev/null +++ b/branding/locales/de.json @@ -0,0 +1,3 @@ +{ + "new-key": "This is a new key" +} diff --git a/docker/webapp.Dockerfile b/docker/webapp.Dockerfile index 5c3f98f6e..104b48429 100644 --- a/docker/webapp.Dockerfile +++ b/docker/webapp.Dockerfile @@ -12,9 +12,15 @@ FROM $APP_IMAGE_CODE as code # copy public constants into the Docker image to brand it COPY branding/static/ static/ COPY branding/constants/ constants/ -COPY branding/locales/ locales/ +COPY branding/locales/html/ locales/html/ +# COPY branding/locales/index.js locales/index.js +COPY branding/locales/*.json locales/tmp/ COPY branding/assets/styles/imports/ assets/styles/imports/ +RUN apk add --no-cache bash jq + +RUN tools/merge-locales.sh + ## Something like (bash, jq must be installed) # for locale in `ls locales/*.json`; do jq -s '.[0] * .[1]' source/$locale $locale; done; diff --git a/tools/merge-locales.sh b/tools/merge-locales.sh new file mode 100755 index 000000000..8fc5c75d2 --- /dev/null +++ b/tools/merge-locales.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +for locale in `ls locales/*.json`; +do + file = basename $locale; + if [ -f locales/tmp/$file ]; then + jq -s '.[0] * .[1]' $locale locales/tmp/$file > locales/tmp/tmp.json; + mv locales/tmp/tmp.json $locale; + fi; +done; From ebf8894ca25b5dfeec032390ea42fc5c961891b4 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Wed, 12 Oct 2022 15:58:28 +0200 Subject: [PATCH 57/81] remove tmp folder, test for override of existing locales --- branding/locales/de.json | 5 +++++ docker/webapp.Dockerfile | 4 +--- tools/merge-locales.sh | 4 +++- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/branding/locales/de.json b/branding/locales/de.json index 7fa1f1b48..8f42e8998 100644 --- a/branding/locales/de.json +++ b/branding/locales/de.json @@ -1,3 +1,8 @@ { +"user": { + "avatar": { + "submitted": "XXXXXXX" + } + }, "new-key": "This is a new key" } diff --git a/docker/webapp.Dockerfile b/docker/webapp.Dockerfile index 104b48429..ba7cbffb0 100644 --- a/docker/webapp.Dockerfile +++ b/docker/webapp.Dockerfile @@ -10,6 +10,7 @@ ARG APP_IMAGE_CODE=${APP_IMAGE}:${APP_IMAGE_TAG_CODE} FROM $APP_IMAGE_CODE as code # copy public constants into the Docker image to brand it +COPY tools/ tools/ COPY branding/static/ static/ COPY branding/constants/ constants/ COPY branding/locales/html/ locales/html/ @@ -21,9 +22,6 @@ RUN apk add --no-cache bash jq RUN tools/merge-locales.sh -## Something like (bash, jq must be installed) -# for locale in `ls locales/*.json`; do jq -s '.[0] * .[1]' source/$locale $locale; done; - ################################################################################## # BUILD ########################################################################## ################################################################################## diff --git a/tools/merge-locales.sh b/tools/merge-locales.sh index 8fc5c75d2..21d263265 100755 --- a/tools/merge-locales.sh +++ b/tools/merge-locales.sh @@ -2,9 +2,11 @@ for locale in `ls locales/*.json`; do - file = basename $locale; + file=$(basename $locale); if [ -f locales/tmp/$file ]; then jq -s '.[0] * .[1]' $locale locales/tmp/$file > locales/tmp/tmp.json; mv locales/tmp/tmp.json $locale; fi; done; + +rm -r locales/tmp/ From a1ce8049957bfb4388a12f3cec64e1309ed6d15a Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Wed, 12 Oct 2022 16:29:20 +0200 Subject: [PATCH 58/81] clean up --- branding/locales/de.json | 8 -------- tools/test/file1.json | 12 ------------ tools/test/file2.json | 11 ----------- tools/test/result.json | 15 --------------- 4 files changed, 46 deletions(-) delete mode 100644 branding/locales/de.json delete mode 100644 tools/test/file1.json delete mode 100644 tools/test/file2.json delete mode 100644 tools/test/result.json diff --git a/branding/locales/de.json b/branding/locales/de.json deleted file mode 100644 index 8f42e8998..000000000 --- a/branding/locales/de.json +++ /dev/null @@ -1,8 +0,0 @@ -{ -"user": { - "avatar": { - "submitted": "XXXXXXX" - } - }, - "new-key": "This is a new key" -} diff --git a/tools/test/file1.json b/tools/test/file1.json deleted file mode 100644 index 19ec4e19e..000000000 --- a/tools/test/file1.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "a-key": "A", - "b-key": { - "a-subkey": "A", - "b-subkey": "B", - "c-subkey": { - "a-subsubkey": "A", - "b-subsubkey": "B" - } - }, - "c-key": "C" -} diff --git a/tools/test/file2.json b/tools/test/file2.json deleted file mode 100644 index e4d7ade81..000000000 --- a/tools/test/file2.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "a-key": "AA", - "b-key": { - "b-subkey": "BB", - "c-subkey": { - "b-subsubkey": "BB", - "c-subsubkey": "C" - } - }, - "d-key": "D" -} diff --git a/tools/test/result.json b/tools/test/result.json deleted file mode 100644 index 843c23538..000000000 --- a/tools/test/result.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "a-key": "AA", - "b-key": { - "a-subkey": "A", - "b-subkey": "BB", - "c-subkey": { - "a-subsubkey": "A", - "b-subsubkey": "BB", - "c-subsubkey": "C" - } - }, - "c-key": "C", - "d-key": "D" -} - From be603a5af237d031693e8429f4c0499af7c4fdd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Thu, 13 Oct 2022 15:11:42 +0200 Subject: [PATCH 59/81] =?UTF-8?q?Set=20this=20branch=20as=20publishing=20b?= =?UTF-8?q?ranch=20for=20testing=20purposes=20=E2=80=93=20revert=20later?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 2743a25df..7ad535dc6 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -4,7 +4,7 @@ on: push: branches: - master - # - 55-implement-PRODUCTION_DB_CLEAN_ALLOW-for-staging-production-evironments # for testing while developing + - 79-fix-implementation-of-overwriting-locales # for testing while developing jobs: ############################################################################## From 0cf00fdc078514d173563b92249e91c8f49da975 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Thu, 13 Oct 2022 15:13:34 +0200 Subject: [PATCH 60/81] Fix copy error by adding two empty JSON files to the locales --- branding/locales/de.json | 2 ++ branding/locales/en.json | 2 ++ 2 files changed, 4 insertions(+) create mode 100644 branding/locales/de.json create mode 100644 branding/locales/en.json diff --git a/branding/locales/de.json b/branding/locales/de.json new file mode 100644 index 000000000..2c63c0851 --- /dev/null +++ b/branding/locales/de.json @@ -0,0 +1,2 @@ +{ +} diff --git a/branding/locales/en.json b/branding/locales/en.json new file mode 100644 index 000000000..2c63c0851 --- /dev/null +++ b/branding/locales/en.json @@ -0,0 +1,2 @@ +{ +} From 4479fb4cbc7aeec86f5b451353635a221f49e6f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Thu, 13 Oct 2022 16:55:39 +0200 Subject: [PATCH 61/81] Revert the publish branch --- .github/workflows/publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 7ad535dc6..5cbdf9004 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -4,7 +4,7 @@ on: push: branches: - master - - 79-fix-implementation-of-overwriting-locales # for testing while developing + # - 79-fix-implementation-of-overwriting-locales # for testing while developing jobs: ############################################################################## From 323826ca20f84ae34cbe555a6d13c7a6a1132686 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Sat, 15 Oct 2022 15:04:28 +0200 Subject: [PATCH 62/81] Add '/dns.values*-ME.yaml' to .gitignore --- deployment/kubernetes/.gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/deployment/kubernetes/.gitignore b/deployment/kubernetes/.gitignore index 092cda60e..3bcb187b9 100644 --- a/deployment/kubernetes/.gitignore +++ b/deployment/kubernetes/.gitignore @@ -1,4 +1,5 @@ /dns.values.yaml +/dns.values*-ME.yaml /nginx.values.yaml /values.yaml /values*-ME.yaml \ No newline at end of file From 0794115b3fdb4e1b7d86631692af62705bd98179 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Sat, 15 Oct 2022 15:57:36 +0200 Subject: [PATCH 63/81] Release v1.1.2-XXX - configurable header menu is translatable --- branding/constants/headerMenu.js | 6 +++--- branding/locales/de.json | 4 ++++ branding/locales/en.json | 4 ++++ 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/branding/constants/headerMenu.js b/branding/constants/headerMenu.js index c95e79122..8f0293485 100644 --- a/branding/constants/headerMenu.js +++ b/branding/constants/headerMenu.js @@ -1,11 +1,11 @@ export default { MENU: [ { - name: 'Beiträge', - path: '/#', + nameIdent: 'ocelotRebranding.newsFeed', + path: '/', }, { - name: 'Über Yunite', + nameIdent: 'ocelotRebranding.about', url: 'https://yunite.org', }, ], diff --git a/branding/locales/de.json b/branding/locales/de.json index 2c63c0851..0fac27985 100644 --- a/branding/locales/de.json +++ b/branding/locales/de.json @@ -1,2 +1,6 @@ { + "yuniteRebranding": { + "newsFeed": "Beiträge", + "about": "Über Yunite" + } } diff --git a/branding/locales/en.json b/branding/locales/en.json index 2c63c0851..11a82212c 100644 --- a/branding/locales/en.json +++ b/branding/locales/en.json @@ -1,2 +1,6 @@ { + "yuniteRebranding": { + "newsFeed": "News Feed", + "about": "About Yunite" + } } From 4dca4269cb6b21373d69423870b9afe2db99647b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Sat, 22 Oct 2022 20:04:52 +0200 Subject: [PATCH 64/81] Change and correct readme's --- README.md | 2 +- TODO-next-update.md | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9b70d3a8c..e6fd53546 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ __Try out our deployed [development environment](https://stage.ocelot.social).__ Visit our staging networks: -- central staging network: [stage.ocelot.social](https://stage.ocelot.social). +- central staging network: [stage.ocelot.social](https://stage.ocelot.social) Logins: diff --git a/TODO-next-update.md b/TODO-next-update.md index 4cf3c8d10..bc1207f20 100644 --- a/TODO-next-update.md +++ b/TODO-next-update.md @@ -2,9 +2,19 @@ When you overtake this deploy and rebrand repo to your network you have to recognize the following changes and doings … +## This Latest Version >= 2.0.0 with 'ocelotDockerVersionTag' 2.0.0-XXX + +### Main Code PR – feat: 🍰 Implement LOGO_HEADER_CLICK As Configuration #5525 + +- You have to set `LOGO_HEADER_CLICK` in `branding/constants/logos.js` originally in main code file `webapp/constants/logos.js` to your prevered value. + +### Main Code Issue – 🌟 [EPIC] Release v2.0.0 – Beta Test → Final #5547 + +- You have to set `SHOW_GROUP_BUTTON_IN_HEADER` in `branding/constants/groups.js` originally in main code file `webapp/constants/groups.js` to your prevered value. + ## This Latest Version >= 1.1.0 with 'ocelotDockerVersionTag' 1.1.0-205 -### Deployment/Rebranding PR – chore: 🍰 Release v1.1.0 - Implement Categories Again #63 +### Deployment/Rebranding PR – chore: 🍰 Release v1.1.0 - Implement Categories Again #63 - You have to add the `CATEGORIES_ACTIVE` from the `deployment/kubernetes/values.template.yaml` to your `deployment/kubernetes/values.yaml` and set it to your prevered value. - Make sure the correct categories are in your Neo4j database on the server. From b0ff413d8351f40def20ce737f3b4d72a92393b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Sat, 22 Oct 2022 20:05:29 +0200 Subject: [PATCH 65/81] Adjust and add constants files --- branding/constants/groups.js | 5 +++++ branding/constants/headerMenu.js | 8 ++++---- branding/constants/logos.js | 9 +++++++++ 3 files changed, 18 insertions(+), 4 deletions(-) create mode 100644 branding/constants/groups.js diff --git a/branding/constants/groups.js b/branding/constants/groups.js new file mode 100644 index 000000000..1c49d3ff3 --- /dev/null +++ b/branding/constants/groups.js @@ -0,0 +1,5 @@ +// this file is duplicated in `backend/src/constants/group.js` and `webapp/constants/group.js` +export const NAME_LENGTH_MIN = 3 +export const NAME_LENGTH_MAX = 50 +export const DESCRIPTION_WITHOUT_HTML_LENGTH_MIN = 100 // with removed HTML tags +export const SHOW_GROUP_BUTTON_IN_HEADER = true diff --git a/branding/constants/headerMenu.js b/branding/constants/headerMenu.js index 33cba8d5c..6d0a0afad 100644 --- a/branding/constants/headerMenu.js +++ b/branding/constants/headerMenu.js @@ -1,12 +1,12 @@ export default { MENU: [ // { - // name: 'Beiträge', - // path: '/#', + // nameIdent: 'nameIdent', + // path: '/', // }, // { - // name: 'Über Yunite', - // url: 'https://yunite.org', + // nameIdent: 'nameIdent', + // url: 'https://ocelot.social', // }, ], } diff --git a/branding/constants/logos.js b/branding/constants/logos.js index 2bea199da..136918762 100644 --- a/branding/constants/logos.js +++ b/branding/constants/logos.js @@ -3,6 +3,15 @@ export default { LOGO_HEADER_PATH: '/img/custom/logo-horizontal.svg', LOGO_HEADER_WIDTH: '130px', + LOGO_HEADER_CLICK: { + externalLink: null, + internalPath: { + to: { + name: 'index', + }, + scrollTo: '.main-navigation', + }, + }, LOGO_SIGNUP_PATH: '/img/custom/logo-squared.svg', LOGO_WELCOME_PATH: '/img/custom/logo-squared.svg', LOGO_LOGOUT_PATH: '/img/custom/logo-squared.svg', From 94921627125399482d8fd46d07f6d977c24998b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Sat, 22 Oct 2022 20:14:51 +0200 Subject: [PATCH 66/81] Set footer --- branding/constants/links.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/branding/constants/links.js b/branding/constants/links.js index 7e89159eb..ecde14ebb 100644 --- a/branding/constants/links.js +++ b/branding/constants/links.js @@ -126,9 +126,9 @@ export default { FOOTER_LINK_LIST: [ ORGANIZATION, // TERMS_AND_CONDITIONS, - CODE_OF_CONDUCT, + // CODE_OF_CONDUCT, DATA_PRIVACY, - FAQ, + // FAQ, // DONATE, // SUPPORT, IMPRINT, From 7ec3ee09dfecad761f93af6adeeedc00295bff4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Sat, 22 Oct 2022 20:26:31 +0200 Subject: [PATCH 67/81] Adjust merge of groups branch by fixing header menu lacales idents --- branding/constants/headerMenu.js | 6 +++--- branding/locales/de.json | 5 +++-- branding/locales/en.json | 5 +++-- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/branding/constants/headerMenu.js b/branding/constants/headerMenu.js index 37c46e202..eea94e14b 100644 --- a/branding/constants/headerMenu.js +++ b/branding/constants/headerMenu.js @@ -1,15 +1,15 @@ export default { MENU: [ { - nameIdent: 'ocelotRebranding.newsFeed', + nameIdent: 'yuniteRebranding.newsFeed', path: '/', }, { - nameIdent: 'ocelotRebranding.myGroups', + nameIdent: 'yuniteRebranding.myGroups', path: '/my-groups', }, { - nameIdent: 'ocelotRebranding.about', + nameIdent: 'yuniteRebranding.about', url: 'https://yunite.org', }, ], diff --git a/branding/locales/de.json b/branding/locales/de.json index 0fac27985..6237e4428 100644 --- a/branding/locales/de.json +++ b/branding/locales/de.json @@ -1,6 +1,7 @@ { "yuniteRebranding": { - "newsFeed": "Beiträge", - "about": "Über Yunite" + "about": "Über Yunite", + "myGroups": "Gruppen", + "newsFeed": "Beiträge" } } diff --git a/branding/locales/en.json b/branding/locales/en.json index 11a82212c..9b78f48b5 100644 --- a/branding/locales/en.json +++ b/branding/locales/en.json @@ -1,6 +1,7 @@ { "yuniteRebranding": { - "newsFeed": "News Feed", - "about": "About Yunite" + "about": "About Yunite", + "myGroups": "Groups", + "newsFeed": "News Feed" } } From c13b2859925d7ee161efff22a17be5f24cc05efe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Sat, 22 Oct 2022 20:31:32 +0200 Subject: [PATCH 68/81] Add header menu item 'Topic' --- branding/constants/headerMenu.js | 4 ++++ branding/locales/de.json | 3 ++- branding/locales/en.json | 3 ++- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/branding/constants/headerMenu.js b/branding/constants/headerMenu.js index eea94e14b..0f7a06f6a 100644 --- a/branding/constants/headerMenu.js +++ b/branding/constants/headerMenu.js @@ -8,6 +8,10 @@ export default { nameIdent: 'yuniteRebranding.myGroups', path: '/my-groups', }, + { + nameIdent: 'yuniteRebranding.topics', + url: 'https://yunite.org/themen/', + }, { nameIdent: 'yuniteRebranding.about', url: 'https://yunite.org', diff --git a/branding/locales/de.json b/branding/locales/de.json index 6237e4428..374b7a4d1 100644 --- a/branding/locales/de.json +++ b/branding/locales/de.json @@ -2,6 +2,7 @@ "yuniteRebranding": { "about": "Über Yunite", "myGroups": "Gruppen", - "newsFeed": "Beiträge" + "newsFeed": "Beiträge", + "topics": "Themen" } } diff --git a/branding/locales/en.json b/branding/locales/en.json index 9b78f48b5..2ac41ce62 100644 --- a/branding/locales/en.json +++ b/branding/locales/en.json @@ -2,6 +2,7 @@ "yuniteRebranding": { "about": "About Yunite", "myGroups": "Groups", - "newsFeed": "News Feed" + "newsFeed": "News Feed", + "topics": "Topics" } } From ea51f73b64995d49b6ee0cadec45b60ce2f4cf00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Sat, 22 Oct 2022 20:46:38 +0200 Subject: [PATCH 69/81] Adjust the footer --- branding/constants/headerMenu.js | 8 ++++---- branding/constants/links.js | 8 ++++---- branding/locales/de.json | 14 ++++++++++---- branding/locales/en.json | 14 ++++++++++---- 4 files changed, 28 insertions(+), 16 deletions(-) diff --git a/branding/constants/headerMenu.js b/branding/constants/headerMenu.js index 0f7a06f6a..48f9fd29f 100644 --- a/branding/constants/headerMenu.js +++ b/branding/constants/headerMenu.js @@ -1,19 +1,19 @@ export default { MENU: [ { - nameIdent: 'yuniteRebranding.newsFeed', + nameIdent: 'yuniteRebranding.header.newsFeed', path: '/', }, { - nameIdent: 'yuniteRebranding.myGroups', + nameIdent: 'yuniteRebranding.header.myGroups', path: '/my-groups', }, { - nameIdent: 'yuniteRebranding.topics', + nameIdent: 'yuniteRebranding.header.topics', url: 'https://yunite.org/themen/', }, { - nameIdent: 'yuniteRebranding.about', + nameIdent: 'yuniteRebranding.header.about', url: 'https://yunite.org', }, ], diff --git a/branding/constants/links.js b/branding/constants/links.js index ecde14ebb..aa9e3a129 100644 --- a/branding/constants/links.js +++ b/branding/constants/links.js @@ -17,7 +17,7 @@ const ORGANIZATION = defaultPageParamsPages.ORGANIZATION.overwrite({ }) const DONATE = defaultPageParamsPages.DONATE.overwrite({ // we use 'ocelot-social.herokuapp.com' at the moment, because redirections of 'ocelot.social' subpages are not working correctly - externalLink: 'https://yunite.org/brand-guidelines/', // if string is defined and not empty it's dominating + externalLink: 'https://yunite.org/spenden/', // if string is defined and not empty it's dominating internalPage: { // footerIdent: 'site.donate', // localized string identifier, if undefined default is used @@ -34,7 +34,7 @@ const IMPRINT = defaultPageParamsPages.IMPRINT.overwrite({ externalLink: 'https://yunite.org/impressum/', // if string is defined and not empty it's dominating internalPage: { - // footerIdent: 'site.imprint', // localized string identifier, if undefined default is used + footerIdent: 'yuniteRebranding.footer.imprint', // localized string identifier, if undefined default is used // headTitleIdent: 'site.imprint', // localized string identifier, if undefined default is used // headlineIdent: 'site.imprint', // localized string identifier, on null it's hidden, if undefined default is used hasContainer: true, @@ -73,7 +73,7 @@ const DATA_PRIVACY = defaultPageParamsPages.DATA_PRIVACY.overwrite({ externalLink: 'https://yunite.org/datenschutz/', // if string is defined and not empty it's dominating internalPage: { - // footerIdent: 'site.data-privacy', // localized string identifier, if undefined default is used + footerIdent: 'yuniteRebranding.footer.dataPrivacy', // localized string identifier, if undefined default is used // headTitleIdent: 'site.data-privacy', // localized string identifier, if undefined default is used // headlineIdent: 'site.data-privacy', // localized string identifier, on null it's hidden, if undefined default is used hasContainer: true, @@ -124,7 +124,7 @@ export default { SUPPORT, FOOTER_LINK_LIST: [ - ORGANIZATION, + // ORGANIZATION, // TERMS_AND_CONDITIONS, // CODE_OF_CONDUCT, DATA_PRIVACY, diff --git a/branding/locales/de.json b/branding/locales/de.json index 374b7a4d1..c27e5af24 100644 --- a/branding/locales/de.json +++ b/branding/locales/de.json @@ -1,8 +1,14 @@ { "yuniteRebranding": { - "about": "Über Yunite", - "myGroups": "Gruppen", - "newsFeed": "Beiträge", - "topics": "Themen" + "header": { + "about": "Über Yunite", + "myGroups": "Gruppen", + "newsFeed": "Beiträge", + "topics": "Themen" + }, + "footer": { + "dataPrivacy": "Datenschutz", + "imprint": "Impressum" + } } } diff --git a/branding/locales/en.json b/branding/locales/en.json index 2ac41ce62..93609ee38 100644 --- a/branding/locales/en.json +++ b/branding/locales/en.json @@ -1,8 +1,14 @@ { "yuniteRebranding": { - "about": "About Yunite", - "myGroups": "Groups", - "newsFeed": "News Feed", - "topics": "Topics" + "header": { + "about": "About Yunite", + "myGroups": "Groups", + "newsFeed": "News Feed", + "topics": "Topics" + }, + "footer": { + "dataPrivacy": "Data privacy", + "imprint": "Imprint" + } } } From 2b87fb2df509131a193e84566175846145cef051 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Sun, 23 Oct 2022 15:16:25 +0200 Subject: [PATCH 70/81] Release v2.0.0-250 --- TODO-next-update.md | 2 +- package.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/TODO-next-update.md b/TODO-next-update.md index bc1207f20..ff808fdb9 100644 --- a/TODO-next-update.md +++ b/TODO-next-update.md @@ -2,7 +2,7 @@ When you overtake this deploy and rebrand repo to your network you have to recognize the following changes and doings … -## This Latest Version >= 2.0.0 with 'ocelotDockerVersionTag' 2.0.0-XXX +## This Latest Version >= 2.0.0 with 'ocelotDockerVersionTag' 2.0.0-250 ### Main Code PR – feat: 🍰 Implement LOGO_HEADER_CLICK As Configuration #5525 diff --git a/package.json b/package.json index 61afb1f1b..af6b6dfab 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ocelot-social-branded", - "version": "1.1.1", - "ocelotDockerVersionTag": "1.1.1-228", + "version": "2.0.0", + "ocelotDockerVersionTag": "2.0.0-250", "dockerOrganisation": "ocelotsocialnetwork", "description": "ocelot.social Branded", "author": "ocelot.social Community", From c94e0dec3d60e616a5efdf56c23ec6c4eb957173 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Sun, 23 Oct 2022 18:55:40 +0200 Subject: [PATCH 71/81] Add database migration to auto-deployment on publish --- .github/workflows/publish.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 7fa3e608a..91ca808e8 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -320,16 +320,19 @@ jobs: # because this step 'kubectl -n default rollout status deployment/* --timeout=600s' does not work as expected # and we need the pods to be up again for cleaning and seeding the Neo4j database and the backend. # !!! this is not a perfect solution !!! - # deployments are regularely up again after 3 minutes and 10 seconds + # deployments are regularly up again after 3 minutes and 10 seconds - name: Sleep for 4 minutes, means 240 seconds run: sleep 240s shell: bash - - name: Verify deployment and wait for the pods of each deplyment to get ready for cleaning and seeding of the database + - name: Verify deployment and wait for the pods of each deployment to get ready for cleaning and seeding of the database run: | kubectl -n default rollout status deployment/ocelot-backend --timeout=600s kubectl -n default rollout status deployment/ocelot-neo4j --timeout=600s kubectl -n default rollout status deployment/ocelot-maintenance --timeout=600s kubectl -n default rollout status deployment/ocelot-webapp --timeout=600s + - name: Run migrations for Neo4j database via backend for staging + run: | + kubectl -n default exec -it $(kubectl -n default get pods | grep ocelot-backend | awk '{ print $1 }') -- /bin/sh -c "yarn prod:migrate up" - name: Reset and seed Neo4j database via backend for staging # db cleaning and seeding is only possible in production if env 'PRODUCTION_DB_CLEAN_ALLOW=true' is set in deployment run: | From 6e419acb4615500fef92cfa1547beb5b91c6d773 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Sun, 23 Oct 2022 18:58:53 +0200 Subject: [PATCH 72/81] Remove auto-deploy by push on '5059-epic-groups' --- .github/workflows/publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 403292450..cadddd371 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -4,7 +4,7 @@ on: push: branches: - master - - 5059-epic-groups # for testing while developing + # - 5059-epic-groups # for testing while developing jobs: ############################################################################## From 8ec8125991e48f4f1e99dde3412812f59c91224d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Sun, 23 Oct 2022 19:10:23 +0200 Subject: [PATCH 73/81] Remove 'groups' from 'publish.yml' --- .github/workflows/publish.yml | 46 ++++++++++++++--------------------- 1 file changed, 18 insertions(+), 28 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index cadddd371..71af5a061 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -83,13 +83,13 @@ jobs: ########################################################################## - name: Backend | Build `branded` image run: | - docker build --target branded -t "${DOCKER_ORGANISATION}/backend-groups-branded:latest" -t "${DOCKER_ORGANISATION}/backend-groups-branded:${VERSION}" -t "${DOCKER_ORGANISATION}/backend-groups-branded:${BUILD_VERSION}" -f docker/backend.Dockerfile --build-arg "APP_IMAGE=ocelotsocialnetwork/backend-groups" --build-arg "APP_IMAGE_TAG_CODE=${OCELOT_DOCKER_VERSION_TAG}-code" --build-arg "APP_IMAGE_TAG_BASE=${OCELOT_DOCKER_VERSION_TAG}-base" . - docker save "${DOCKER_ORGANISATION}/backend-groups-branded" > /tmp/backend-groups-branded.tar + docker build --target branded -t "${DOCKER_ORGANISATION}/backend-branded:latest" -t "${DOCKER_ORGANISATION}/backend-branded:${VERSION}" -t "${DOCKER_ORGANISATION}/backend-branded:${BUILD_VERSION}" -f docker/backend.Dockerfile --build-arg "APP_IMAGE=ocelotsocialnetwork/backend" --build-arg "APP_IMAGE_TAG_CODE=${OCELOT_DOCKER_VERSION_TAG}-code" --build-arg "APP_IMAGE_TAG_BASE=${OCELOT_DOCKER_VERSION_TAG}-base" . + docker save "${DOCKER_ORGANISATION}/backend-branded" > /tmp/backend-branded.tar - name: Upload Artifact uses: actions/upload-artifact@v2 with: name: docker-backend-branded - path: /tmp/backend-groups-branded.tar + path: /tmp/backend-branded.tar ############################################################################## # JOB: DOCKER BUILD BRANDED WEBAPP ########################################### @@ -125,13 +125,13 @@ jobs: ########################################################################## - name: Webapp | Build `branded` image run: | - docker build --target branded -t "${DOCKER_ORGANISATION}/webapp-groups-branded:latest" -t "${DOCKER_ORGANISATION}/webapp-groups-branded:${VERSION}" -t "${DOCKER_ORGANISATION}/webapp-groups-branded:${BUILD_VERSION}" -f docker/webapp.Dockerfile --build-arg "APP_IMAGE=ocelotsocialnetwork/webapp-groups" --build-arg "APP_IMAGE_TAG_CODE=${OCELOT_DOCKER_VERSION_TAG}-code" --build-arg "APP_IMAGE_TAG_BASE=${OCELOT_DOCKER_VERSION_TAG}-base" . - docker save "${DOCKER_ORGANISATION}/webapp-groups-branded" > /tmp/webapp-groups-branded.tar + docker build --target branded -t "${DOCKER_ORGANISATION}/webapp-branded:latest" -t "${DOCKER_ORGANISATION}/webapp-branded:${VERSION}" -t "${DOCKER_ORGANISATION}/webapp-branded:${BUILD_VERSION}" -f docker/webapp.Dockerfile --build-arg "APP_IMAGE=ocelotsocialnetwork/webapp" --build-arg "APP_IMAGE_TAG_CODE=${OCELOT_DOCKER_VERSION_TAG}-code" --build-arg "APP_IMAGE_TAG_BASE=${OCELOT_DOCKER_VERSION_TAG}-base" . + docker save "${DOCKER_ORGANISATION}/webapp-branded" > /tmp/webapp-branded.tar - name: Upload Artifact uses: actions/upload-artifact@v2 with: name: docker-webapp-branded - path: /tmp/webapp-groups-branded.tar + path: /tmp/webapp-branded.tar ############################################################################## # JOB: DOCKER BUILD BRANDED MAINTENANCE ###################################### @@ -167,13 +167,13 @@ jobs: ########################################################################## - name: Maintenance | Build `branded` image run: | - docker build --target branded -t "${DOCKER_ORGANISATION}/maintenance-groups-branded:latest" -t "${DOCKER_ORGANISATION}/maintenance-groups-branded:${VERSION}" -t "${DOCKER_ORGANISATION}/maintenance-groups-branded:${BUILD_VERSION}" -f docker/maintenance.Dockerfile --build-arg "APP_IMAGE=ocelotsocialnetwork/maintenance-groups" --build-arg "APP_IMAGE_TAG_CODE=${OCELOT_DOCKER_VERSION_TAG}-code" --build-arg "APP_IMAGE_TAG_BASE=${OCELOT_DOCKER_VERSION_TAG}-base" . - docker save "${DOCKER_ORGANISATION}/maintenance-groups-branded" > /tmp/maintenance-groups-branded.tar + docker build --target branded -t "${DOCKER_ORGANISATION}/maintenance-branded:latest" -t "${DOCKER_ORGANISATION}/maintenance-branded:${VERSION}" -t "${DOCKER_ORGANISATION}/maintenance-branded:${BUILD_VERSION}" -f docker/maintenance.Dockerfile --build-arg "APP_IMAGE=ocelotsocialnetwork/maintenance" --build-arg "APP_IMAGE_TAG_CODE=${OCELOT_DOCKER_VERSION_TAG}-code" --build-arg "APP_IMAGE_TAG_BASE=${OCELOT_DOCKER_VERSION_TAG}-base" . + docker save "${DOCKER_ORGANISATION}/maintenance-branded" > /tmp/maintenance-branded.tar - name: Upload Artifact uses: actions/upload-artifact@v2 with: name: docker-maintenance-branded - path: /tmp/maintenance-groups-branded.tar + path: /tmp/maintenance-branded.tar ############################################################################## # JOB: UPLOAD TO DOCKERHUB ################################################### @@ -225,7 +225,7 @@ jobs: name: docker-backend-branded path: /tmp - name: Load Docker Image - run: docker load < /tmp/backend-groups-branded.tar + run: docker load < /tmp/backend-branded.tar # Webapp - name: Download Docker Image (Webapp) uses: actions/download-artifact@v2 @@ -233,7 +233,7 @@ jobs: name: docker-webapp-branded path: /tmp - name: Load Docker Image - run: docker load < /tmp/webapp-groups-branded.tar + run: docker load < /tmp/webapp-branded.tar # Maintenance - name: Download Docker Image (Maintenance) uses: actions/download-artifact@v2 @@ -241,7 +241,7 @@ jobs: name: docker-maintenance-branded path: /tmp - name: Load Docker Image - run: docker load < /tmp/maintenance-groups-branded.tar + run: docker load < /tmp/maintenance-branded.tar ########################################################################## # Upload ################################################################# ########################################################################## @@ -250,11 +250,11 @@ jobs: - name: Push Neo4j Community run: docker push --all-tags ${DOCKER_ORGANISATION}/neo4j-community-branded - name: Push Backend - run: docker push --all-tags ${DOCKER_ORGANISATION}/backend-groups-branded + run: docker push --all-tags ${DOCKER_ORGANISATION}/backend-branded - name: Push Webapp - run: docker push --all-tags ${DOCKER_ORGANISATION}/webapp-groups-branded + run: docker push --all-tags ${DOCKER_ORGANISATION}/webapp-branded - name: Push Maintenance - run: docker push --all-tags ${DOCKER_ORGANISATION}/maintenance-groups-branded + run: docker push --all-tags ${DOCKER_ORGANISATION}/maintenance-branded ############################################################################## # JOB: KUBERNETES DEPLOY ACTUAL/LATEST VERSION ###################################### @@ -297,23 +297,13 @@ jobs: ########################################################################## # Deploy new Docker images to DigitalOcean Kubernetes cluster ############ ########################################################################## - # - name: Deploy 'latest' to DigitalOcean Kubernetes - # run: | - # kubectl -n default set image deployment/ocelot-webapp container-ocelot-webapp=ocelotsocialnetwork/webapp:latest - # kubectl -n default rollout restart deployment/ocelot-webapp - # kubectl -n default set image deployment/ocelot-backend container-ocelot-backend=ocelotsocialnetwork/backend:latest - # kubectl -n default rollout restart deployment/ocelot-backend - # kubectl -n default set image deployment/ocelot-maintenance container-ocelot-maintenance=ocelotsocialnetwork/maintenance:latest - # kubectl -n default rollout restart deployment/ocelot-maintenance - # kubectl -n default set image deployment/ocelot-neo4j container-ocelot-neo4j=ocelotsocialnetwork/neo4j-community:latest - # kubectl -n default rollout restart deployment/ocelot-neo4j - name: Deploy actual version '$BUILD_VERSION' to DigitalOcean Kubernetes run: | - kubectl -n default set image deployment/ocelot-webapp container-ocelot-webapp=${DOCKER_ORGANISATION}/webapp-groups-branded:${BUILD_VERSION} + kubectl -n default set image deployment/ocelot-webapp container-ocelot-webapp=${DOCKER_ORGANISATION}/webapp-branded:${BUILD_VERSION} kubectl -n default rollout restart deployment/ocelot-webapp - kubectl -n default set image deployment/ocelot-backend container-ocelot-backend=${DOCKER_ORGANISATION}/backend-groups-branded:${BUILD_VERSION} + kubectl -n default set image deployment/ocelot-backend container-ocelot-backend=${DOCKER_ORGANISATION}/backend-branded:${BUILD_VERSION} kubectl -n default rollout restart deployment/ocelot-backend - kubectl -n default set image deployment/ocelot-maintenance container-ocelot-maintenance=${DOCKER_ORGANISATION}/maintenance-groups-branded:${BUILD_VERSION} + kubectl -n default set image deployment/ocelot-maintenance container-ocelot-maintenance=${DOCKER_ORGANISATION}/maintenance-branded:${BUILD_VERSION} kubectl -n default rollout restart deployment/ocelot-maintenance kubectl -n default set image deployment/ocelot-neo4j container-ocelot-neo4j=${DOCKER_ORGANISATION}/neo4j-community-branded:${BUILD_VERSION} kubectl -n default rollout restart deployment/ocelot-neo4j From 96489e8218d6db344a1efa165a076f6bec8870cc Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Mon, 24 Oct 2022 22:27:39 +0200 Subject: [PATCH 74/81] - fixed spelling errors - detailed upgrade guide for the certmanager --- TODO-next-update.md | 29 +++++++++++++++++++++++++---- deployment/kubernetes/Backup.md | 2 +- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/TODO-next-update.md b/TODO-next-update.md index ff808fdb9..1c59a34f0 100644 --- a/TODO-next-update.md +++ b/TODO-next-update.md @@ -23,12 +23,33 @@ When you overtake this deploy and rebrand repo to your network you have to recog ### Deployment/Rebranding PR – chore: 🍰 Implement PRODUCTION_DB_CLEAN_ALLOW for Staging Production Environments #56 -- Copy `PRODUCTION_DB_CLEAN_ALLOW` from `deployment/kubernetes/values.template.yaml` to `values.yaml` and set it to `false` for production envireonments and only for several stage test servers to `true`. +- Copy `PRODUCTION_DB_CLEAN_ALLOW` from `deployment/kubernetes/values.template.yaml` to `values.yaml` and set it to `false` for production environments and only for several stage test servers to `true`. ### Deployment/Rebranding PR – chore: [WIP] 🍰 Refine docs, first step #46 -- Commit: `Update cert-manager apiVersion "cert-manager.io/v1alpha2" to "cert-manager.io/v1" - - Check for `kubectl` and `helm` versions. +Upgrade the cert-manager, but install CRDs of the version 1.0.0-alpha to actually be able to upgrade ocelot. Then uninstall the legacy CRDs and install the correct ones. + +``` +# upgrade cert-manager to 1.9.1 +> helm upgrade --set installCRDs=true --version 1.9.1 --namespace cert-manager cert-manager jetstack/cert-manager +# apply legacy CRDs +> kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.0.0-alpha.1/cert-manager.crds.yaml +# upgrade ocelot +> helm upgrade ocelot ./ +# delete legacy CRDs +> kubectl delete -f https://github.com/cert-manager/cert-manager/releases/download/v1.0.0-alpha.1/cert-manager.crds.yaml +# apply CRDs for cert-manager 1.9.1 +> kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.9.1/cert-manager.crds.yaml +``` + +Background: We had to upgrade cert-manager due to an external dependency - therefore we had to update cert-manager apiVersion `cert-manager.io/v1alpha2` to `cert-manager.io/v1`. + +The error occurring when not doing this is the following: +``` +Error: UPGRADE FAILED: unable to build kubernetes objects from current release manifest: [resource mapping not found for name: "letsencrypt-production" namespace: "" from "": no matches for kind "ClusterIssuer" in version "cert-manager.io/v1alpha2" +ensure CRDs are installed first, resource mapping not found for name: "letsencrypt-staging" namespace: "" from "": no matches for kind "ClusterIssuer" in version "cert-manager.io/v1alpha2" +ensure CRDs are installed first] +``` ## Version >= 1.0.8 with 'ocelotDockerVersionTag' 1.0.8-182 @@ -39,4 +60,4 @@ When you overtake this deploy and rebrand repo to your network you have to recog ## Version 1.0.7 with 'ocelotDockerVersionTag' 1.0.7-171 -- No informations. +- No information. diff --git a/deployment/kubernetes/Backup.md b/deployment/kubernetes/Backup.md index 738cdcfee..227b5765f 100644 --- a/deployment/kubernetes/Backup.md +++ b/deployment/kubernetes/Backup.md @@ -17,7 +17,7 @@ $ kubectl config use-context $ kubectl -n default get pods -o wide ``` -The very first step is to put the webside into **maintenance mode**. +The very first step is to put the website into **maintenance mode**. ### Set Maintenance Mode From 82103939a246e5776b790377dd388a6d3bab7704 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Tue, 25 Oct 2022 18:06:52 +0200 Subject: [PATCH 75/81] Release v2.1.0-253 --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index af6b6dfab..e760e3dd1 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ocelot-social-branded", - "version": "2.0.0", - "ocelotDockerVersionTag": "2.0.0-250", + "version": "2.1.0", + "ocelotDockerVersionTag": "2.1.0-253", "dockerOrganisation": "ocelotsocialnetwork", "description": "ocelot.social Branded", "author": "ocelot.social Community", From 75b447493f3d821ee7075825789e2c9734d274f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Wed, 26 Oct 2022 13:48:03 +0200 Subject: [PATCH 76/81] Change owner data etc. --- branding/constants/metadata.js | 6 +++--- package.json | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/branding/constants/metadata.js b/branding/constants/metadata.js index 623612dab..62162bd94 100644 --- a/branding/constants/metadata.js +++ b/branding/constants/metadata.js @@ -2,8 +2,8 @@ export default { APPLICATION_NAME: 'yunite.me', APPLICATION_SHORT_NAME: 'yunite.me', - APPLICATION_DESCRIPTION: 'Yunite Community', - COOKIE_NAME: 'ocelot-social-token', - ORGANIZATION_NAME: 'Verein Corona-Reset', + APPLICATION_DESCRIPTION: 'yunite.me – Alternatives Netzwerk für eine freie und bunte Zukunft', + COOKIE_NAME: 'yunite-me-token', + ORGANIZATION_NAME: 'yunite – Verein für Vernetzung und Kooperation', ORGANIZATION_JURISDICTION: 'Switzerland', } diff --git a/package.json b/package.json index 5f6fa8663..7bbca6fe0 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,10 @@ { - "name": "yunite.net", + "name": "yunite.me", "version": "2.1.0", "ocelotDockerVersionTag": "2.1.0-253", "dockerOrganisation": "tirokk", - "description": "yunite.net Branded", - "author": "yunite.net Community", + "description": "yunite.me – Alternatives Netzwerk für eine freie und bunte Zukunft", + "author": "yunite – Verein für Vernetzung und Kooperation", "license": "MIT", "private": false, "repository": { From 7578e03c6db7b6e18c71015bb35596d0b91d523c Mon Sep 17 00:00:00 2001 From: ogerly Date: Fri, 28 Oct 2022 11:34:34 +0200 Subject: [PATCH 77/81] change hasttag search test color to #17b53f --- branding/assets/styles/imports/_branding.scss | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/branding/assets/styles/imports/_branding.scss b/branding/assets/styles/imports/_branding.scss index be8a2acd6..55fbcb81e 100644 --- a/branding/assets/styles/imports/_branding.scss +++ b/branding/assets/styles/imports/_branding.scss @@ -23,6 +23,10 @@ $color-locale-menu: $color-primary-light; color: $color-primary-light; } -.main-navigation .base-button { +.main-navigation .base-button { color: $color-primary-light; } + +#nav-search-box .hc-hashtag a{ + color: #17b53f; +} From de797e94f1e6f4e1dc509693e597719b1f92ca63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Fri, 28 Oct 2022 17:25:11 +0200 Subject: [PATCH 78/81] Add all new configuration files and properties --- TODO-next-update.md | 32 +++++++++++++++++++++------- branding/constants/donation.js | 1 + branding/constants/headerMenu.js | 1 + branding/constants/links.js | 36 +++++++++++++++++++++++--------- branding/constants/logos.js | 4 ++++ 5 files changed, 56 insertions(+), 18 deletions(-) create mode 100644 branding/constants/donation.js diff --git a/TODO-next-update.md b/TODO-next-update.md index 1c59a34f0..cab2528fa 100644 --- a/TODO-next-update.md +++ b/TODO-next-update.md @@ -2,21 +2,36 @@ When you overtake this deploy and rebrand repo to your network you have to recognize the following changes and doings … -## This Latest Version >= 2.0.0 with 'ocelotDockerVersionTag' 2.0.0-250 +## Version >= 2.2.0 with 'ocelotDockerVersionTag' 2.2.0-267 + +### Main Code PR – feat: 🍰 Footer And Header Links Configurable To Have External Link Target #5590 + +- You have to add property `target` to all array elements with value `url` to your preferred value in `branding/constants/headerMenu.js` originally in main code file `webapp/constants/headerMenu.js`. +- You have to move value of all `externalLink` to new property `externalLink.url` and set new property `externalLink.target` to your preferred value in `branding/constants/links.js` originally in main code file `webapp/constants/links.js`. + +### Main Code PR – feat: 🍰 Make Donation Progress Bar Color Configurable #5593 + +- You have to set `PROGRESS_BAR_COLOR_TYPE` in `branding/constants/donation.js` originally in main code file `webapp/constants/donation.js` to your preferred value. + +### Main Code PR – feat: 🍰 Header Logo Routing Update #5579 + +- You have to move value of `LOGO_HEADER_CLICK.externalLink` to new property `LOGO_HEADER_CLICK.externalLink.url` and set new property `LOGO_HEADER_CLICK.externalLink.target` to your preferred value in `branding/constants/logos.js` originally in main code file `webapp/constants/logos.js`. + +## Version >= 2.0.0 with 'ocelotDockerVersionTag' 2.0.0-250 ### Main Code PR – feat: 🍰 Implement LOGO_HEADER_CLICK As Configuration #5525 -- You have to set `LOGO_HEADER_CLICK` in `branding/constants/logos.js` originally in main code file `webapp/constants/logos.js` to your prevered value. +- You have to set `LOGO_HEADER_CLICK` in `branding/constants/logos.js` originally in main code file `webapp/constants/logos.js` to your preferred value. ### Main Code Issue – 🌟 [EPIC] Release v2.0.0 – Beta Test → Final #5547 -- You have to set `SHOW_GROUP_BUTTON_IN_HEADER` in `branding/constants/groups.js` originally in main code file `webapp/constants/groups.js` to your prevered value. +- You have to set `SHOW_GROUP_BUTTON_IN_HEADER` in `branding/constants/groups.js` originally in main code file `webapp/constants/groups.js` to your preferred value. -## This Latest Version >= 1.1.0 with 'ocelotDockerVersionTag' 1.1.0-205 +## Version >= 1.1.0 with 'ocelotDockerVersionTag' 1.1.0-205 ### Deployment/Rebranding PR – chore: 🍰 Release v1.1.0 - Implement Categories Again #63 -- You have to add the `CATEGORIES_ACTIVE` from the `deployment/kubernetes/values.template.yaml` to your `deployment/kubernetes/values.yaml` and set it to your prevered value. +- You have to add the `CATEGORIES_ACTIVE` from the `deployment/kubernetes/values.template.yaml` to your `deployment/kubernetes/values.yaml` and set it to your preferred value. - Make sure the correct categories are in your Neo4j database on the server. ## Version >= 1.0.9 with 'ocelotDockerVersionTag' 1.0.9-199 @@ -29,7 +44,7 @@ When you overtake this deploy and rebrand repo to your network you have to recog Upgrade the cert-manager, but install CRDs of the version 1.0.0-alpha to actually be able to upgrade ocelot. Then uninstall the legacy CRDs and install the correct ones. -``` +```bash # upgrade cert-manager to 1.9.1 > helm upgrade --set installCRDs=true --version 1.9.1 --namespace cert-manager cert-manager jetstack/cert-manager # apply legacy CRDs @@ -45,7 +60,8 @@ Upgrade the cert-manager, but install CRDs of the version 1.0.0-alpha to actuall Background: We had to upgrade cert-manager due to an external dependency - therefore we had to update cert-manager apiVersion `cert-manager.io/v1alpha2` to `cert-manager.io/v1`. The error occurring when not doing this is the following: -``` + +```bash Error: UPGRADE FAILED: unable to build kubernetes objects from current release manifest: [resource mapping not found for name: "letsencrypt-production" namespace: "" from "": no matches for kind "ClusterIssuer" in version "cert-manager.io/v1alpha2" ensure CRDs are installed first, resource mapping not found for name: "letsencrypt-staging" namespace: "" from "": no matches for kind "ClusterIssuer" in version "cert-manager.io/v1alpha2" ensure CRDs are installed first] @@ -55,7 +71,7 @@ ensure CRDs are installed first] ### PR – feat: 🍰 Configure Cookie Expire Time #43 -- You have to add the `COOKIE_EXPIRE_TIME` from the `deployment/kubernetes/values.template.yaml` to your `deployment/kubernetes/values.yaml` and set it to your prevered value. +- You have to add the `COOKIE_EXPIRE_TIME` from the `deployment/kubernetes/values.template.yaml` to your `deployment/kubernetes/values.yaml` and set it to your preferred value. - Correct `locale` cookie exploration time in data privacy. ## Version 1.0.7 with 'ocelotDockerVersionTag' 1.0.7-171 diff --git a/branding/constants/donation.js b/branding/constants/donation.js new file mode 100644 index 000000000..3e36ae9a8 --- /dev/null +++ b/branding/constants/donation.js @@ -0,0 +1 @@ +export const PROGRESS_BAR_COLOR_TYPE = 'gradient' // 'uni' is the other option diff --git a/branding/constants/headerMenu.js b/branding/constants/headerMenu.js index 6d0a0afad..aa87a598c 100644 --- a/branding/constants/headerMenu.js +++ b/branding/constants/headerMenu.js @@ -7,6 +7,7 @@ export default { // { // nameIdent: 'nameIdent', // url: 'https://ocelot.social', + // target: '_blank', // }, ], } diff --git a/branding/constants/links.js b/branding/constants/links.js index 9cbc605c0..7efac159f 100644 --- a/branding/constants/links.js +++ b/branding/constants/links.js @@ -3,7 +3,11 @@ import { defaultPageParamsPages } from '~/components/utils/InternalPages.js' const ORGANIZATION = defaultPageParamsPages.ORGANIZATION.overwrite({ - externalLink: 'https://ocelot.social', // if string is defined and not empty it's dominating + // if defined it's dominating + externalLink: { + url: 'https://ocelot.social', + target: '_blank', + }, internalPage: { // footerIdent: 'site.made', // localized string identifier, if undefined default is used @@ -16,8 +20,12 @@ const ORGANIZATION = defaultPageParamsPages.ORGANIZATION.overwrite({ }, }) const DONATE = defaultPageParamsPages.DONATE.overwrite({ - // we use 'ocelot-social.herokuapp.com' at the moment, because redirections of 'ocelot.social' subpages are not working correctly - externalLink: 'https://ocelot-social.herokuapp.com/donations', // if string is defined and not empty it's dominating + // if defined it's dominating + externalLink: { + // we use 'ocelot-social.herokuapp.com' at the moment, because redirections of 'ocelot.social' subpages are not working correctly + url: 'https://ocelot-social.herokuapp.com/donations', + target: '_blank', + }, internalPage: { // footerIdent: 'site.donate', // localized string identifier, if undefined default is used @@ -30,8 +38,12 @@ const DONATE = defaultPageParamsPages.DONATE.overwrite({ }, }) const IMPRINT = defaultPageParamsPages.IMPRINT.overwrite({ - // we use 'ocelot-social.herokuapp.com' at the moment, because redirections of 'ocelot.social' subpages are not working correctly - externalLink: 'https://ocelot-social.herokuapp.com/imprint', // if string is defined and not empty it's dominating + // if defined it's dominating + externalLink: { + // we use 'ocelot-social.herokuapp.com' at the moment, because redirections of 'ocelot.social' subpages are not working correctly + url: 'https://ocelot-social.herokuapp.com/imprint', + target: '_blank', + }, internalPage: { // footerIdent: 'site.imprint', // localized string identifier, if undefined default is used @@ -44,7 +56,7 @@ const IMPRINT = defaultPageParamsPages.IMPRINT.overwrite({ }, }) const TERMS_AND_CONDITIONS = defaultPageParamsPages.TERMS_AND_CONDITIONS.overwrite({ - // externalLink: null, // if string is defined and not empty it's dominating + // externalLink: null, // if defined it's dominating internalPage: { // footerIdent: 'site.termsAndConditions', // localized string identifier, if undefined default is used @@ -57,7 +69,7 @@ const TERMS_AND_CONDITIONS = defaultPageParamsPages.TERMS_AND_CONDITIONS.overwri }, }) const CODE_OF_CONDUCT = defaultPageParamsPages.CODE_OF_CONDUCT.overwrite({ - // externalLink: null, // if string is defined and not empty it's dominating + // externalLink: null, // if defined it's dominating internalPage: { // footerIdent: 'site.code-of-conduct', // localized string identifier, if undefined default is used @@ -70,7 +82,7 @@ const CODE_OF_CONDUCT = defaultPageParamsPages.CODE_OF_CONDUCT.overwrite({ }, }) const DATA_PRIVACY = defaultPageParamsPages.DATA_PRIVACY.overwrite({ - // externalLink: null, // if string is defined and not empty it's dominating + // externalLink: null, // if defined it's dominating internalPage: { // footerIdent: 'site.data-privacy', // localized string identifier, if undefined default is used @@ -83,7 +95,7 @@ const DATA_PRIVACY = defaultPageParamsPages.DATA_PRIVACY.overwrite({ }, }) const FAQ = defaultPageParamsPages.FAQ.overwrite({ - // externalLink: null, // if string is defined and not empty it's dominating + // externalLink: null, // if defined it's dominating internalPage: { // footerIdent: 'site.faq', // localized string identifier, if undefined default is used @@ -96,7 +108,11 @@ const FAQ = defaultPageParamsPages.FAQ.overwrite({ }, }) const SUPPORT = defaultPageParamsPages.SUPPORT.overwrite({ - externalLink: 'https://ocelot.social', // if string is defined and not empty it's dominating + // if defined it's dominating + externalLink: { + url: 'https://ocelot.social', + target: '_blank', + }, internalPage: { // footerIdent: 'site.support', // localized string identifier, if undefined default is used diff --git a/branding/constants/logos.js b/branding/constants/logos.js index 136918762..714e78a2c 100644 --- a/branding/constants/logos.js +++ b/branding/constants/logos.js @@ -4,6 +4,10 @@ export default { LOGO_HEADER_PATH: '/img/custom/logo-horizontal.svg', LOGO_HEADER_WIDTH: '130px', LOGO_HEADER_CLICK: { + // externalLink: { + // url: 'https://ocelot.social', + // target: '_blank', + // }, externalLink: null, internalPath: { to: { From 9790e1516601b01fe43df8a4e8234d67d7db7d3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Fri, 28 Oct 2022 17:26:17 +0200 Subject: [PATCH 79/81] Release v2.2.0-267 --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index e760e3dd1..9625605f2 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ocelot-social-branded", - "version": "2.1.0", - "ocelotDockerVersionTag": "2.1.0-253", + "version": "2.2.0", + "ocelotDockerVersionTag": "2.2.0-267", "dockerOrganisation": "ocelotsocialnetwork", "description": "ocelot.social Branded", "author": "ocelot.social Community", From 9389c3463fc08e29f3ba3cef285324648d2a98d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Fri, 28 Oct 2022 21:26:04 +0200 Subject: [PATCH 80/81] Adjust groups header menu --- branding/constants/headerMenu.js | 4 ++-- branding/locales/de.json | 2 +- branding/locales/en.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/branding/constants/headerMenu.js b/branding/constants/headerMenu.js index a1f65f75e..7bd827e54 100644 --- a/branding/constants/headerMenu.js +++ b/branding/constants/headerMenu.js @@ -5,8 +5,8 @@ export default { path: '/', }, { - nameIdent: 'yuniteRebranding.header.myGroups', - path: '/my-groups', + nameIdent: 'yuniteRebranding.header.groups', + path: '/groups', }, { nameIdent: 'yuniteRebranding.header.topics', diff --git a/branding/locales/de.json b/branding/locales/de.json index c27e5af24..e23567e69 100644 --- a/branding/locales/de.json +++ b/branding/locales/de.json @@ -2,7 +2,7 @@ "yuniteRebranding": { "header": { "about": "Über Yunite", - "myGroups": "Gruppen", + "groups": "Gruppen", "newsFeed": "Beiträge", "topics": "Themen" }, diff --git a/branding/locales/en.json b/branding/locales/en.json index 93609ee38..6d91e173c 100644 --- a/branding/locales/en.json +++ b/branding/locales/en.json @@ -2,7 +2,7 @@ "yuniteRebranding": { "header": { "about": "About Yunite", - "myGroups": "Groups", + "groups": "Groups", "newsFeed": "News Feed", "topics": "Topics" }, From 34b22936f3bb241c7898dad38143760625bc552c Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Thu, 1 Dec 2022 12:34:00 +0100 Subject: [PATCH 81/81] Update webapp.Dockerfile --- docker/webapp.Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docker/webapp.Dockerfile b/docker/webapp.Dockerfile index ba7cbffb0..a07695b9a 100644 --- a/docker/webapp.Dockerfile +++ b/docker/webapp.Dockerfile @@ -17,6 +17,7 @@ COPY branding/locales/html/ locales/html/ # COPY branding/locales/index.js locales/index.js COPY branding/locales/*.json locales/tmp/ COPY branding/assets/styles/imports/ assets/styles/imports/ +COPY branding/assets/fonts/ assets/fonts/ RUN apk add --no-cache bash jq @@ -50,6 +51,7 @@ COPY --from=build ${DOCKER_WORKDIR}/constants ./constants COPY --from=build ${DOCKER_WORKDIR}/static ./static COPY --from=build ${DOCKER_WORKDIR}/locales ./locales COPY --from=build ${DOCKER_WORKDIR}/assets/styles/imports ./assets/styles/imports +COPY --from=build ${DOCKER_WORKDIR}/assets/fonts ./assets/fonts # Copy package.json for script definitions (lock file should not be needed) COPY --from=build ${DOCKER_WORKDIR}/package.json ./package.json