Skip to content

feat: docker publish GitHub actions (#1) #1

feat: docker publish GitHub actions (#1)

feat: docker publish GitHub actions (#1) #1

name: Build, Test, and Publish Docker Image
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
# Step 1: Checkout the repository
- name: Checkout repository
uses: actions/checkout@v3
# Step 2: Set up Docker Buildx
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
# Step 3: Set up Docker Compose
- name: Set up Docker Compose
run: sudo apt-get install docker-compose
# Step 4: Build and start services using Docker Compose
- name: Build and Start Docker Compose
run: docker-compose up --build -d
# Step 5: Wait for PostgreSQL to be ready
- name: Wait for PostgreSQL
run: |
until docker-compose exec -T postgres pg_isready -h postgres -U indexer -d indexer; do
echo "Waiting for PostgreSQL...";
sleep 3;
done
# Step 6: Check Lazy Indexer logs (optional for debugging)
- name: Check Lazy Indexer logs
run: docker-compose logs lazy-indexer
# Step 7: Retry migration for Lazy Indexer
- name: Run migration
run: |
for i in {1..10}; do
docker-compose exec -T lazy-indexer yarn migrate && break || (echo "Retrying migration in 5 seconds..." && sleep 5);
done
# Step 8: Log in to Docker Hub using secrets
- name: Log in to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
# Step 9: Push the Docker image to Docker Hub using the secret username
- name: Build and Push Docker image
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: ${{ secrets.DOCKER_USERNAME }}/lazy-indexer:latest-1
# Step 10: Verify the image exists on Docker Hub using the secret username
- name: Image exists on Docker Hub
run: docker pull ${{ secrets.DOCKER_USERNAME }}/lazy-indexer:latest-1