Skip to content

Commit 6d61f5d

Browse files
Merge pull request #29 from ahmadsamehh/develop
Workflow updates
2 parents d22fb61 + 6a41bc1 commit 6d61f5d

File tree

9 files changed

+4769
-127
lines changed

9 files changed

+4769
-127
lines changed

.github/workflows/docker.yml

Lines changed: 70 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,53 +3,101 @@ name: Docker CI
33
on:
44
push:
55
branches:
6-
- main
6+
- develop
7+
- develop-restore
8+
- feat/docker-workflow
79
pull_request:
810
branches:
9-
- main
11+
- develop
12+
- develop-restore
13+
- feat/docker-workflow
1014

1115
jobs:
12-
build:
16+
build_and_test:
1317
runs-on: "ubuntu-latest"
1418
steps:
1519
- uses: actions/checkout@v4
1620

17-
# Needed for cargo-make
21+
- name: Setup Node.js
22+
uses: actions/setup-node@v4
23+
with:
24+
node-version: '20'
25+
26+
27+
- name: Install root dependencies
28+
run: npm install
29+
30+
- name: Install dependencies inside packages/frontend
31+
run: |
32+
cd packages/frontend
33+
npm install --no-workspaces
34+
1835
- name: Set up Rust
1936
uses: dtolnay/rust-toolchain@stable
2037

2138
- name: Install cargo make
2239
run: cargo install cargo-make
2340

24-
- name: get Sysbox
41+
- name: Get Sysbox
2542
run: wget https://downloads.nestybox.com/sysbox/releases/v0.6.1/sysbox-ce_0.6.1-0.linux_amd64.deb
2643

2744
- name: Install Sysbox
28-
run: sudo apt-get install ./sysbox-ce_0.6.1-0.linux_amd64.deb
45+
run: sudo apt-get update && sudo apt-get install -y ./sysbox-ce_0.6.1-0.linux_amd64.deb
2946

3047
- name: Configure Sysbox runtime
31-
run: sudo cp sysbox/daemon.json /etc/docker/daemon.json
48+
# Ensure the target directory exists
49+
run: sudo mkdir -p /etc/docker && sudo cp sysbox/daemon.json /etc/docker/daemon.json
3250

3351
- name: Restart docker service
3452
run: sudo systemctl restart docker.service
3553

36-
- name: Build docker
37-
run: cargo make docker-build
54+
- name: Build docker image
55+
# Use direct docker build for clarity and tagging
56+
# Use the Dockerfile with embedded entrypoint
57+
run: docker build -t fzsolangpg -f Dockerfile .
3858

39-
- name: Run docker
40-
run: cargo make docker-run
59+
- name: Run docker container in detached mode
60+
# Publish both port 4444 (backend) and 3000 (frontend)
61+
run: docker run --runtime=sysbox-runc -d -p 4444:4444 -p 3000:3000 --name zsolangpg_backend fzsolangpg
4162

42-
- name: Allow Docker image to boot up
43-
uses: juliangruber/sleep-action@v1
44-
with:
45-
time: 120s
63+
- name: Download wait-for-it.sh
64+
run: wget https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh && chmod +x wait-for-it.sh
4665

47-
# Needed to run tests
48-
- name: Install npm dependencies
49-
run: cargo make deps-npm
66+
- name: Wait for backend server (port 4444)
67+
run: |
68+
echo "Waiting for backend server on localhost:4444..."
69+
./wait-for-it.sh localhost:4444 -t 180 -- echo "Backend server (4444) is up!"
70+
if [ $? -ne 0 ]; then
71+
echo "Timeout waiting for backend server (4444)."
72+
docker logs zsolangpg_backend # Show logs on timeout
73+
exit 1
74+
fi
75+
- name: Wait for frontend server (port 3000)
76+
run: |
77+
echo "Waiting for frontend server on localhost:3000..."
78+
./wait-for-it.sh localhost:3000 -t 180 -- echo "Frontend server (3000) is up!"
79+
if [ $? -ne 0 ]; then
80+
echo "Timeout waiting for frontend server (3000)."
81+
docker logs zsolangpg_backend # Show logs on timeout
82+
exit 1
83+
fi
84+
85+
# Login to Docker Hub
86+
- name: Log in to Docker Hub
87+
uses: docker/login-action@v3
88+
with:
89+
username: ${{ secrets.DOCKERHUB_USERNAME }}
90+
password: ${{ secrets.DOCKERHUB_TOKEN }}
5091

51-
- name: Test
52-
run: cargo make test-app
92+
- name: Tag & Push Docker image to Docker Hub on Push to develop and feat/docker-workflow
93+
if: github.event_name == 'push'
94+
run: |
95+
docker tag fzsolangpg ahmadsamehh/fzsolangpg:latest
96+
docker push ahmadsamehh/fzsolangpg:latest
5397
54-
- name: Show logs
55-
run: cargo make docker-log
98+
- name: Tag and Push Docker image (pull request event)
99+
if: github.event_name == 'pull_request'
100+
run: |
101+
PR_NUMBER=${{ github.event.pull_request.number }}
102+
docker tag fzsolangpg ahmadsamehh/fzsolangpg:pr-$PR_NUMBER
103+
docker push ahmadsamehh/fzsolangpg:pr-$PR_NUMBER

0 commit comments

Comments
 (0)