Skip to content

Commit 7bab3dc

Browse files
feat: migrate to GitHub Actions and enhance deployment workflow
- Complete migration from Drone CI to GitHub Actions - Add comprehensive CI/CD workflows (SDK CI, DApp CI, deployment, releases) - Implement sconification workflow with smart tagging (dev-/prod- prefixes) - Configure release-please for monorepo with alpha version support - Update deployment scripts for GitHub Actions compatibility - Fix E2E tests and TypeScript errors - Upgrade dependencies and development tools - Remove legacy Drone CI support and clean up configurations
1 parent 01f2c10 commit 7bab3dc

File tree

7 files changed

+3290
-10660
lines changed

7 files changed

+3290
-10660
lines changed

.drone.yml

Lines changed: 0 additions & 133 deletions
Original file line numberDiff line numberDiff line change
@@ -288,139 +288,6 @@ steps:
288288
password:
289289
from_secret: nexus-password
290290

291-
---
292-
#pipeline to publish dapp contract on iexec
293-
kind: pipeline
294-
type: docker
295-
name: deploy-dapp-contract
296-
297-
trigger:
298-
event:
299-
- promote
300-
target:
301-
- dapp-dev
302-
- dapp-prod
303-
branch:
304-
- main
305-
306-
steps:
307-
- name: get scone fingerprint (dev)
308-
image: iexechub/web3telegram-dapp:dev-${DRONE_COMMIT}-sconify-5.7.6-v15-production
309-
commands:
310-
- SCONE_HASH=1 node > deployment-dapp/.scone-fingerprint
311-
when:
312-
target:
313-
- dapp-dev
314-
315-
- name: get scone fingerprint (prod)
316-
# /!\: maintain the version here
317-
image: iexechub/web3telegram-dapp:0.0.2-alpha-sconify-5.7.6-v15-production
318-
commands:
319-
- SCONE_HASH=1 node > deployment-dapp/.scone-fingerprint
320-
when:
321-
target:
322-
- dapp-prod
323-
324-
- name: install deps
325-
image: node:18.19
326-
pull: always
327-
commands:
328-
- npm ci
329-
- cd node_modules/whitelist-smart-contract
330-
- npm install --save-dev ts-node
331-
- cd ../../deployment-dapp
332-
- npm ci
333-
334-
- name: deploy dapp contract
335-
image: node:18.19
336-
pull: always
337-
environment:
338-
DRONE_DEPLOY_TO: $DRONE_DEPLOY_TO
339-
WALLET_PRIVATE_KEY_DEV:
340-
from_secret: web3telegram-dapp-owner-dev-privatekey
341-
WALLET_PRIVATE_KEY_PROD:
342-
from_secret: web3telegram-dapp-owner-prod-privatekey
343-
commands:
344-
- cd deployment-dapp
345-
- npm run deploy-dapp
346-
347-
- name: push dapp secret
348-
image: node:18.19
349-
pull: always
350-
environment:
351-
DRONE_DEPLOY_TO: $DRONE_DEPLOY_TO
352-
WALLET_PRIVATE_KEY_DEV:
353-
from_secret: web3telegram-dapp-owner-dev-privatekey
354-
WALLET_PRIVATE_KEY_PROD:
355-
from_secret: web3telegram-dapp-owner-prod-privatekey
356-
TELEGRAM_BOT_TOKEN_DEV:
357-
from_secret: telegram-bot-token-dev
358-
TELEGRAM_BOT_TOKEN_PROD:
359-
from_secret: telegram-bot-token-prod
360-
commands:
361-
- cd deployment-dapp
362-
- npm run push-dapp-secret
363-
364-
- name: publish free sell order
365-
image: node:18.19
366-
pull: always
367-
environment:
368-
DRONE_DEPLOY_TO: $DRONE_DEPLOY_TO
369-
WALLET_PRIVATE_KEY_DEV:
370-
from_secret: web3telegram-dapp-owner-dev-privatekey
371-
WALLET_PRIVATE_KEY_PROD:
372-
from_secret: web3telegram-dapp-owner-prod-privatekey
373-
PRICE: '0'
374-
VOLUME: '1000000000'
375-
commands:
376-
- cd deployment-dapp
377-
- npm run publish-sell-order
378-
379-
- name: add resource to whitelist dev
380-
image: node:18.12.1
381-
environment:
382-
WALLET_PRIVATE_KEY:
383-
from_secret: deployer-dev-privatekey # dev whitelist smart contract deployer
384-
CONTRACT_ADDRESS:
385-
from_secret: web3telegram-whitelist-dev-address
386-
commands:
387-
- cd node_modules/whitelist-smart-contract
388-
- export ADDRESS_TO_ADD=$(cat ../../deployment-dapp/.app-address) && npm run addResourceToWhitelist
389-
when:
390-
target:
391-
- dapp-dev
392-
branch:
393-
- main
394-
395-
- name: add resource to whitelist prod
396-
image: node:18.12.1
397-
environment:
398-
WALLET_PRIVATE_KEY:
399-
from_secret: deployer-prod-privatekey
400-
CONTRACT_ADDRESS:
401-
from_secret: web3telegram-whitelist-prod-address
402-
commands:
403-
- cd node_modules/whitelist-smart-contract
404-
- export ADDRESS_TO_ADD=$(cat ../../deployment-dapp/.app-address) && npm run addResourceToWhitelist
405-
when:
406-
target:
407-
- dapp-prod
408-
branch:
409-
- main
410-
411-
- name: configure ENS
412-
image: node:18.19
413-
pull: always
414-
environment:
415-
DRONE_DEPLOY_TO: $DRONE_DEPLOY_TO
416-
WALLET_PRIVATE_KEY_DEV:
417-
from_secret: web3telegram-dapp-owner-dev-privatekey
418-
WALLET_PRIVATE_KEY_PROD:
419-
from_secret: web3telegram-dapp-owner-prod-privatekey
420-
commands:
421-
- cd deployment-dapp
422-
- npm run configure-ens
423-
424291
---
425292
# pipeline to publish sell order
426293
kind: pipeline

.github/workflows/dapp-deploy.yml

Lines changed: 60 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,25 +10,71 @@ on:
1010
options:
1111
- dapp-dev
1212
- dapp-prod
13-
image-tag:
14-
description: 'Tag for the dapp image to sconify'
15-
required: true
16-
type: string
17-
default: 'latest'
1813
sconify-version:
1914
description: 'Version of the sconify image to use'
2015
type: string
21-
default: '5.7.6-v15'
16+
default: '5.9.0-v15'
2217

2318
env:
2419
DEPLOY_ENVIRONMENT: ${{ inputs.environment }}
2520

2621
jobs:
22+
build-and-push:
23+
runs-on: ubuntu-latest
24+
outputs:
25+
image-name: ${{ steps.set-outputs.outputs.image-name }}
26+
image-tag: ${{ steps.set-outputs.outputs.image-tag }}
27+
steps:
28+
- name: Checkout code
29+
uses: actions/checkout@v4
30+
31+
- name: Set up Docker Buildx
32+
uses: docker/setup-buildx-action@v3
33+
34+
- name: Login to DockerHub
35+
uses: docker/login-action@v3
36+
with:
37+
username: ${{ secrets.DOCKERHUB_USERNAME }}
38+
password: ${{ secrets.DOCKERHUB_PAT }}
39+
40+
- name: Get dapp version
41+
id: version
42+
run: |
43+
VERSION=$(node -p "require('./dapp/package.json').version")
44+
echo "version=$VERSION" >> $GITHUB_OUTPUT
45+
echo "dapp-version=$VERSION"
46+
47+
- name: Set image tag
48+
id: image-tag
49+
run: |
50+
if [ "${{ inputs.environment }}" = "dapp-dev" ]; then
51+
echo "image-tag=dev-${{ steps.version.outputs.version }}" >> $GITHUB_OUTPUT
52+
else
53+
echo "image-tag=${{ steps.version.outputs.version }}" >> $GITHUB_OUTPUT
54+
fi
55+
56+
- name: Build and push Docker image
57+
id: build
58+
uses: docker/build-push-action@v5
59+
with:
60+
context: ./dapp
61+
push: true
62+
tags: iexechub/web3telegram-dapp:${{ steps.image-tag.outputs.image-tag }}
63+
cache-from: type=gha
64+
cache-to: type=gha,mode=max
65+
66+
- name: Set outputs
67+
id: set-outputs
68+
run: |
69+
echo "image-name=iexechub/web3telegram-dapp" >> $GITHUB_OUTPUT
70+
echo "image-tag=${{ steps.image-tag.outputs.image-tag }}" >> $GITHUB_OUTPUT
71+
2772
sconify:
28-
uses: iExecBlockchainComputing/github-actions-workflows/.github/workflows/[email protected]
73+
needs: build-and-push
74+
uses: iExecBlockchainComputing/github-actions-workflows/.github/workflows/[email protected]
2975
with:
30-
image-name: product/web3telegram-dapp
31-
image-tag: ${{ inputs.image-tag }}
76+
image-name: ${{ needs.build-and-push.outputs.image-name }}
77+
image-tag: ${{ needs.build-and-push.outputs.image-tag }}
3278
sconify-debug: false
3379
sconify-prod: true
3480
docker-registry: docker.io
@@ -43,12 +89,12 @@ jobs:
4389
heap: 1G
4490
dlopen: 1
4591
mprotect: 1
46-
docker-username: ${{ vars.DOCKERHUB_USERNAME }}
47-
scontain-username: ${{ secrets.SCONTAIN_REGISTRY_USERNAME }}
4892
secrets:
4993
docker-password: ${{ secrets.DOCKERHUB_PAT }}
5094
scontain-password: ${{ secrets.SCONTAIN_REGISTRY_PAT }}
5195
scone-signing-key: ${{ secrets.SCONIFY_SIGNING_PRIVATE_KEY }}
96+
docker-username: ${{ secrets.DOCKERHUB_USERNAME }}
97+
scontain-username: ${{ secrets.SCONTAIN_REGISTRY_USERNAME }}
5298

5399
display-sconify-results:
54100
runs-on: ubuntu-latest
@@ -60,7 +106,7 @@ jobs:
60106
echo "" >> $GITHUB_STEP_SUMMARY
61107
62108
echo "### Production Image" >> $GITHUB_STEP_SUMMARY
63-
echo "- **Image**: ${{ needs.sconify.outputs.prod-image }}" >> $GITHUB_STEP_SUMMARY
109+
echo "- **Image Tag**: ${{ needs.sconify.outputs.prod-image-tag }}" >> $GITHUB_STEP_SUMMARY
64110
echo "- **Checksum**: ${{ needs.sconify.outputs.prod-checksum }}" >> $GITHUB_STEP_SUMMARY
65111
echo "- **MrEnclave**: ${{ needs.sconify.outputs.prod-mrenclave }}" >> $GITHUB_STEP_SUMMARY
66112
echo "" >> $GITHUB_STEP_SUMMARY
@@ -70,7 +116,7 @@ jobs:
70116
71117
deploy-dapp:
72118
runs-on: ubuntu-latest
73-
needs: sconify
119+
needs: [build-and-push, sconify]
74120
steps:
75121
- name: Checkout code
76122
uses: actions/checkout@v4
@@ -101,6 +147,7 @@ jobs:
101147
WALLET_PRIVATE_KEY_PROD: ${{ secrets.WEB3TELEGRAM_DAPP_OWNER_PROD_PRIVATEKEY }}
102148
DOCKER_IMAGE_CHECKSUM_DEV: ${{ needs.sconify.outputs.prod-checksum }}
103149
DOCKER_IMAGE_CHECKSUM_PROD: ${{ needs.sconify.outputs.prod-checksum }}
150+
SCONIFIED_IMAGE_TAG: ${{ needs.sconify.outputs.prod-image-tag }}
104151
run: |
105152
cd deployment-dapp
106153
npm run deploy-dapp

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,5 @@ name: release-please
1212

1313
jobs:
1414
release-please:
15-
uses: iExecBlockchainComputing/github-actions-workflows/.github/workflows/release-please.yml@release-please-v2.0.0
15+
uses: iExecBlockchainComputing/github-actions-workflows/.github/workflows/release-please.yml@release-please-v2.1.0
1616
secrets: inherit

0 commit comments

Comments
 (0)