Skip to content

Commit 6cb1dcc

Browse files
Create ci.yml
Signed-off-by: Gerome <grambo328@gmail.com>
1 parent e001950 commit 6cb1dcc

File tree

1 file changed

+98
-0
lines changed

1 file changed

+98
-0
lines changed

.github/workflows/ci.yml

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
name: Pull CodinIT Docker Image
2+
3+
on:
4+
workflow_dispatch:
5+
schedule:
6+
- cron: '0 0 * * *' # Daily at midnight
7+
push:
8+
branches: [main]
9+
10+
env:
11+
REGISTRY: ghcr.io
12+
IMAGE_NAME: gerome-elassaad/codinit-app
13+
IMAGE_TAG: sha-052c2ec
14+
15+
jobs:
16+
pull-and-test:
17+
runs-on: ubuntu-latest
18+
permissions:
19+
packages: read
20+
contents: read
21+
22+
steps:
23+
- name: Checkout repository
24+
uses: actions/checkout@v4
25+
26+
- name: Log in to GitHub Container Registry
27+
uses: docker/login-action@v3
28+
with:
29+
registry: ${{ env.REGISTRY }}
30+
username: ${{ github.actor }}
31+
password: ${{ secrets.GITHUB_TOKEN }}
32+
33+
- name: Pull Docker image
34+
run: |
35+
echo "Pulling image: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}"
36+
docker pull ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}
37+
38+
- name: Verify image
39+
run: |
40+
docker images | grep ${{ env.IMAGE_NAME }}
41+
docker inspect ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}
42+
43+
- name: Run image (optional)
44+
run: |
45+
docker run --rm ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }} --version || true
46+
47+
- name: Tag image locally (optional)
48+
run: |
49+
docker tag ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }} codinit-app:latest
50+
docker images
51+
52+
pull-private-image:
53+
runs-on: ubuntu-latest
54+
# Use this job if the image is private and needs PAT
55+
# Required secrets: GHCR_USERNAME, GHCR_PAT
56+
# Add these in: Settings > Secrets and variables > Actions
57+
if: false # Set to true to enable
58+
59+
steps:
60+
- name: Log in to GHCR with PAT
61+
uses: docker/login-action@v3
62+
with:
63+
registry: ${{ env.REGISTRY }}
64+
username: ${{ secrets.GHCR_USERNAME }} # Add in repo secrets
65+
password: ${{ secrets.GHCR_PAT }} # Add in repo secrets
66+
67+
- name: Pull private image
68+
run: |
69+
docker pull ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}
70+
71+
deploy-with-image:
72+
runs-on: ubuntu-latest
73+
needs: pull-and-test
74+
75+
steps:
76+
- name: Pull and run container
77+
run: |
78+
docker pull ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}
79+
docker run -d \
80+
--name codinit-app \
81+
-p 5173:5173 \
82+
-e NODE_ENV=production \
83+
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}
84+
85+
- name: Wait for container to be ready
86+
run: |
87+
timeout 60 bash -c 'until docker logs codinit-app 2>&1 | grep -q "ready"; do sleep 2; done' || true
88+
89+
- name: Test container health
90+
run: |
91+
docker ps -a
92+
docker logs codinit-app
93+
94+
- name: Cleanup
95+
if: always()
96+
run: |
97+
docker stop codinit-app || true
98+
docker rm codinit-app || true

0 commit comments

Comments
 (0)