Deploy Randomness #85
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |