Skip to content

Commit 10bae16

Browse files
refactor(ci): optimize deployment workflows
1 parent 352eb54 commit 10bae16

File tree

3 files changed

+80
-206
lines changed

3 files changed

+80
-206
lines changed

.github/workflows/dapp-deploy.yml

Lines changed: 29 additions & 106 deletions
Original file line numberDiff line numberDiff line change
@@ -6,33 +6,39 @@ on:
66
- 'web3mail-dapp-v*'
77

88
jobs:
9-
get-version:
9+
extract-tag:
1010
runs-on: ubuntu-latest
11+
outputs:
12+
clean_tag: ${{ steps.tag.outputs.clean_tag }}
1113
steps:
12-
- name: Checkout code
13-
uses: actions/checkout@v4
14-
15-
- name: Set up Node.js
16-
uses: actions/setup-node@v4
17-
with:
18-
node-version: '20'
19-
20-
- name: Set publish version
21-
id: set-publish-version
14+
- name: Extract tag
15+
id: tag
2216
run: |
23-
GIT_TAG="${{ github.ref_name }}"
24-
VERSION=$(echo "$GIT_TAG" | sed 's/web3mail-dapp-v//')
25-
echo "VERSION=${VERSION}" | tee -a $GITHUB_OUTPUT
26-
echo "GIT_TAG=${GIT_TAG}" | tee -a $GITHUB_OUTPUT
27-
outputs:
28-
version: ${{ steps.set-publish-version.outputs.VERSION }}
17+
TAG=${GITHUB_REF#refs/tags/web3mail-dapp-v}
18+
echo "clean_tag=${TAG}" >> $GITHUB_OUTPUT
19+
20+
build-push:
21+
needs: extract-tag
22+
uses: iExecBlockchainComputing/github-actions-workflows/.github/workflows/docker-build.yml@main
23+
with:
24+
image-name: 'product/web3mail-dapp'
25+
image-tag: ${{ needs.extract-tag.outputs.clean_tag }}
26+
push: true
27+
dockerfile: 'dapp/Dockerfile'
28+
security-scan: false
29+
hadolint: false
30+
registry: 'docker.io'
31+
context: 'dapp'
32+
secrets:
33+
username: ${{ secrets.REGIS_USERNAME }}
34+
password: ${{ secrets.REGIS_PASSWORD }}
2935

30-
# Single sconification job for both environments
3136
sconify:
32-
uses: iExecBlockchainComputing/github-actions-workflows/.github/workflows/[email protected]
37+
needs: [extract-tag, build-push]
38+
uses: iExecBlockchainComputing/github-actions-workflows/.github/workflows/[email protected]
3339
with:
3440
image-name: product/web3mail-dapp
35-
image-tag: ${{ github.ref_name }}
41+
image-tag: ${{ needs.extract-tag.outputs.clean_tag }}
3642
sconify-debug: false
3743
sconify-prod: true
3844
docker-registry: docker.io
@@ -47,97 +53,13 @@ jobs:
4753
heap: 1G
4854
dlopen: 1
4955
mprotect: 1
50-
docker-username: ${{ vars.DOCKERHUB_USERNAME }}
51-
scontain-username: ${{ vars.SCONTAIN_REGISTRY_USERNAME }}
5256
secrets:
57+
docker-username: ${{ secrets.DOCKERHUB_USERNAME }}
5358
docker-password: ${{ secrets.DOCKERHUB_PAT }}
59+
scontain-username: ${{ secrets.SCONTAIN_REGISTRY_USERNAME }}
5460
scontain-password: ${{ secrets.SCONTAIN_REGISTRY_PAT }}
5561
scone-signing-key: ${{ secrets.SCONIFY_SIGNING_PRIVATE_KEY }}
5662

57-
# Deploy to Dev Environment
58-
deploy-dapp-dev:
59-
runs-on: ubuntu-latest
60-
needs: sconify
61-
steps:
62-
- name: Checkout code
63-
uses: actions/checkout@v4
64-
65-
- name: Setup Node.js
66-
uses: actions/setup-node@v4
67-
with:
68-
node-version: '20'
69-
cache: 'npm'
70-
71-
- name: Install dependencies
72-
run: |
73-
npm ci
74-
cd node_modules/whitelist-smart-contract
75-
npm install --save-dev ts-node
76-
cd ../../deployment-dapp
77-
npm ci
78-
79-
- name: Create scone fingerprint file (dev)
80-
run: |
81-
MRENCLAVE="${{ needs.sconify.outputs.prod-mrenclave }}"
82-
echo "$MRENCLAVE" > deployment-dapp/.scone-fingerprint
83-
84-
- name: Deploy dapp contract (dev)
85-
env:
86-
DEPLOY_ENVIRONMENT: dapp-dev
87-
WALLET_PRIVATE_KEY_DEV: ${{ secrets.WEB3MAIL_DAPP_OWNER_DEV_PRIVATEKEY }}
88-
DOCKER_IMAGE_CHECKSUM_DEV: ${{ needs.sconify.outputs.prod-checksum }}
89-
run: |
90-
cd deployment-dapp
91-
npm run deploy-dapp
92-
93-
- name: Push dapp secret (dev)
94-
env:
95-
DEPLOY_ENVIRONMENT: dapp-dev
96-
WALLET_PRIVATE_KEY_DEV: ${{ secrets.WEB3MAIL_DAPP_OWNER_DEV_PRIVATEKEY }}
97-
MJ_APIKEY_PUBLIC: ${{ secrets.MJ_APIKEY_PUBLIC }}
98-
MJ_APIKEY_PRIVATE: ${{ secrets.MJ_APIKEY_PRIVATE }}
99-
MJ_SENDER: ${{ secrets.MJ_SENDER }}
100-
MAILGUN_APIKEY: ${{ secrets.MAILGUN_APIKEY }}
101-
WEB3MAIL_WHITELISTED_APPS_DEV: ${{ secrets.WEB3MAIL_WHITELISTED_APPS_DEV }}
102-
run: |
103-
cd deployment-dapp
104-
npm run push-dapp-secret
105-
106-
- name: Publish free sell order (dev)
107-
env:
108-
DEPLOY_ENVIRONMENT: dapp-dev
109-
WALLET_PRIVATE_KEY_DEV: ${{ secrets.WEB3MAIL_DAPP_OWNER_DEV_PRIVATEKEY }}
110-
PRICE: '0'
111-
VOLUME: '1000000000'
112-
run: |
113-
cd deployment-dapp
114-
npm run publish-sell-order
115-
116-
- name: Add resource to whitelist (dev)
117-
env:
118-
WALLET_PRIVATE_KEY: ${{ secrets.WEB3MAIL_DAPP_OWNER_DEV_PRIVATEKEY }}
119-
CONTRACT_ADDRESS: ${{ secrets.WEB3MAIL_WHITELIST_DEV_ADDRESS }}
120-
run: |
121-
cd node_modules/whitelist-smart-contract
122-
export ADDRESS_TO_ADD=$(cat ../../deployment-dapp/.app-address) && npm run addResourceToWhitelist
123-
124-
- name: Configure ENS (dev)
125-
env:
126-
DEPLOY_ENVIRONMENT: dapp-dev
127-
WALLET_PRIVATE_KEY_DEV: ${{ secrets.WEB3MAIL_DAPP_OWNER_DEV_PRIVATEKEY }}
128-
run: |
129-
cd deployment-dapp
130-
npm run configure-ens
131-
132-
- name: Upload deployment artifacts (dev)
133-
uses: actions/upload-artifact@v4
134-
with:
135-
name: deployment-artifacts-dev
136-
path: |
137-
deployment-dapp/.app-address
138-
deployment-dapp/.scone-fingerprint
139-
140-
# Deploy to Prod Environment
14163
deploy-dapp-prod:
14264
runs-on: ubuntu-latest
14365
needs: sconify
@@ -169,6 +91,7 @@ jobs:
16991
DEPLOY_ENVIRONMENT: dapp-prod
17092
WALLET_PRIVATE_KEY_PROD: ${{ secrets.WEB3MAIL_DAPP_OWNER_PROD_PRIVATEKEY }}
17193
DOCKER_IMAGE_CHECKSUM_PROD: ${{ needs.sconify.outputs.prod-checksum }}
94+
DOCKER_IMAGE_PROD_TAG: ${{ needs.sconify.outputs.prod-image-tag }}
17295
run: |
17396
cd deployment-dapp
17497
npm run deploy-dapp

0 commit comments

Comments
 (0)