feat: docker publish GitHub actions (#1) #1
This file contains 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: 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 |