Skip to content

Deploy Randomness

Deploy Randomness #85

name: Deploy Randomness
on:
workflow_dispatch:
env:
REGISTRY: ghcr.io
ORGANIZATION: happychaindevs
PM2_PROCESS_NAME: randomness
RANDOMNESS_DB_PATH: /home/randomness/randomness.sqlite
TXM_DB_PATH: /home/randomness/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 randomness.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/randomness/build/*,node_modules/better-sqlite3,node_modules/bindings,node_modules/file-uri-to-path"
target: /home/deployer/randomness
strip_components: 1
rm: true
- name: Deploy randomness 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/randomness
mv /home/deployer/randomness /tmp
sudo -u randomness bash -c '
rm -rf /home/randomness/build
rm -rf /home/randomness/node_modules
cp -r /tmp/randomness/randomness/build /home/randomness/build
mkdir -p /home/randomness/node_modules
cp -r /tmp/randomness/better-sqlite3 /home/randomness/node_modules/better-sqlite3
cp -r /tmp/randomness/bindings /home/randomness/node_modules/bindings
cp -r /tmp/randomness/file-uri-to-path /home/randomness/node_modules/file-uri-to-path
cd /home/randomness
rm -f .env
cat > .env <<-EOF
export PRIVATE_KEY=${{ secrets.RANDOMNESS_PRIVATE_KEY }}
export TXM_DB_PATH=${{ env.TXM_DB_PATH }}
export RANDOMNESS_DB_PATH=${{ env.RANDOMNESS_DB_PATH }}
export ${{vars.RANDOMNESS_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/randomness