1
+ # .github/workflows/ci.yml
2
+ name : CI
3
+
4
+ on :
5
+ push :
6
+ branches : [ main ]
7
+ paths : ['**/*.kt', '**/*.kts', '.github/workflows/ci.yml']
8
+ pull_request :
9
+ branches : [ main ]
10
+
11
+ jobs :
12
+ build :
13
+ if : github.event_name == 'push' || github.event_name == 'pull_request'
14
+ runs-on : ubuntu-latest
15
+ name : " Run Tests"
16
+
17
+ env :
18
+ GH_USERNAME : ${{ github.actor }}
19
+ GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
20
+
21
+ steps :
22
+ - name : Checkout code
23
+ uses : actions/checkout@v4
24
+
25
+ - name : Set envs
26
+ run : |
27
+ echo "GITHUB_CURRENT_BRANCH=${GITHUB_REF##*/}" >> $GITHUB_ENV
28
+ echo "GITHUB_CURRENT_REPO_NAME=${GITHUB_REPOSITORY}" >> $GITHUB_ENV
29
+ echo "GITHUB_CURRENT_REPO_URL=https://github.com/${GITHUB_REPOSITORY}" >> $GITHUB_ENV
30
+ echo "GITHUB_CURRENT_RUN_URL=https://github.com/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}" >> $GITHUB_ENV
31
+ echo "GITHUB_CURRENT_RUN_ID=${GITHUB_RUN_ID}" >> $GITHUB_ENV
32
+ echo "GITHUB_CURRENT_RUN_TRIGGERING_ACTOR=${GITHUB_TRIGGERING_ACTOR}" >> $GITHUB_ENV
33
+ echo "GITHUB_CURRENT_RUN_ATTEMPT=${GITHUB_RUN_ATTEMPT}" >> $GITHUB_ENV
34
+
35
+ - name : Notify slack on test start
36
+ id : slack-test-start
37
+
38
+ with :
39
+ channel-id : " C060CAKN98T"
40
+ payload : |
41
+ {
42
+ "blocks": [
43
+ {
44
+ "type": "section",
45
+ "fields": [
46
+ {
47
+ "type": "mrkdwn",
48
+ "text": "*Application:*\n<${{ env.GITHUB_CURRENT_REPO_URL }}|${{ env.GITHUB_CURRENT_REPO_NAME }}>"
49
+ },
50
+ {
51
+ "type": "mrkdwn",
52
+ "text": "*Branch:*\n`${{ env.GITHUB_CURRENT_BRANCH }}`"
53
+ },
54
+ {
55
+ "type": "mrkdwn",
56
+ "text": "*Tests:*\n:large_yellow_circle: Running <${{ env.GITHUB_CURRENT_RUN_URL }}|(view)>"
57
+ }
58
+ ]
59
+ }
60
+ ]
61
+ }
62
+ env :
63
+ SLACK_BOT_TOKEN : ${{ secrets.SLACK_BOT_TOKEN }}
64
+
65
+ - name : Set up JDK 23
66
+ uses : actions/setup-java@v4
67
+ with :
68
+ distribution : ' temurin'
69
+ java-version : 23
70
+
71
+ - name : Cache Gradle dependencies
72
+ uses : actions/cache@v4
73
+ with :
74
+ path : |
75
+ ~/.gradle/caches
76
+ ~/.gradle/wrapper
77
+ key : gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
78
+ restore-keys : |
79
+ gradle-${{ runner.os }}-
80
+
81
+ - name : Grant execute permission for gradlew
82
+ run : chmod +x gradlew
83
+
84
+ - name : Test
85
+ run : ./gradlew test
86
+
87
+ - name : Notify slack on passed tests
88
+ id : slack-tests-passed
89
+
90
+ with :
91
+ channel-id : " C060CAKN98T"
92
+ update-ts : ${{ steps.slack-test-start.outputs.ts }}
93
+ payload : |
94
+ {
95
+ "blocks": [
96
+ {
97
+ "type": "section",
98
+ "fields": [
99
+ {
100
+ "type": "mrkdwn",
101
+ "text": "*Application:*\n<${{ env.GITHUB_CURRENT_REPO_URL }}|${{ env.GITHUB_CURRENT_REPO_NAME }}>"
102
+ },
103
+ {
104
+ "type": "mrkdwn",
105
+ "text": "*Branch:*\n`${{ env.GITHUB_CURRENT_BRANCH }}`"
106
+ },
107
+ {
108
+ "type": "mrkdwn",
109
+ "text": "*Tests:*\n:large_green_circle: Passed <${{ env.GITHUB_CURRENT_RUN_URL }}|(view)>"
110
+ }
111
+ ]
112
+ }
113
+ ]
114
+ }
115
+ env :
116
+ SLACK_BOT_TOKEN : ${{ secrets.SLACK_BOT_TOKEN }}
117
+
118
+ - name : Notify slack on failed tests
119
+ if : ${{ failure() }}
120
+ id : slack-tests-failed
121
+
122
+ with :
123
+ channel-id : " C060CAKN98T"
124
+ update-ts : ${{ steps.slack-test-start.outputs.ts }}
125
+ payload : |
126
+ {
127
+ "blocks": [
128
+ {
129
+ "type": "section",
130
+ "fields": [
131
+ {
132
+ "type": "mrkdwn",
133
+ "text": "*Application:*\n<${{ env.GITHUB_CURRENT_REPO_URL }}|${{ env.GITHUB_CURRENT_REPO_NAME }}>"
134
+ },
135
+ {
136
+ "type": "mrkdwn",
137
+ "text": "*Branch:*\n`${{ env.GITHUB_CURRENT_BRANCH }}`"
138
+ },
139
+ {
140
+ "type": "mrkdwn",
141
+ "text": "*Tests:*\n:red_circle: Failed <${{ env.GITHUB_CURRENT_RUN_URL }}|(view)>"
142
+ }
143
+ ]
144
+ }
145
+ ]
146
+ }
147
+ env :
148
+ SLACK_BOT_TOKEN : ${{ secrets.SLACK_BOT_TOKEN }}
0 commit comments