forked from LawnchairLauncher/lawnicons
-
Notifications
You must be signed in to change notification settings - Fork 0
154 lines (150 loc) · 5.05 KB
/
build_debug_apk.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
name: Build debug APK
on:
workflow_dispatch:
push:
branches:
- develop
pull_request:
jobs:
check-paths:
runs-on: ubuntu-latest
outputs:
skip_steps: ${{ steps.filter.outputs.workflows && !steps.nofilter.outputs.workflows }}
steps:
- name: Check out repository
uses: actions/checkout@v4
with:
submodules: true
- name: Check for ignored paths
uses: dorny/paths-filter@v3
id: filter
with:
filters: |
workflows:
- '**.md'
- 'LICENSE'
- '.idea/**'
- 'docs/**'
- '.github/ISSUE_TEMPLATE/**'
- '.gitignore'
- '.gitattributes'
- '.github/labeler.yml'
- '.github/release.yml'
- name: Check for non ignored paths
uses: dorny/paths-filter@v3
id: nofilter
with:
filters: |
workflows:
- '!**.md'
- '!LICENSE'
- '!.idea/**'
- '!docs/**'
- '!.github/ISSUE_TEMPLATE/**'
- '!.gitignore'
- '!.gitattributes'
- '!.github/labeler.yml'
- '!.github/release.yml'
build-debug-apk:
runs-on: ubuntu-latest
needs: check-paths
if: needs.check-paths.outputs.skip_steps != 'true'
continue-on-error: true
steps:
- name: Check out repository
uses: actions/checkout@v4
with:
submodules: true
- uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 21
- uses: gradle/actions/setup-gradle@v4
with:
cache-encryption-key: Da25KUVSE5jbGds2zXmfXw==
- name: Write sign info
if: github.repository_owner == 'LawnchairLauncher'
run: |
if [ ! -z "${{ secrets.KEYSTORE }}" ]; then
echo storePassword='${{ secrets.KEYSTORE_PASSWORD }}' >> keystore.properties
echo keyAlias='${{ secrets.KEY_ALIAS }}' >> keystore.properties
echo keyPassword='${{ secrets.KEY_PASSWORD }}' >> keystore.properties
echo storeFile='${{ github.workspace }}/key.jks' >> keystore.properties
echo ${{ secrets.KEYSTORE }} | base64 --decode > ${{ github.workspace }}/key.jks
fi
- name: Build debug APK
run: ./gradlew app:assembleDebug
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: Debug APK
path: app/build/outputs/apk/app/debug/*.apk
check-style:
runs-on: ubuntu-latest
needs: check-paths
if: needs.check-paths.outputs.skip_steps != 'true'
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 21
- uses: gradle/actions/setup-gradle@v4
- run: ./gradlew spotlessCheck
send-notifications:
runs-on: ubuntu-latest
needs: [build-debug-apk, check-style, check-paths]
if: needs.check-paths.outputs.skip_steps != 'true'
steps:
- name: Check out repository
uses: actions/checkout@v4
with:
submodules: true
fetch-depth: 0
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Install Python packages
run: |
python -m pip install --upgrade pip
pip install gitpython requests
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: Debug APK
path: artifacts/debug-apk
- name: Send notifications
run: python send_notifications.py
env:
GITHUB_EVENT_BEFORE: ${{ github.event.before }}
TELEGRAM_CI_BOT_TOKEN: ${{ secrets.TELEGRAM_CI_BOT_TOKEN }}
TELEGRAM_CI_CHANNEL_ID: ${{ secrets.TELEGRAM_CI_CHANNEL_ID }}
ARTIFACT_DIRECTORY: artifacts/debug-apk
GITHUB_REF: ${{ github.ref }}
DISCORD_CI_BOT_TOKEN: ${{ secrets.DISCORD_CI_BOT_TOKEN }}
nightly-release:
runs-on: ubuntu-latest
if: github.repository_owner == 'LawnchairLauncher' && github.event_name == 'push' && needs.check-paths.outputs.skip_steps != 'true'
needs: build-debug-apk
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: Debug APK
path: artifacts/debug-apk
- name: Export APK_NAME for later use
run: echo "APK_NAME=Lawnicons.Debug.${{ github.ref_name }}.Nightly-CI_${{ github.run_number }}-$(echo ${{ github.sha }} | cut -c1-7).apk" >> $GITHUB_ENV
- name: Rename .apk file
run: |
mv artifacts/debug-apk/*.apk $APK_NAME
- name: Delete release if exist then create release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release view "nightly" && gh release delete "nightly" -y --cleanup-tag
gh release create "nightly" "$APK_NAME" -p -t "Lawnicons Nightly" --generate-notes