@@ -30,29 +30,95 @@ jobs:
3030 run : npm run build
3131
3232 deploy :
33- name : Deploy to Vercel
34- needs : validate
33+ name : Deploy to branch
3534 runs-on : ubuntu-latest
35+ needs : validate
3636 steps :
37- - uses : actions/checkout@v3
37+ - uses : actions/checkout@v4
3838
39- - name : Install Vercel CLI
40- run : npm install --global vercel@latest
39+ - name : Login to registry
40+ uses : docker/login-action@v3
41+ with :
42+ registry : ${{ secrets.DOCKER_REGISTRY }}
43+ username : ${{ secrets.DOCKER_LOGIN }}
44+ password : ${{ secrets.DOCKER_PASSWD }}
4145
42- - name : Pull Vercel Environment Information
43- run : vercel pull --yes --environment=${{ github.ref_name == 'master' && 'production' || 'preview' }} --token=${{ secrets.VERCEL_TOKEN }}
44- env :
45- VERCEL_ORG_ID : ${{ secrets.VERCEL_TEAM_ID }}
46- VERCEL_PROJECT_ID : ${{ secrets.VERCEL_PROJECT_ID }}
46+ - name : Build and push Docker image
47+ uses : docker/build-push-action@v5
48+ with :
49+ context : .
50+ push : true
51+ tags : ${{ secrets.DOCKER_REGISTRY }}/dashboard:${{ github.ref_name }}
4752
48- - name : Build Project Artifacts
49- run : vercel build ${{ github.ref_name == 'master' && '--prod' || '' }} --token=${{ secrets.VERCEL_TOKEN }}
53+ - name : Configure SSH
54+ run : |
55+ mkdir -p ~/.ssh/
56+ echo "$SSH_KEY" > ~/.ssh/staging.key
57+ chmod 600 ~/.ssh/staging.key
58+ cat >>~/.ssh/config <<END
59+ Host staging
60+ HostName $SSH_HOST
61+ User $SSH_USER
62+ Port $SSH_PORT
63+ IdentityFile ~/.ssh/staging.key
64+ StrictHostKeyChecking no
65+ END
5066 env :
51- VERCEL_ORG_ID : ${{ secrets.VERCEL_TEAM_ID }}
52- VERCEL_PROJECT_ID : ${{ secrets.VERCEL_PROJECT_ID }}
67+ SSH_USER : ${{ secrets.SSH_USER }}
68+ SSH_KEY : ${{ secrets.SSH_KEY }}
69+ SSH_HOST : ${{ secrets.SSH_HOST }}
70+ SSH_PORT : ${{ secrets.SSH_PORT }}
5371
54- - name : Deploy Project Artifacts to Vercel
55- run : vercel deploy ${{ github.ref_name == 'master' && '--prod' || '--prebuilt' }} --token=${{ secrets.VERCEL_TOKEN }}
72+ - name : Update branch environment
5673 env :
57- VERCEL_ORG_ID : ${{ secrets.VERCEL_TEAM_ID }}
58- VERCEL_PROJECT_ID : ${{ secrets.VERCEL_PROJECT_ID }}
74+ DOCKER_BRANCH : ${{ github.ref_name }}
75+ DOCKER_REGISTRY : ${{ secrets.DOCKER_REGISTRY }}
76+ DOCKER_LOGIN : ${{ secrets.DOCKER_LOGIN }}
77+ DOCKER_PASSWD : ${{ secrets.DOCKER_PASSWD }}
78+ DOMAIN_URL : ${{ secrets.DOMAIN_URL }}
79+ THEGRAPH_API_KEY : ${{ secrets.THEGRAPH_API_KEY }}
80+ REALTOKEN_COMMUNITY_API_KEY : ${{ secrets.REALTOKEN_COMMUNITY_API_KEY }}
81+ RPC_URLS_ETH_MAINNET : ${{ secrets.RPC_URLS_ETH_MAINNET }}
82+ RPC_URLS_GNOSIS_MAINNET : ${{ secrets.RPC_URLS_GNOSIS_MAINNET }}
83+ MATOMO_ID_PROD : ${{ secrets.MATOMO_ID_PROD }}
84+ MATOMO_ID_PREPROD : ${{ secrets.MATOMO_ID_PREPROD }}
85+ MATOMO_ID_DEVELOP : ${{ secrets.MATOMO_ID_DEVELOP }}
86+ run : |
87+ if [[ "$DOCKER_BRANCH" == "master" ]]; then
88+ export MATOMO_SITE_ID="$MATOMO_ID_PROD"
89+ export HOSTNAME="dashboard.$DOMAIN_URL"
90+ elif [[ "$DOCKER_BRANCH" == "preprod" ]]; then
91+ export MATOMO_SITE_ID="$MATOMO_ID_PREPROD"
92+ export HOSTNAME="dashboard.$DOCKER_BRANCH.$DOMAIN_URL"
93+ else
94+ export MATOMO_SITE_ID="$MATOMO_ID_DEVELOP"
95+ export HOSTNAME="dashboard.$DOCKER_BRANCH.$DOMAIN_URL"
96+ fi
97+
98+ ssh staging <<EOF
99+ set -euxo pipefail
100+ export DOCKER_BRANCH="$DOCKER_BRANCH"
101+ export DOCKER_REGISTRY="$DOCKER_REGISTRY"
102+
103+ cd /var/docker/dashboard-v2/\$DOCKER_BRANCH
104+ git pull origin \$DOCKER_BRANCH
105+ docker compose --file docker-compose-branch.yml pull
106+ docker login -u "$DOCKER_LOGIN" -p "$DOCKER_PASSWD" \$DOCKER_REGISTRY
107+
108+ THEGRAPH_API_KEY="$THEGRAPH_API_KEY" \
109+ REALTOKEN_COMMUNITY_API_KEY="$REALTOKEN_COMMUNITY_API_KEY" \
110+ REALTOKEN_COMMUNITY_API_BASE="https://api.$DOMAIN_URL" \
111+ REALTOKEN_COMMUNITY_API_VERSION='v1' \
112+ REALTOKEN_COMMUNITY_API_GET_ALLTOKENS='token' \
113+ REALTOKEN_COMMUNITY_API_HISTORY_BASE="https://history.api.$DOMAIN_URL/" \
114+ PITSBI_API_BASE="https://api.pitsbi.io/" \
115+ PITSBI_API_VERSION='api' \
116+ PITSBI_API_GET_LASTUPDATE='last_get_realTokens_communityDashboard' \
117+ PITSBI_API_GET_ALLTOKENS='realTokens_communityDashboard' \
118+ MATOMO_URL="https://data.$DOMAIN_URL/" \
119+ MATOMO_SITE_ID="$MATOMO_SITE_ID" \
120+ RPC_URLS_ETH_MAINNET="$RPC_URLS_ETH_MAINNET" \
121+ RPC_URLS_GNOSIS_MAINNET="$RPC_URLS_GNOSIS_MAINNET" \
122+ HOSTNAME="$HOSTNAME" \
123+ docker compose --project-name \$DOCKER_BRANCH-dashboard --file docker-compose-branch.yml up -d
124+ EOF
0 commit comments