Skip to content

Commit a7df49c

Browse files
committed
Feat: CI
1 parent e0b88d2 commit a7df49c

File tree

2 files changed

+73
-8
lines changed

2 files changed

+73
-8
lines changed

.github/workflows/ci.yml

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
name: CI - Build & Push Backend
2+
3+
on:
4+
push:
5+
branches: [ release ]
6+
workflow_dispatch: {}
7+
8+
jobs:
9+
build-and-push:
10+
runs-on: ubuntu-latest
11+
permissions:
12+
contents: read
13+
packages: write
14+
env:
15+
IMAGE: ghcr.io/prgrms-web-devcourse-final-project/docsa-backend
16+
steps:
17+
- uses: actions/checkout@v4
18+
19+
- name: Set up JDK
20+
uses: actions/setup-java@v4
21+
with:
22+
java-version: '21'
23+
distribution: 'temurin'
24+
25+
- name: Cache Gradle
26+
uses: gradle/actions/setup-gradle@v3
27+
28+
- name: Detect project dir
29+
id: detect
30+
shell: bash
31+
run: |
32+
if [ -f "./gradlew" ] || [ -f "./build.gradle" ] || [ -f "./build.gradle.kts" ]; then
33+
echo "dir=." >> $GITHUB_OUTPUT
34+
elif [ -d "./backend" ]; then
35+
echo "dir=backend" >> $GITHUB_OUTPUT
36+
else
37+
echo "No Gradle project found"; exit 1
38+
fi
39+
40+
- name: Build & Test
41+
run: |
42+
cd "${{ steps.detect.outputs.dir }}"
43+
chmod +x ./gradlew || true
44+
./gradlew clean test bootJar
45+
46+
- name: Find Dockerfile
47+
id: df
48+
run: |
49+
if [ -f "infra/backend/Dockerfile" ]; then
50+
echo "path=infra/backend/Dockerfile" >> $GITHUB_OUTPUT
51+
echo "ctx=." >> $GITHUB_OUTPUT
52+
else
53+
echo "No Dockerfile found"; exit 1
54+
fi
55+
56+
- name: Log in to GHCR
57+
uses: docker/login-action@v3
58+
with:
59+
registry: ghcr.io
60+
username: ${{ github.actor }}
61+
password: ${{ secrets.GITHUB_TOKEN }}
62+
63+
- name: Build & Push image
64+
run: |
65+
GIT_SHA=${{ github.sha }}
66+
docker build -f "${{ steps.df.outputs.path }}" -t $IMAGE:release -t $IMAGE:$GIT_SHA "${{ steps.df.outputs.ctx }}"
67+
docker push $IMAGE:release
68+
docker push $IMAGE:$GIT_SHA

infra/docker-compose.yml

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,7 @@ name: docsa
22

33
services:
44
app:
5-
build:
6-
context: ./backend
7-
dockerfile: Dockerfile
8-
image: docsa-backend:latest
5+
image: ghcr.io/prgrms-web-devcourse-final-project/docsa-backend:release
96
container_name: docsa-app
107
restart: unless-stopped
118
env_file: .env
@@ -26,9 +23,9 @@ services:
2623
- docsa_net
2724
healthcheck:
2825
test: ["CMD", "wget", "-qO-", "http://localhost:8080/actuator/health"]
29-
interval: 10s
30-
timeout: 3s
31-
retries: 10
26+
interval: 30s
27+
timeout: 5s
28+
retries: 3
3229

3330
mysql:
3431
image: mysql:9.4.0
@@ -45,7 +42,7 @@ services:
4542
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "-u", "docsa", "-p${SPRING_DATASOURCE_PASSWORD}"]
4643
interval: 10s
4744
timeout: 5s
48-
retries: 10
45+
retries: 3
4946

5047
mysqld-exporter:
5148
image: prom/mysqld-exporter:latest

0 commit comments

Comments
 (0)