diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..fda1ef2 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,99 @@ +name: deploy + +on: + push: + branches: + - master + +jobs: + 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: Deploy defined version to stage.ocelot.social cluster at DigitalOcean + runs-on: ubuntu-latest + env: + SECRET: ${{ secrets.SECRET }} + CONFIGURATION: "this" + steps: + - name: Checkout code + uses: actions/checkout@v3 + - name: Decrypt .env + run: gpg --quiet --batch --yes --decrypt --passphrase="${SECRET}" --output .env .env.enc + - name: Load .env + uses: aarcangeli/load-dotenv@v1.0.0 + with: + quiet: false + - name: Checkout Ocelot code + uses: actions/checkout@v3 + with: + repository: 'Ocelot-Social-Community/Ocelot-Social' + ref: '${OCELOT_SOCIAL_TAG}' + path: 'ocelot/' + - name: Checkout code + uses: actions/checkout@v3 + with: + path: 'ocelot/deployment/configurations/${CONFIGURATION}' + - name: Decrypt all secrets + run: ocelot/deployment/scripts/secrets.decrypt.sh + - name: Upgrade Cluster + run: ocelot/deployment/scripts/cluster.upgrade.sh + + # ########################################################################## + # # 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:$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 + # # 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 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 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: | + # 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" \ No newline at end of file diff --git a/kubeconfig.yaml.enc b/kubeconfig.yaml.enc index 91d9d02..46d3c7e 100644 Binary files a/kubeconfig.yaml.enc and b/kubeconfig.yaml.enc differ diff --git a/kubernetes/dns.values.yaml.enc b/kubernetes/dns.values.yaml.enc index 1e88a66..67b52d1 100644 --- a/kubernetes/dns.values.yaml.enc +++ b/kubernetes/dns.values.yaml.enc @@ -1,2 +1,3 @@ -  8dI^1ն|M!d֦[Bi*HAKU+B -;LFpfɑ³R6hU0q?sV) ݍV)l_ta1♧hxˆB(V'b%AHuJ…Y:z=(MML b 0\2,q|~Pp*;IIcskVC THЖ%,Ykj';sk*>mU7as;w9<]ɶQAJ f@TKȤ}wJ,L@f \ No newline at end of file +  nTm0e6 Zf2S_2'!ܙ f qm-j{cKvc!mN'=wҽ|J [ɯ,=|?$W == +2pVkH"t5h|*+F*"yɄ)Upi6pϢ8Jkɉ *Zm-;*ezO\.吳3&Vj=!a&'c|Օ&ve^(+"dǛ%: +/Ͳn&yg찪į[ƦQZ \ No newline at end of file diff --git a/kubernetes/values.yaml.enc b/kubernetes/values.yaml.enc index 388a8c4..384c4e6 100644 Binary files a/kubernetes/values.yaml.enc and b/kubernetes/values.yaml.enc differ