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+ uses : slackapi/slack-github-action@v1.25.0
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+ uses : slackapi/slack-github-action@v1.25.0
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+ uses : slackapi/slack-github-action@v1.25.0
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