Skip to content

Deploy Randomness

Deploy Randomness #90

name: Deploy Randomness
on:
workflow_dispatch:
env:
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@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
- uses: oven-sh/setup-bun@735343b667d3e6f658f44d0eca948eb6282f2b76 # v2.0.2
with:
bun-version: '1.2.4'
- name: Install Foundry
uses: foundry-rs/foundry-toolchain@82dee4ba654bd2146511f85f0d013af94670c4de # v1.4.0
- name: Build code
run: |
make randomness.build
- name: Copy files to server
uses: appleboy/scp-action@917f8b81dfc1ccd331fef9e2d61bdc6c8be94634 # 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@25ce8cbbcb08177468c7ff7ec5cbfa236f9341e1 # 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