From 86ea1a710c11976dc64da5b6209141177015ec1e Mon Sep 17 00:00:00 2001 From: GabrielMartinezRodriguez Date: Wed, 23 Apr 2025 13:01:48 +0200 Subject: [PATCH 1/9] feat: deploy faucet --- .github/workflows/deploy-faucet.yml | 93 +++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 .github/workflows/deploy-faucet.yml diff --git a/.github/workflows/deploy-faucet.yml b/.github/workflows/deploy-faucet.yml new file mode 100644 index 0000000000..1d8b414fd3 --- /dev/null +++ b/.github/workflows/deploy-faucet.yml @@ -0,0 +1,93 @@ +name: Deploy Faucet + +on: + workflow_dispatch: + pull_request: + +env: + REGISTRY: ghcr.io + ORGANIZATION: happychaindevs + PM2_PROCESS_NAME: faucet + FAUCET_DB_PATH: /home/faucet/faucet.sqlite + TXM_DB_PATH: /home/faucet/txm.sqlite + + +jobs: + deploy: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + + steps: + - name: Checkout code + uses: actions/checkout@v4.2.0 + + - uses: oven-sh/setup-bun@v2 + with: + bun-version: latest + + - name: Install Foundry + uses: foundry-rs/foundry-toolchain@v1 + + - name: Build code + run: | + make faucet.build + + - name: Copy files to server + uses: appleboy/scp-action@v0.1.7 + with: + host: ${{ secrets.SERVER_HOST }} + username: ${{ secrets.SERVER_USERNAME }} + key: ${{ secrets.SERVER_KEY }} + port: ${{ secrets.SERVER_PORT }} + source: "apps/faucet/build/*,node_modules/better-sqlite3,node_modules/bindings,node_modules/file-uri-to-path" + target: /home/deployer/faucet + strip_components: 1 + rm: true + + - name: Deploy faucet to server + uses: appleboy/ssh-action@v1.1.0 + with: + host: ${{ secrets.SERVER_HOST }} + username: ${{ secrets.SERVER_USERNAME }} + key: ${{ secrets.SERVER_KEY }} + port: ${{ secrets.SERVER_PORT }} + # We copy better-sqlite3, bindings, and file-uri-to-path separately because the bundled file does not include + # better-sqlite3 and its dependencies + script: | + chmod -R o+rX /home/deployer/faucet + mv /home/deployer/faucet /tmp + sudo -u faucet bash -c ' + rm -rf /home/faucet/build + rm -rf /home/faucet/node_modules + cp -r /tmp/faucet/faucet/build /home/faucet/build + + mkdir -p /home/faucet/node_modules + cp -r /tmp/faucet/better-sqlite3 /home/faucet/node_modules/better-sqlite3 + cp -r /tmp/faucet/bindings /home/faucet/node_modules/bindings + cp -r /tmp/faucet/file-uri-to-path /home/faucet/node_modules/file-uri-to-path + + cd /home/faucet + + rm -f .env + + cat > .env <<-EOF + export PRIVATE_KEY=${{ secrets.FAUCET_PRIVATE_KEY }} + export TXM_DB_PATH=${{ env.TXM_DB_PATH }} + export FAUCET_DB_PATH=${{ env.FAUCET_DB_PATH }} + export TURNSTILE_SECRET=${{ secrets.FAUCET_TURNSTILE_SECRET }} + export ${{vars.FAUCET_ENV}} + EOF + + npm rebuild + + pm2 delete ${{ env.PM2_PROCESS_NAME }} + + source .env && node ./build/migrate.es.js + + source .env && pm2 start ./build/index.es.js \ + --name ${{ env.PM2_PROCESS_NAME }} + pm2 save + ' + rm -rf /tmp/faucet \ No newline at end of file From c98a29faf7dea7920675aca69f9cb492eb918f9c Mon Sep 17 00:00:00 2001 From: GabrielMartinezRodriguez Date: Wed, 23 Apr 2025 13:07:15 +0200 Subject: [PATCH 2/9] chore: added faucet.build command --- Makefile | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Makefile b/Makefile index 7a28799b93..e9dc2d2475 100644 --- a/Makefile +++ b/Makefile @@ -369,6 +369,11 @@ randomness-monitor.build: setup.ts shared.build cd apps/randomness-monitor && make build .PHONY: randomness-monitor.build +faucet.build: setup.ts shared.build + cd packages/txm && make build + cd apps/faucet && make build +.PHONY: faucet.build + txm.build: setup.ts shared.build cd packages/txm && make build .PHONY: txm.build From 2a75a4d6b0217d726a8b2bc31fe683cf380a3220 Mon Sep 17 00:00:00 2001 From: GabrielMartinezRodriguez Date: Wed, 23 Apr 2025 14:27:19 +0200 Subject: [PATCH 3/9] chore: parse .env --- .github/workflows/deploy-faucet.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/deploy-faucet.yml b/.github/workflows/deploy-faucet.yml index 1d8b414fd3..9ff5a28fbe 100644 --- a/.github/workflows/deploy-faucet.yml +++ b/.github/workflows/deploy-faucet.yml @@ -80,6 +80,8 @@ jobs: export ${{vars.FAUCET_ENV}} EOF + dos2unix .env + npm rebuild pm2 delete ${{ env.PM2_PROCESS_NAME }} From 018ee084d663b469dd06762c182dc08ec2c34de1 Mon Sep 17 00:00:00 2001 From: GabrielMartinezRodriguez Date: Wed, 23 Apr 2025 15:13:35 +0200 Subject: [PATCH 4/9] chore: remove deploy faucet on pull request --- .github/workflows/deploy-faucet.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/deploy-faucet.yml b/.github/workflows/deploy-faucet.yml index 9ff5a28fbe..32b03db847 100644 --- a/.github/workflows/deploy-faucet.yml +++ b/.github/workflows/deploy-faucet.yml @@ -2,7 +2,6 @@ name: Deploy Faucet on: workflow_dispatch: - pull_request: env: REGISTRY: ghcr.io From 29891d4c442f29967fcc7fb73d87a514feee4c4e Mon Sep 17 00:00:00 2001 From: GabrielMartinezRodriguez Date: Thu, 24 Apr 2025 18:43:37 +0200 Subject: [PATCH 5/9] chore: deploy on pr --- .github/workflows/deploy-faucet.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/deploy-faucet.yml b/.github/workflows/deploy-faucet.yml index 32b03db847..9ff5a28fbe 100644 --- a/.github/workflows/deploy-faucet.yml +++ b/.github/workflows/deploy-faucet.yml @@ -2,6 +2,7 @@ name: Deploy Faucet on: workflow_dispatch: + pull_request: env: REGISTRY: ghcr.io From 47a30812ad02b1a1a3cb394c576287f307d9dc67 Mon Sep 17 00:00:00 2001 From: GabrielMartinezRodriguez Date: Thu, 1 May 2025 15:43:18 +0200 Subject: [PATCH 6/9] chore: remove deploy faucet on prs --- .github/workflows/deploy-faucet.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/deploy-faucet.yml b/.github/workflows/deploy-faucet.yml index 9ff5a28fbe..32b03db847 100644 --- a/.github/workflows/deploy-faucet.yml +++ b/.github/workflows/deploy-faucet.yml @@ -2,7 +2,6 @@ name: Deploy Faucet on: workflow_dispatch: - pull_request: env: REGISTRY: ghcr.io From 3adb32cf14bc19df323aaec78d2498c075b7242e Mon Sep 17 00:00:00 2001 From: GabrielMartinezRodriguez Date: Mon, 5 May 2025 12:23:25 +0200 Subject: [PATCH 7/9] chore: force redeploy --- apps/faucet/.env.example | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/faucet/.env.example b/apps/faucet/.env.example index 4babc9199b..2ea80f7ef1 100644 --- a/apps/faucet/.env.example +++ b/apps/faucet/.env.example @@ -16,5 +16,6 @@ FAUCET_DB_PATH=faucet.sqlite # Rate-limit window size (seconds) FAUCET_RATE_LIMIT_WINDOW_SECONDS=3600 + # Maximum faucet requests per user within the window FAUCET_RATE_LIMIT_MAX_REQUESTS=10 \ No newline at end of file From 3bfd3a2549a1a8c355d4582c34cf76dc5331c424 Mon Sep 17 00:00:00 2001 From: GabrielMartinezRodriguez Date: Mon, 5 May 2025 12:25:03 +0200 Subject: [PATCH 8/9] chore: force deploy on pr --- .github/workflows/deploy-faucet.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/deploy-faucet.yml b/.github/workflows/deploy-faucet.yml index 32b03db847..9ff5a28fbe 100644 --- a/.github/workflows/deploy-faucet.yml +++ b/.github/workflows/deploy-faucet.yml @@ -2,6 +2,7 @@ name: Deploy Faucet on: workflow_dispatch: + pull_request: env: REGISTRY: ghcr.io From fcb5086739efe498a957df6188b3c78face5ce44 Mon Sep 17 00:00:00 2001 From: GabrielMartinezRodriguez Date: Mon, 5 May 2025 12:35:00 +0200 Subject: [PATCH 9/9] chore(faucet): remove deploy on pr --- .github/workflows/deploy-faucet.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/deploy-faucet.yml b/.github/workflows/deploy-faucet.yml index 9ff5a28fbe..32b03db847 100644 --- a/.github/workflows/deploy-faucet.yml +++ b/.github/workflows/deploy-faucet.yml @@ -2,7 +2,6 @@ name: Deploy Faucet on: workflow_dispatch: - pull_request: env: REGISTRY: ghcr.io