Skip to content

Updates

Updates #51

Workflow file for this run

name: Docker CI
on:
push:
branches:
- develop
- develop-restore
- feat/docker-workflow
pull_request:
branches:
- develop
- develop-restore
- feat/docker-workflow
jobs:
build_and_test:
runs-on: "ubuntu-latest"
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install root dependencies
run: npm install
- name: Install dependencies inside packages/frontend
run: |
cd packages/frontend
npm install --no-workspaces
- name: Set up Rust
uses: dtolnay/rust-toolchain@stable
- name: Install cargo make
run: cargo install cargo-make
- name: Get Sysbox
run: wget https://downloads.nestybox.com/sysbox/releases/v0.6.1/sysbox-ce_0.6.1-0.linux_amd64.deb
- name: Install Sysbox
run: sudo apt-get update && sudo apt-get install -y ./sysbox-ce_0.6.1-0.linux_amd64.deb
- name: Configure Sysbox runtime
# Ensure the target directory exists
run: sudo mkdir -p /etc/docker && sudo cp sysbox/daemon.json /etc/docker/daemon.json
- name: Restart docker service
run: sudo systemctl restart docker.service
- name: Build docker image
# Use direct docker build for clarity and tagging
# Use the Dockerfile with embedded entrypoint
run: docker build -t fzsolangpg -f Dockerfile .
- name: Run docker container in detached mode
# Publish both port 4444 (backend) and 3000 (frontend)
run: docker run --runtime=sysbox-runc -d -p 4444:4444 -p 3000:3000 --name zsolangpg_backend fzsolangpg
- name: Download wait-for-it.sh
run: wget https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh && chmod +x wait-for-it.sh
- name: Wait for backend server (port 4444)
run: |
echo "Waiting for backend server on localhost:4444..."
./wait-for-it.sh localhost:4444 -t 180 -- echo "Backend server (4444) is up!"
if [ $? -ne 0 ]; then
echo "Timeout waiting for backend server (4444)."
docker logs zsolangpg_backend # Show logs on timeout
exit 1
fi
- name: Wait for frontend server (port 3000)
run: |
echo "Waiting for frontend server on localhost:3000..."
./wait-for-it.sh localhost:3000 -t 180 -- echo "Frontend server (3000) is up!"
if [ $? -ne 0 ]; then
echo "Timeout waiting for frontend server (3000)."
docker logs zsolangpg_backend # Show logs on timeout
exit 1
fi
# Docker Hub Push Steps (Conditional) <<DEVELOP-RESTORE BRANCH>>
- name: Log in to Docker Hub
if: github.event_name == 'push' && github.ref == 'refs/heads/develop-restore'
uses: docker/login-action@v3 # Use latest version
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Tag Docker image for Docker Hub
if: github.event_name == 'push' && github.ref == 'refs/heads/develop-restore'
run: docker tag fzsolangpg ahmadsamehh/fzsolangpg:latest
- name: Push Docker image to Docker Hub
if: github.event_name == 'push' && github.ref == 'refs/heads/develop-restore'
run: docker push ahmadsamehh/fzsolangpg:latest
# Docker Hub Push Steps (Conditional) <<DEVELOP BRANCH>>
- name: Log in to Docker Hub
if: github.event_name == 'push' && github.ref == 'refs/heads/develop'
uses: docker/login-action@v3 # Use latest version
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Tag Docker image for Docker Hub
if: github.event_name == 'push' && github.ref == 'refs/heads/develop'
run: docker tag fzsolangpg ahmadsamehh/fzsolangpg:latest
- name: Push Docker image to Docker Hub
if: github.event_name == 'push' && github.ref == 'refs/heads/develop'
run: docker push ahmadsamehh/fzsolangpg:latest
# Docker Hub Push Steps (Conditional) <<feat/docker-workflow>>
- name: Log in to Docker Hub
if: github.event_name == 'push' && github.ref == 'refs/heads/feat/docker-workflow'
uses: docker/login-action@v3 # Use latest version
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Tag Docker image for Docker Hub
if: github.event_name == 'push' && github.ref == 'refs/heads/feat/docker-workflow'
run: docker tag fzsolangpg ahmadsamehh/fzsolangpg:latest
- name: Push Docker image to Docker Hub
if: github.event_name == 'push' && github.ref == 'refs/heads/feat/docker-workflow'
run: docker push ahmadsamehh/fzsolangpg:latest
# Docker Hub Push Steps (Conditional) <<feat/docker-workflow>>
- name: Log in to Docker Hub
if: github.event_name == 'pull' && github.ref == 'refs/heads/feat/docker-workflow'
uses: docker/login-action@v3 # Use latest version
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Tag Docker image for Docker Hub
if: github.event_name == 'pull' && github.ref == 'refs/heads/feat/docker-workflow'
run: docker tag fzsolangpg ahmadsamehh/fzsolangpg:latest
- name: Push Docker image to Docker Hub
if: github.event_name == 'pull' && github.ref == 'refs/heads/feat/docker-workflow'
run: docker push ahmadsamehh/fzsolangpg:latest