mirror of
https://github.com/IT4Change/Ocelot-Social.git
synced 2025-12-13 07:45:56 +00:00
Merge branch '5059-epic-groups' of github.com:Yunite-Net/Yunite-Net-Ocelot-Social-Deploy-Rebranding into 13-groups-release-v1.1.1-231
# Conflicts: # package.json
This commit is contained in:
commit
2bfde2afc1
113
.github/workflows/publish.yml
vendored
113
.github/workflows/publish.yml
vendored
@ -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,90 @@ 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_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}-ocelot.social${OCELOT_DOCKER_VERSION_TAG}" >> $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-yunite-me
|
||||
##########################################################################
|
||||
# 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 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 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-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.
|
||||
# !!! 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 #############################################
|
||||
|
||||
@ -4,6 +4,10 @@ export default {
|
||||
name: 'Beiträge',
|
||||
path: '/#',
|
||||
},
|
||||
{
|
||||
name: 'Gruppen',
|
||||
path: '/my-groups',
|
||||
},
|
||||
{
|
||||
name: 'Über Yunite',
|
||||
url: 'https://yunite.org',
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user