Skip to content

Commit 9725733

Browse files
authored
release: 1.1.6 (#240)
2 parents 69df0a1 + fa7be7b commit 9725733

File tree

13 files changed

+190
-7
lines changed

13 files changed

+190
-7
lines changed

.github/workflows/deploy.yml

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,10 @@ jobs:
5353
run: echo "##[set-output name=version;]$(echo '${{ github.event.head_commit.message }}' | egrep -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}')"
5454
id: extract_version_name
5555

56-
- name: push
56+
- name: build and push api server
5757
uses: docker/build-push-action@v4
5858
with:
59-
context: .
59+
context: ./deploy/api
6060
platforms: linux/arm64/v8
6161
push: true
6262
tags: |
@@ -69,6 +69,7 @@ jobs:
6969
"REDIS_HOST=${{ secrets.REDIS_HOST }}"
7070
"REDIS_PORT=${{ secrets.REDIS_PORT }}"
7171
"INTERNAL_SECRET=${{ secrets.INTERNAL_SECRET }}"
72+
"SLACK_TOKEN=${{ secrets.SLACK_TOKEN }}"
7273
7374
deploy:
7475
needs: build
@@ -79,8 +80,34 @@ jobs:
7980
run: echo "##[set-output name=version;]$(echo '${{ github.event.head_commit.message }}' | egrep -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}')"
8081
id: extract_version_name
8182

82-
- name: run server
83+
- name: run api server
8384
run: |
8485
sudo docker pull ghcr.io/devxb/gitanimals:${{ steps.extract_version_name.outputs.version }}
8586
sudo docker ps -q --filter "expose=8080" | xargs sudo docker stop | xargs sudo docker rm
86-
sudo docker run -d -p 8081:8080 ghcr.io/devxb/gitanimals:${{ steps.extract_version_name.outputs.version }}
87+
sudo docker run -d -p 8081:8080 -v logs:/logs ghcr.io/devxb/gitanimals:${{ steps.extract_version_name.outputs.version }}
88+
89+
- name: check filebeat status
90+
id: check-status
91+
run: |
92+
if docker ps --filter "name=filebeat" --filter "status=running" --format "{{.Names}}" | grep -q "^filebeat$"; then
93+
echo "Filebeat is already running"
94+
echo "status=running" >> $GITHUB_ENV
95+
else
96+
echo "Filebeat is not running"
97+
echo "status=stopped" >> $GITHUB_ENV
98+
fi
99+
100+
- name: display filebeat status
101+
run: |
102+
if [ "${{ env.status }}" == "running" ]; then
103+
echo "✅ Filebeat is already running"
104+
else
105+
echo "🚀 Filebeat is not running. Starting deployment..."
106+
fi
107+
108+
- name: run file beats
109+
if: env.status == 'running'
110+
run: |
111+
docker build -t filebeat-gitanimals:latest ./deploy/filebeat
112+
docker run -d --name filebeat -v logs:/logs -t filebeat-gitanimals:latest
113+

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,3 +42,4 @@ bin/
4242
.DS_Store
4343

4444
.idea
45+
logs

build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ sentry {
3737
apply from: "gradle/db.gradle"
3838
apply from: "gradle/core.gradle"
3939
apply from: "gradle/test.gradle"
40+
apply from: "gradle/slack.gradle"
4041
apply from: "gradle/spring.gradle"
4142
apply from: "gradle/monitor.gradle"
43+
apply from: "gradle/logging.gradle"
4244
apply from: "gradle/jetbrains.gradle"

Dockerfile renamed to deploy/api/Dockerfile

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,9 @@ ARG GITHUB_TOKEN
77
ARG REDIS_HOST
88
ARG REDIS_PORT
99
ARG INTERNAL_SECRET
10+
ARG SLACK_TOKEN
1011

11-
ARG JAR_FILE=./build/libs/*.jar
12+
ARG JAR_FILE=../../build/libs/*.jar
1213
COPY ${JAR_FILE} gitanimals-render.jar
1314

1415
ENV db_url=${DB_URL} \
@@ -17,7 +18,8 @@ ENV db_url=${DB_URL} \
1718
github_token=${GITHUB_TOKEN} \
1819
redis_host=${REDIS_HOST} \
1920
redis_port=${REDIS_PORT} \
20-
internal_secret=${INTERNAL_SECRET}
21+
internal_secret=${INTERNAL_SECRET} \
22+
slack_token=${SLACK_TOKEN}
2123

2224
ENTRYPOINT java -jar gitanimals-render.jar \
2325
--spring.datasource.url=${db_url} \
@@ -26,4 +28,5 @@ ENTRYPOINT java -jar gitanimals-render.jar \
2628
--netx.host=${redis_host} \
2729
--netx.port=${redis_port} \
2830
--github.token=${github_token} \
29-
--internal.secret=${internal_secret}
31+
--internal.secret=${internal_secret} \
32+
--slack.token=${slack_token}

deploy/filebeat/Dockerfile

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# Filebeat Base Image
2+
FROM docker.elastic.co/beats/filebeat:8.10.0
3+
4+
# Copy custom Filebeat configuration
5+
COPY filebeat.yml /usr/share/filebeat/filebeat.yml
6+
7+
# Set permissions
8+
USER root
9+
RUN chmod go-w /usr/share/filebeat/filebeat.yml
10+
11+
# Set working directory
12+
WORKDIR /usr/share/filebeat
13+
14+
# Entry point
15+
ENTRYPOINT ["filebeat"]
16+
CMD ["-e", "-c", "/usr/share/filebeat/filebeat.yml"]

deploy/filebeat/filebeat.yml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
filebeat.inputs:
2+
- type: log
3+
enabled: true
4+
paths:
5+
- ./logs/*.json
6+
json:
7+
keys_under_root: true
8+
add_error_key: true
9+
10+
output.elasticsearch:
11+
hosts: ["192.168.0.31:9200"]
12+
username: "elastic"
13+
password: ""
14+
15+
processors:
16+
- decode_json_fields:
17+
fields: ["message"]
18+
target: ""

gradle.properties

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,3 +40,9 @@ snowflakeVersion=5.2.5
4040

4141
### Caffeine cache ###
4242
caffeineCacheVersion=3.1.8
43+
44+
### Ecs logback encoder ###
45+
logbackEcsEncoderVersion=1.6.0
46+
47+
### Slack ###
48+
slackVersion=1.40.2

gradle/logging.gradle

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
dependencies {
2+
implementation "co.elastic.logging:logback-ecs-encoder:${logbackEcsEncoderVersion}"
3+
}

gradle/slack.gradle

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
dependencies {
2+
implementation "com.slack.api:bolt:${slackVersion}"
3+
implementation "com.slack.api:bolt-servlet:${slackVersion}"
4+
implementation "com.slack.api:bolt-jetty:${slackVersion}"
5+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package org.gitanimals.core.appender
2+
3+
import ch.qos.logback.classic.Level
4+
import ch.qos.logback.classic.spi.ILoggingEvent
5+
import ch.qos.logback.core.AppenderBase
6+
import com.slack.api.Slack
7+
import com.slack.api.methods.MethodsClient
8+
import com.slack.api.methods.request.chat.ChatPostMessageRequest
9+
10+
class SlackAppender : AppenderBase<ILoggingEvent>() {
11+
12+
lateinit var slack: MethodsClient
13+
14+
private val errorChannel = "C080GR85WM9"
15+
private val warnChannel = "C08977RL38C"
16+
17+
override fun append(eventObject: ILoggingEvent) {
18+
runCatching {
19+
val channel = when (eventObject.level) {
20+
Level.WARN -> warnChannel
21+
Level.ERROR -> errorChannel
22+
else -> NOT_LOGGING
23+
}
24+
25+
if (channel == NOT_LOGGING) {
26+
return
27+
}
28+
29+
val request: ChatPostMessageRequest = ChatPostMessageRequest.builder()
30+
.channel(channel)
31+
.text(eventObject.formattedMessage)
32+
.build();
33+
slack.chatPostMessage(request)
34+
}
35+
}
36+
37+
fun setToken(token: String) {
38+
this.slack = Slack.getInstance().methods(token)
39+
}
40+
41+
companion object {
42+
private const val NOT_LOGGING = "NOT LOGGING"
43+
}
44+
}

0 commit comments

Comments
 (0)