Skip to content

Commit 2785490

Browse files
authored
Merge pull request #27 from Gachon-Univ-Creative-Code-Innovation/feat/GUC-247-cicd--
feat:ci.yaml 추가
2 parents 944a19b + 3c18bda commit 2785490

File tree

7 files changed

+101
-19
lines changed

7 files changed

+101
-19
lines changed

.github/workflows/ci.yaml

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
name: Alarm Service CI - Build, Push, and Trigger CD
2+
3+
on:
4+
push:
5+
branches: [ "main" ]
6+
7+
jobs:
8+
build-push-trigger:
9+
name: Build, Push Alarm Service Image, and Trigger Jenkins CD
10+
runs-on: ubuntu-latest
11+
12+
steps:
13+
- name: Checkout code
14+
uses: actions/checkout@v4
15+
16+
- name: Log in to Docker Hub
17+
uses: docker/login-action@v3
18+
with:
19+
username: ${{ secrets.DOCKERHUB_USERNAME }}
20+
password: ${{ secrets.DOCKERHUB_TOKEN }}
21+
22+
- name: Extract metadata (tags, labels) for Docker
23+
id: meta
24+
uses: docker/metadata-action@v5
25+
with:
26+
images: msj9965/alog-alarm # Alarm 서비스 이미지 이름
27+
tags: | # 태그 전략: main, latest, sha-short
28+
type=raw,value=main,enable={{is_default_branch}}
29+
type=raw,value=latest,enable={{is_default_branch}}
30+
type=sha,prefix=sha-,format=short
31+
32+
- name: Build and push Docker image
33+
uses: docker/build-push-action@v5
34+
with:
35+
context: .
36+
file: ./Dockerfile # Alarm 서비스 레포지토리의 Dockerfile
37+
push: true
38+
tags: ${{ steps.meta.outputs.tags }}
39+
labels: ${{ steps.meta.outputs.labels }}
40+
41+
- name: Trigger Jenkins CD Pipeline for Alarm Service
42+
if: success()
43+
env:
44+
JENKINS_URL: ${{ secrets.JENKINS_URL }}
45+
JENKINS_JOB_NAME: ${{ secrets.JENKINS_JOB_NAME_ALARM }} # Alarm 서비스용 Jenkins 작업 이름 Secret
46+
JENKINS_TRIGGER_TOKEN: ${{ secrets.JENKINS_TRIGGER_TOKEN_ALARM }} # Alarm 서비스용 Jenkins 트리거 토큰 Secret
47+
JENKINS_USER_ID: ${{ secrets.JENKINS_USER_ID }}
48+
JENKINS_USER_API_TOKEN: ${{ secrets.JENKINS_USER_API_TOKEN }}
49+
# Jenkins에 전달할 이미지 태그 (여기서는 'main' 태그를 사용)
50+
IMAGE_TO_DEPLOY_TAG: main
51+
run: |
52+
echo "Triggering Jenkins job: '${JENKINS_JOB_NAME}' for Alarm Service with image tag: '${IMAGE_TO_DEPLOY_TAG}'"
53+
curl -X POST -u "${JENKINS_USER_ID}:${JENKINS_USER_API_TOKEN}" \
54+
"${JENKINS_URL}/job/${JENKINS_JOB_NAME}/buildWithParameters?token=${JENKINS_TRIGGER_TOKEN}&IMAGE_TAG=${IMAGE_TO_DEPLOY_TAG}"

bin/main/application-cloud.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
spring:
2+
cloud:
3+
config:
4+
uri: http://config-service.config.svc.cluster.local:8888
5+
name: alarm-service
6+
label: main
7+
fail-fast: true
8+
9+
server:
10+
port: 8087

bin/main/application-dev.yml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@ spring:
2020
producer:
2121
key-serializer: org.apache.kafka.common.serialization.StringSerializer
2222
value-serializer: org.springframework.kafka.support.serializer.JsonSerializer
23-
topic:
24-
notification: alarm-topic
2523

2624

2725
jwt:
@@ -37,4 +35,7 @@ management:
3735
prometheus:
3836
metrics:
3937
export:
40-
enabled: true
38+
enabled: true
39+
40+
user-service:
41+
url: http://localhost:8081/api/user-service

bin/main/application-prod.yml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ spring:
99
ddl-auto: update
1010

1111
kafka:
12-
bootstrap-servers: kafka:29092
12+
bootstrap-servers: kafka:9092
1313
consumer:
1414
group-id: alarm-group
1515
auto-offset-reset: earliest
@@ -20,14 +20,15 @@ spring:
2020
producer:
2121
key-serializer: org.apache.kafka.common.serialization.StringSerializer
2222
value-serializer: org.springframework.kafka.support.serializer.JsonSerializer
23-
topic:
24-
notification: alarm-topic
2523

2624

2725
jwt:
2826
secret: ${JWT_SECRET}
2927

3028

29+
user-service:
30+
url: http://user-service:8080/api/user-service
31+
3132
management:
3233
endpoints:
3334
web:

bin/main/application.yml

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,7 @@
11
spring:
22
profiles:
3-
active: cloud
3+
active: dev
44
application:
55
name: alarm-service
66
config:
7-
import: "optional:configserver:"
8-
cloud:
9-
config:
10-
uri: http://config-service.config.svc.cluster.local:8888
11-
name: alarm-service
12-
label: main
13-
fail-fast: true
14-
server:
15-
port: 8087
7+
import: "optional:configserver:"

bin/main/logback-spring.xml

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,29 @@
11
<configuration>
22

3+
<!-- JSON 로그용 Appender (prod 전용) -->
34
<appender name="JSON_CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
45
<encoder class="net.logstash.logback.encoder.LogstashEncoder" />
56
</appender>
67

7-
<root level="INFO">
8-
<appender-ref ref="JSON_CONSOLE" />
9-
</root>
8+
<!-- 일반 텍스트 로그용 Appender (!prod 전용) -->
9+
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
10+
<encoder>
11+
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %highlight(%-5level) %logger{36} - %msg%n</pattern>
12+
</encoder>
13+
</appender>
14+
15+
<!-- prod 환경에서는 JSON 로그 -->
16+
<springProfile name="prod">
17+
<root level="INFO">
18+
<appender-ref ref="JSON_CONSOLE"/>
19+
</root>
20+
</springProfile>
21+
22+
<!-- dev 등 나머지 환경에서는 일반 로그 -->
23+
<springProfile name="!prod">
24+
<root level="INFO">
25+
<appender-ref ref="CONSOLE"/>
26+
</root>
27+
</springProfile>
1028

1129
</configuration>

src/main/java/com/gucci/alarm_service/controller/HealthCheckController.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,10 @@ public ResponseEntity<String> healthCheck() {
2222
+ environment.getProperty("local.server.port")
2323
);
2424
}
25+
26+
@GetMapping("/test")
27+
public String test(){
28+
return "cicd test";
29+
30+
}
2531
}

0 commit comments

Comments
 (0)