Merge pull request #1023 from dm3-org/web-push-production #506
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: deploy | |
on: | |
push: | |
branches: | |
- testing | |
- develop | |
jobs: | |
messenger-web-deploy: | |
environment: ${{ github.ref == 'refs/heads/develop' && 'staging' || 'testing' }} | |
runs-on: ubuntu-latest | |
env: | |
environment_name: ${{ github.ref == 'refs/heads/develop' && 'staging' || 'testing' }} | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions/setup-node@v3 | |
with: | |
registry-url: 'https://npm.pkg.github.com' | |
node-version: 22.0.0 | |
cache: 'yarn' | |
- name: Print environment name | |
run: echo $environment_name | |
- name: Declare some variables | |
shell: bash | |
run: | | |
echo "sha_short=$(git rev-parse --short "$GITHUB_SHA")" >> "$GITHUB_ENV" | |
echo "branch=$(echo ${GITHUB_REF#refs/heads/})" >> "$GITHUB_ENV" | |
echo "now=$(date +'%Y-%m-%dT%H:%M:%S')" >> $GITHUB_ENV | |
- name: Prepare SSH | |
run: | | |
mkdir ~/.ssh | |
echo "${{ secrets.HOST_SSH_PUBLIC_KEY }}" > ~/.ssh/known_hosts | |
echo "${{ secrets.DO_SSH_KEY }}" > ./ssh-key | |
chmod 600 ./ssh-key | |
- name: Create .env file | |
env: | |
TARGET_HOST: ${{ secrets.HOST_DOMAIN}} | |
run: | | |
echo "REACT_APP_ADDR_ENS_SUBDOMAIN=${{ secrets.ADDR_ENS_SUBDOMAIN}}" >> ./.env.react | |
echo "REACT_APP_BACKEND=http://${{ secrets.HOST_DOMAIN}}/api" >> ./.env.react | |
echo "REACT_APP_DEFAULT_DELIVERY_SERVICE=${{ secrets.DEFAULT_DELIVERY_SERVICE}}" >> ./.env.react | |
echo "REACT_APP_DEFAULT_SERVICE=http://${{ secrets.HOST_DOMAIN}}/api" >> ./.env.react | |
echo "REACT_APP_MAINNET_PROVIDER_RPC=${{ secrets.RPC }}" >> ./.env.react | |
echo "REACT_APP_PROFILE_BASE_URL=http://${{ secrets.HOST_DOMAIN}}/api" >> ./.env.react | |
echo "REACT_APP_RESOLVER_BACKEND=http://${{ secrets.HOST_DOMAIN}}/resolver-handler" >> ./.env.react | |
echo "REACT_APP_USER_ENS_SUBDOMAIN=${{ secrets.USER_ENS_SUBDOMAIN}}" >> ./.env.react | |
echo "REACT_APP_WALLET_CONNECT_PROJECT_ID=${{ secrets.REACT_APP_WALLET_CONNECT_PROJECT_ID }}" >> ./.env.react | |
echo "REACT_APP_COMMIT_HASH=${{ env.sha_short }}" >> ./.env.react | |
echo "REACT_APP_BRANCH=${{ env.branch }}" >> ./.env.react | |
echo "REACT_APP_BUILD_TIME=${{ env.now }}" >> ./.env.react | |
echo "REACT_APP_MAINNET_PROVIDER_RPC=${{ secrets.MAINNET_PROVIDER_URL}}" >> ./.env.react | |
echo "REACT_APP_CHAIN_ID=${{ vars.CHAIN_ID }}" >> ./.env.react | |
cat ./.env.react >> ./.env | |
echo "RESOLVER_ADDR=0x88c8cC822095cdE6F92c8d20311C8e7dE6A98694" >> ./.env | |
echo "SIGNING_PUBLIC_KEY=${{ secrets.SIGNING_PUBLIC_KEY }}" >> ./.env | |
echo "SIGNING_PRIVATE_KEY=${{ secrets.SIGNING_PRIVATE_KEY }}" >> ./.env | |
echo "SIGNER_PRIVATE_KEY=${{ secrets.SIGNER_PRIVATE_KEY }}" >> ./.env | |
echo "SPAM_PROTECTION=${{ secrets.SPAM_PROTECTION }}" >> ./.env | |
echo "ENCRYPTION_PUBLIC_KEY=${{ secrets.ENCRYPTION_PUBLIC_KEY }}" >> ./.env | |
echo "ENCRYPTION_PRIVATE_KEY=${{ secrets.ENCRYPTION_PRIVATE_KEY }}" >> ./.env | |
echo "RPC=${{ secrets.RPC }}" >> ./.env | |
echo "DATABASE_URL=${{ secrets.DATABASE_URL }}" >> ./.env | |
envsubst '${SSL_CERTIFICATE_BASE_LOC} ${TLS_CERTIFICATE_LOCATION} ${TARGET_HOST}' < ./docker/nginx.conf > ./nginx.conf | |
cat ./.env | |
- name: Prepare docker build environment | |
shell: bash | |
run: | | |
cp ./.env.react packages/messenger-demo/.env | |
cp ./.env.react packages/messenger-web/.env | |
docker build --progress=plain -t build -f ./docker/DockerfileBuild . | |
docker build --progress=plain -t base -f ./docker/DockerfileBase . | |
- name: Build offchain-resolver docker image | |
shell: bash | |
run: | | |
docker build --progress=plain -f ./docker/DockerfilePackages --tag dm3-offchain-resolver:latest --build-arg="PACKAGE=offchain-resolver" . | |
docker save -o ./dm3-offchain-resolver.tar dm3-offchain-resolver:latest | |
- name: Build messenger-web docker image | |
shell: bash | |
run: | | |
docker build --progress=plain -f ./docker/DockerfilePackages --tag dm3-messenger-web:latest --build-arg="PACKAGE=messenger-web" . | |
docker save -o ./dm3-messenger-web.tar dm3-messenger-web:latest | |
- name: Build backend docker image | |
shell: bash | |
run: | | |
docker build --progress=plain -f ./docker/DockerfilePackages --tag dm3-backend:latest --build-arg="PACKAGE=backend" . | |
docker save -o ./dm3-backend.tar dm3-backend:latest | |
- name: Build delivery-service docker image | |
shell: bash | |
run: | | |
docker build --progress=plain -f ./docker/DockerfilePackages --tag dm3-delivery-service:latest --build-arg="PACKAGE=delivery-service" . | |
docker save -o ./dm3-delivery-service.tar dm3-delivery-service:latest | |
- name: Send files to server | |
run: | | |
ssh -i ./ssh-key root@${{ secrets.HOST_DOMAIN}} "\ | |
rm /home/app/*.tar || true" | |
rsync -avz -e 'ssh -i ./ssh-key' ./.env app@${{ secrets.HOST_DOMAIN}}:/home/app/dm3 | |
rsync -avz -e 'ssh -i ./ssh-key' ./dm3-*.tar app@${{ secrets.HOST_DOMAIN}}:/home/app/dm3 | |
rsync -avz -e 'ssh -i ./ssh-key' ./nginx.conf app@${{ secrets.HOST_DOMAIN}}:/home/app/dm3 | |
rsync -avz -e 'ssh -i ./ssh-key' ./docker/staging/docker-compose.yml app@${{ secrets.HOST_DOMAIN}}:/home/app/dm3 | |
- name: Stop docker on server | |
run: | | |
ssh -i ./ssh-key app@${{ secrets.HOST_DOMAIN}} "\ | |
cd dm3 && docker compose down && docker system prune -af" | |
ssh -i ./ssh-key root@${{ secrets.HOST_DOMAIN}} "\ | |
systemctl restart docker.service" | |
- name: Load docker images | |
run: | | |
ssh -i ./ssh-key app@${{ secrets.HOST_DOMAIN}} "\ | |
cd dm3 && ls |grep -E 'dm3-.*tar' | xargs --no-run-if-empty -L 1 docker load -i; \ | |
rm dm3-*.tar || true" | |
- name: Configure Firewall | |
run: | | |
ssh -i ./ssh-key root@${{ secrets.HOST_DOMAIN}} "\ | |
ufw allow from 172.18.0.1/16 proto tcp to ${{ secrets.HOST_DOMAIN}} port 80" | |
- name: Start docker on server | |
run: | | |
ssh -i ./ssh-key app@${{ secrets.HOST_DOMAIN}} "\ | |
cd dm3 && docker compose --env-file .env up -d" |