Skip to content

Fix GetUserTickets function signature #201

Fix GetUserTickets function signature

Fix GetUserTickets function signature #201

Workflow file for this run

name: Build, Test and Deploy to Prod
on:
push:
branches:
- main
env:
SQLX_OFFLINE: true
jobs:
build:
runs-on: ubuntu-latest
outputs:
image_tag: ${{ steps.tag.outputs.tag }}
steps:
- name: Checkout code
uses: actions/checkout@v2
# Create unique tag from git commit + build number
- name: Generate unique tag
id: tag
run: |
SHORT_SHA=$(git rev-parse --short HEAD)
TAG="build-${{ github.run_number }}-${SHORT_SHA}"
echo "tag=$TAG" >> $GITHUB_OUTPUT
echo "Generated tag: $TAG"
- name: Cache dependencies
uses: actions/cache@v3
with:
path: |
~/.cargo
server/target/
key: ${{ runner.os }}-cargo-${{ hashFiles('server/Cargo.lock') }}
restore-keys: ${{ runner.os }}-cargo-
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
- name: Build and test code
working-directory: ./server
run: |
cargo build --verbose
cargo test --verbose
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Log in to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build and push Docker images with unique tag
uses: docker/bake-action@v2.3.0
env:
IMAGE_TAG: ${{ steps.tag.outputs.tag }}
with:
files: ./server/docker-bake.hcl
push: true
set: |
*.cache-from=type=gha
*.cache-to=type=gha,mode=max
- name: Build and push indexer with unique tag
uses: docker/build-push-action@v4
with:
context: ./the_last_indexer
push: true
tags: |
paymesh/the-last-indexer:${{ steps.tag.outputs.tag }}
paymesh/the-last-indexer:latest
deploy:
needs: build
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Log in to Docker Hub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Install sshpass
run: sudo apt-get install sshpass
- name: Copy docker-compose.yml to droplet
run: sshpass -v -p ${{ secrets.DROPLET_PASSWORD }} scp -o StrictHostKeyChecking=no server/docker-compose.yml root@${{ vars.DROPLET_IP }}:~
- name: Deploy with environment variables
uses: appleboy/ssh-action@master
env:
IMAGE_TAG: ${{ needs.build.outputs.image_tag }}
with:
host: ${{ vars.DROPLET_IP }}
username: root
password: ${{ secrets.DROPLET_PASSWORD }}
envs: IMAGE_TAG
script: |
cd ~
# Create environment file
cat > .env <<EOL
RPC_URL=${{ secrets.RPC_URL }}
PRIVATE_KEY=${{ secrets.PRIVATE_KEY }}
PUBLIC_KEY=${{ secrets.PUBLIC_KEY }}
CONTRACT_ADDRESS=${{ secrets.CONTRACT_ADDRESS }}
DATABASE_URL=${{ secrets.DATABASE_URL }}
DATABASE_URL_USER=${{ secrets.DATABASE_URL_USER }}
DATABASE_URL_PASSWORD=${{ secrets.DATABASE_URL_PASSWORD }}
DATABASE_URL_DB=${{ secrets.DATABASE_URL_DB }}
DNA_TOKEN=${{ secrets.DNA_TOKEN }}
API_URL=${{ secrets.API_URL }}
CROWD_FUNDING_CONTRACT_ADDRESS=${{ secrets.CROWD_FUNDING_CONTRACT_ADDRESS }}
GENESIS_ADMIN_EMAIL=${{ secrets.GENESIS_ADMIN_EMAIL }}
GENESIS_ADMIN_PASSWORD=${{ secrets.GENESIS_ADMIN_PASSWORD }}
JWT_SECRET=${{ secrets.JWT_SECRET }}
JWT_EXPIRED_IN=${{ secrets.JWT_EXPIRED_IN }}
JWT_MAXAGE=${{ secrets.JWT_MAXAGE }}
PAYMESH_API_KEY=${{ secrets.PAYMESH_API_KEY }}
IMAGE_TAG=${IMAGE_TAG}
EOL
echo "Deploying with image tag: ${IMAGE_TAG}"
# Stop, pull new images, and restart
docker compose --env-file .env stop
docker compose --env-file .env pull
docker compose --env-file .env up -d
# Cleanup old images - keep last 5 versions
echo "Cleaning up old images..."
docker images "paymesh/server" --format "{{.Repository}}:{{.Tag}}" | \
grep -v latest | \
sort -r | \
tail -n +6 | \
xargs -r docker rmi || true
# Remove dangling images
docker image prune -f
echo "Deployment complete!"
echo "Running containers:"
docker ps
# - name: Copy docker-compose.yml to paymesh indexer droplet
# run: sshpass -v -p ${{ secrets.PAYMESH_DROPLET_PASSWORD }} scp -o StrictHostKeyChecking=no the_last_indexer/docker-compose.yml root@${{ vars.PAYMESH_DROPLET_IP }}:~
# - name: Deploy with environment variables
# uses: appleboy/ssh-action@master
# with:
# host: ${{ vars.PAYMESH_DROPLET_IP }}
# username: root
# password: ${{ secrets.PAYMESH_DROPLET_PASSWORD }}
# script: |
# cd ~
# cat > .env <<EOL
# DNA_TOKEN=${{ secrets.DNA_TOKEN }}
# API_URL=${{ secrets.API_URL }}
# PAYMESH_API_KEY=${{ secrets.PAYMESH_API_KEY }}
# EOL
# docker compose --env-file .env stop
# docker compose --env-file .env pull
# docker compose --env-file .env up -d