Skip to content

Merge pull request #556 from dappforce/fix/change-mainnet-domain #555

Merge pull request #556 from dappforce/fix/change-mainnet-domain

Merge pull request #556 from dappforce/fix/change-mainnet-domain #555

Workflow file for this run

name: build and deploy grillchat in production
on:
push:
branches:
- main
- storybook
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
front_build:
name: build & Push Docker image to Docker Hub
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Extract branch name
shell: bash
run: echo "name=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV
id: extract_branch
- name: Prepare
id: prep
run: |
echo "image=dappforce/subsocial-web-app:grillchat-${{ env.name }}-$(echo $GITHUB_SHA | head -c7)" >> $GITHUB_ENV
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@master
- name: Login to DockerHub
uses: docker/login-action@master
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Cache Docker layers
uses: actions/cache@v4
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-single-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-single-buildx
- name: Build production image
if: ${{ github.ref == 'refs/heads/main' }}
uses: docker/build-push-action@v5
with:
context: .
builder: ${{ steps.buildx.outputs.name }}
file: docker/Dockerfile
push: true
build-args: |
GH_NEXTAUTH_URL=https://grill.chat
GH_NEXT_PUBLIC_APP_ID=1456
GH_NEXT_PUBLIC_NOTIFICATION_APP_ID=BECyoVsDLEgsOj9MvhoetL3YGYZVCE5RzhADmBugpp0hu7QBV_xG8veiT_qAFxF9S8qXKhPvaPiD5oMrdWrFNB0
GH_NEXT_PUBLIC_SUBSTRATE_URL=https://xsocial.subsocial.network
GH_NEXT_PUBLIC_SUBSTRATE_WSS=wss://xsocial.subsocial.network
GH_NEXT_PUBLIC_DATAHUB_QUERY_URL=https://data-hub.subsocial.network/graphql
GH_NEXT_PUBLIC_DATAHUB_SUBSCRIPTION_URL=wss://data-hub.subsocial.network/graphql-ws
GH_DATAHUB_QUEUE_URL=https://queue-data-hub.subsocial.network/graphql
GH_NEXT_PUBLIC_OFFCHAIN_POSTING_HUBS=1386,1399
GH_NEXT_PUBLIC_SPACE_IDS=1002,1005,1010,1011,1023,1030,1772
GH_NOTIFICATIONS_URL=https://grill-notifications.subsocial.network/graphql
GH_NEXT_PUBLIC_AMP_ID=a05f8e7876f03e8bffeb039125345da1
GH_NEXT_PUBLIC_SQUID_URL=https://squid.subsquid.io/xsocial/graphql
GH_NEXT_PUBLIC_COMMUNITY_HUB_ID=1030
GH_NEXT_PUBLIC_GA_ID=G-FT28TL1W3M
GH_IPFS_WRITE_URL=http://new-ipfs-cluster:5001
GH_IPFS_PIN_URL=http://new-ipfs-cluster:9094
GH_NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=grill-web-push.firebaseapp.com
GH_NEXT_PUBLIC_FIREBASE_PROJECT_ID=grill-web-push
GH_NEXT_PUBLIC_FIREBASE_API_KEY=AIzaSyCdu_lvl18590HFoAXTysuKStaJJkaA4h4
GH_NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=grill-web-push.appspot.com
GH_NEXT_PUBLIC_FIREBASE_MESSAGING_ID=762898090466
GH_NEXT_PUBLIC_FIREBASE_APP_ID=1:762898090466:web:2a09d26c3bab706b95d1bb
target: runner
tags: |
${{ env.image }}
dappforce/subsocial-web-app:grillchat-master-latest
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache-new
- name: Build storybook image
if: ${{ github.ref == 'refs/heads/storybook' }}
uses: docker/build-push-action@v5
with:
context: .
builder: ${{ steps.buildx.outputs.name }}
file: docker/storybook-Dockerfile
push: true
build-args: |
GH_NEXT_PUBLIC_SPACE_IDS=1002,1005,1010,1011,1023,1030,1772
GH_NEXT_PUBLIC_MODERATION_URL=https://moderation.subsocial.network/graphql
GH_NOTIFICATIONS_URL=https://grill-notifications.subsocial.network/graphql
GH_NOTIFICATIONS_TOKEN=${{ secrets.NOTIFICATIONS_AUTH_TOKEN }}
GH_NEXT_PUBLIC_AMP_ID=81d0fc2014ce14eed5a475efe9a44035
GH_NEXT_PUBLIC_SQUID_URL=https://squid.subsquid.io/xsocial/graphql
GH_NEXT_PUBLIC_GA_ID=G-FT28TL1W3M
GH_IPFS_WRITE_URL=https://gw-seattle.crustcloud.io
GH_IPFS_PIN_URL=https://pin.crustcloud.io/psa
GH_CRUST_IPFS_AUTH=${{ secrets.CRUST_IPFS_AUTH }}
GH_SUBSOCIAL_PROMO_SECRET_HEX=${{ secrets.SUBSOCIAL_PROMO_SECRET_HEX }}
GH_USER_ID_SALT=${{ secrets.USER_ID_SALT }}
GH_SERVER_MNEMONIC=${{ secrets.SERVER_ENERGY_MNEMONIC }}
GH_NEXT_PUBLIC_APP_ID=1456
GH_SERVER_DISCUSSION_CREATOR_MNEMONIC=${{ secrets.SERVER_DISCUSSION_CREATOR_MNEMONIC }}
GH_COVALENT_API_KEY=${{ secrets.COVALENT_API_KEY }}
GH_NEXT_PUBLIC_SUBSTRATE_URL=https://xsocial.subsocial.network
GH_NEXT_PUBLIC_SUBSTRATE_WSS=wss://xsocial.subsocial.network
GH_NEXT_PUBLIC_DATAHUB_QUERY_URL=https://data-hub.subsocial.network/graphql
GH_NEXT_PUBLIC_DATAHUB_SUBSCRIPTION_URL=wss://data-hub.subsocial.network/graphql-ws
GH_DATAHUB_QUEUE_URL=https://queue-data-hub.subsocial.network/graphql
GH_DATAHUB_QUEUE_TOKEN=${{ secrets.DATAHUB_QUEUE_TOKEN }}
GH_NEXT_PUBLIC_OFFCHAIN_POSTING_HUBS=1386
GH_TWITTER_CLIENT_ID=${{ secrets.TWITTER_CLIENT_ID }}
GH_TWITTER_CLIENT_SECRET=${{ secrets.TWITTER_CLIENT_SECRET }}
GH_NEXTAUTH_SECRET=${{ secrets.NEXTAUTH_SECRET }}
GH_NEXTAUTH_URL=https://grill.chat
target: storybook
tags: |
${{ env.image }}
dappforce/subsocial-web-app:grillchat-storybook-master-latest
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache-new
- name: Move cache
run: |
rm -rf /tmp/.buildx-cache
mv /tmp/.buildx-cache-new /tmp/.buildx-cache
mainnet_front_build:
name: build & Push mainnet Docker image to Docker Hub
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Extract branch name
shell: bash
run: echo "name=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV
id: extract_branch
- name: Mainnet Prepare
id: mainprep
run: |
echo "mainimage=dappforce/subsocial-web-app:mainnet-grillchat-${{ env.name }}-$(echo $GITHUB_SHA | head -c7)" >> $GITHUB_ENV
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@master
- name: Login to DockerHub
uses: docker/login-action@master
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Cache Docker layers
uses: actions/cache@v4
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-single-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-single-buildx
- name: Build mainnet production image
if: ${{ github.ref == 'refs/heads/main' }}
uses: docker/build-push-action@v5
with:
context: .
builder: ${{ steps.buildx.outputs.name }}
file: docker/mainnet-Dockerfile
push: true
build-args: |
GH_NEXTAUTH_URL=https://grillapp.net/c/api/auth
GH_NEXT_PUBLIC_BASE_PATH=/c
GH_NEXT_PUBLIC_SUBSTRATE_URL=https://para.subsocial.network
GH_NEXT_PUBLIC_SUBSTRATE_WSS=wss://para.subsocial.network
GH_NEXT_PUBLIC_DATAHUB_QUERY_URL=https://sub-data-hub.subsocial.network/graphql
GH_NEXT_PUBLIC_DATAHUB_SUBSCRIPTION_URL=wss://sub-data-hub.subsocial.network/graphql-ws
GH_DATAHUB_QUEUE_URL=https://sub-queue-data-hub.subsocial.network/graphql
GH_NEXT_PUBLIC_APP_ID=1
GH_NEXT_PUBLIC_NOTIFICATION_APP_ID=BECyoVsDLEgsOj9MvhoetL3YGYZVCE5RzhADmBugpp0hu7QBV_xG8veiT_qAFxF9S8qXKhPvaPiD5oMrdWrFNB0
GH_NEXT_PUBLIC_OFFCHAIN_POSTING_HUBS=12662
GH_NEXT_PUBLIC_SPACE_IDS=12659,12660,12455,12662
GH_NEXT_PUBLIC_AMP_ID=a05f8e7876f03e8bffeb039125345da1
GH_NEXT_PUBLIC_SQUID_URL=https://squid.subsquid.io/subsocial/graphql
GH_NEXT_PUBLIC_COMMUNITY_HUB_ID=12455
GH_NEXT_PUBLIC_GA_ID=G-FT28TL1W3M
target: runner
tags: |
${{ env.mainimage }}
dappforce/subsocial-web-app:mainnet-grillchat-master-latest
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache-new
- name: Move cache
run: |
rm -rf /tmp/.buildx-cache
mv /tmp/.buildx-cache-new /tmp/.buildx-cache
prod_deploy:
name: prod-deploy
needs: front_build
runs-on: ubuntu-latest
if: ${{ github.ref == 'refs/heads/main' }}
steps:
- name: Checkout main
uses: actions/checkout@v4
- name: Extract branch name
shell: bash
run: echo "name=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV
id: extract_branch
- name: Install doctl
uses: digitalocean/action-doctl@v2
with:
token: ${{ secrets.DIGITALOCEAN_ACCESS_TOKEN_PROD }}
- name: Save DigitalOcean kubeconfig with short-lived credentials
run: doctl kubernetes cluster kubeconfig save --expiry-seconds 600 ${{ secrets.K8S_PROD }}
- name: Update deploy file
run: TAG=${{ env.name }}-$(echo $GITHUB_SHA | head -c7) && sed -i 's|<IMAGE>|dappforce/subsocial-web-app:grillchat-'${TAG}'|' $GITHUB_WORKSPACE/deployment/production/deployment.yaml
- name: Deploy to DigitalOcean Kubernetes
run: kubectl apply -f $GITHUB_WORKSPACE/deployment/production/
- name: Verify deployment
run: kubectl -n sub-back rollout status deployment/grillchat
- name: Add more replica
run: kubectl -n sub-back scale --replicas=2 deployment/grillchat
mainnet-prod_deploy:
name: mainnet-prod-deploy
needs: mainnet_front_build
runs-on: ubuntu-latest
if: ${{ github.ref == 'refs/heads/main' }}
steps:
- name: Checkout main
uses: actions/checkout@v4
- name: Extract branch name
shell: bash
run: echo "name=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV
id: extract_branch
- name: Install doctl
uses: digitalocean/action-doctl@v2
with:
token: ${{ secrets.DIGITALOCEAN_ACCESS_TOKEN_PROD }}
- name: Save DigitalOcean kubeconfig with short-lived credentials
run: doctl kubernetes cluster kubeconfig save --expiry-seconds 600 ${{ secrets.K8S_PROD }}
- name: Update deploy file
run: TAG=${{ env.name }}-$(echo $GITHUB_SHA | head -c7) && sed -i 's|<IMAGE>|dappforce/subsocial-web-app:mainnet-grillchat-'${TAG}'|' $GITHUB_WORKSPACE/deployment/mainnet-production/deployment.yaml
- name: Deploy to DigitalOcean Kubernetes
run: kubectl apply -f $GITHUB_WORKSPACE/deployment/mainnet-production/
- name: Verify deployment
run: kubectl -n sub-back rollout status deployment/mainnet-grillchat
- name: Add more replica
run: kubectl -n sub-back scale --replicas=2 deployment/mainnet-grillchat
front-bk-prod-deploy:
name: bk-prod-deploy
needs: front_build
runs-on: ubuntu-latest
if: ${{ github.ref == 'refs/heads/main' }}
steps:
- name: Checkout main
uses: actions/checkout@v4
- name: Extract branch name
shell: bash
run: echo "name=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV
id: extract_branch
- name: executing remote ssh commands
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.BACKUP_HOST }}
username: ${{ secrets.BACKUP_USERNAME }}
key: ${{ secrets.BACKUP_KEY }}
port: ${{ secrets.BACKUP_PORT }}
script: |
cd /root/grillchat
./update.sh
storybook_deploy:
name: storybook-prod-deploy
needs: front_build
runs-on: ubuntu-latest
if: ${{ github.ref == 'refs/heads/storybook' }}
steps:
- name: Checkout main
uses: actions/checkout@v4
- name: Extract branch name
shell: bash
run: echo "name=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV
id: extract_branch
- name: Install doctl
uses: digitalocean/action-doctl@v2
with:
token: ${{ secrets.DIGITALOCEAN_ACCESS_TOKEN_PROD }}
- name: Save DigitalOcean kubeconfig with short-lived credentials
run: doctl kubernetes cluster kubeconfig save --expiry-seconds 600 ${{ secrets.K8S_PROD }}
- name: Update deploy file
run: TAG=${{ env.name }}-$(echo $GITHUB_SHA | head -c7) && sed -i 's|<IMAGE>|dappforce/subsocial-web-app:grillchat-'${TAG}'|' $GITHUB_WORKSPACE/deployment/storybook/deployment.yaml
- name: Deploy to DigitalOcean Kubernetes
run: kubectl apply -f $GITHUB_WORKSPACE/deployment/storybook/
- name: Verify deployment
run: kubectl -n sub-back rollout status deployment/grillchat-storybook
- name: Verify deployment
run: kubectl -n sub-back rollout status deployment/grillchat-storybook