forked from DP-Hridayan/aShellYou
-
Notifications
You must be signed in to change notification settings - Fork 0
145 lines (117 loc) · 4.7 KB
/
Copy pathrelease.yml
File metadata and controls
145 lines (117 loc) · 4.7 KB
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
name: Build and Release APK
on:
push:
tags:
- "v*" # Runs when a tag like "v6.0.1" is pushed
workflow_dispatch:
jobs:
build:
name: Build and Sign APK
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '17'
- name: Set up Android SDK
uses: android-actions/setup-android@v3
- name: Decode Keystore
env:
KEYSTORE_BASE64: ${{ secrets.KEYSTORE_BASE64 }}
run: |
echo "$KEYSTORE_BASE64" | base64 --decode > keystore.jks
- name: Set Environment Variables
run: |
echo "KEYSTORE_PATH=$PWD/keystore.jks" >> $GITHUB_ENV
echo "KEYSTORE_PASSWORD=$(echo -n '${{ secrets.KEYSTORE_PASSWORD }}')" >> $GITHUB_ENV
echo "KEY_ALIAS=$(echo -n '${{ secrets.KEY_ALIAS }}')" >> $GITHUB_ENV
echo "KEY_PASSWORD=$(echo -n '${{ secrets.KEY_PASSWORD }}')" >> $GITHUB_ENV
- name: Grant Execute Permission to Gradle
run: chmod +x gradlew
- name: Build APK
run: ./gradlew assembleRelease --stacktrace
- name: Find Release APK
run: |
APK_PATH=$(find app/build/outputs/apk/release -name '*.apk' -print -quit)
if [[ -z "$APK_PATH" ]]; then
echo "No APK found!"
exit 1
fi
echo "APK_PATH=$APK_PATH" >> $GITHUB_ENV
echo "Found APK at: $APK_PATH"
- name: Upload APK as Artifact
uses: actions/upload-artifact@v4
with:
name: Signed-APK
path: ${{ env.APK_PATH }}
release:
name: Create GitHub Release
needs: build
if: startsWith(github.ref, 'refs/tags/v')
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Download Signed APK
uses: actions/download-artifact@v4
with:
name: Signed-APK
path: artifacts/
- name: Find Downloaded APK
run: |
APK_PATH=$(find artifacts -name '*.apk' -print -quit)
if [[ -z "$APK_PATH" ]]; then
echo "No downloaded APK found!"
exit 1
fi
echo "APK_PATH=$APK_PATH" >> $GITHUB_ENV
echo "Downloaded APK at: $APK_PATH"
- name: Rename APK
run: |
mv "${{ env.APK_PATH }}" "aShellYou-${{ github.ref_name }}-release.apk"
- name: Install xmllint
run: sudo apt-get install -y libxml2-utils
- name: Extract Changelog from strings.xml
run: |
VERSION_TAG="${{ github.ref_name }}" # Example: v6.0.1
VERSION_TAG_XML=$(echo $VERSION_TAG | tr '.' '_' | tr -d 'v') # Convert v6.0.1 → 6_0_1
CHANGELOG=$(xmllint --xpath "string(//string[@name='changelog_v${VERSION_TAG_XML}']/text())" app/src/main/res/values/strings.xml || echo "No changelog found for $VERSION_TAG")
if [[ -z "$CHANGELOG" ]]; then
echo "#### Refer to full changelogs $VERSION_TAG"
exit 1
fi
# Replace • with * and \n with two spaces followed by \n
CHANGELOG=$(echo "$CHANGELOG" | sed 's/•/*/g' | sed 's/\\n/ \n/g')
# Add ### Changelog before the changelog text
CHANGELOG="### Changelog $CHANGELOG"
# Write CHANGELOG to a temporary file
echo -e "$CHANGELOG" > changelog.txt
- name: Publish Release using gh CLI
run: |
gh release create "${{ github.ref_name }}" \
"aShellYou-${{ github.ref_name }}-release.apk" \
--title "aShell You ${{ github.ref_name }}" \
--notes-file changelog.txt
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Notify Telegram of New Release
env:
TELEGRAM_TOKEN: ${{ secrets.TELEGRAM_TOKEN }}
CHAT_ID: ${{ secrets.CHAT_ID }}
THREAD_ID: ${{ secrets.RELEASE_THREAD_ID }}
run: |
TAG=${{ github.ref_name }}
URL="https://github.com/${{ github.repository }}/releases/tag/${TAG}"
# Escape underscores for MarkdownV2
ESC_TAG=$(echo "$TAG" | sed -e 's/\./\\./g' -e 's/_/\\_/g' -e 's/\*/\\*/g' -e 's/\-/\\-/g')
TEXT="🚀 *New Release Published*\n• *${ESC_TAG}*\n🔗 [View Release](${URL})"
REPLY='{"inline_keyboard":[[{"text":"View Release","url":"'"$URL"'"}]]}'
curl -s -X POST "https://api.telegram.org/bot${TELEGRAM_TOKEN}/sendMessage" \
-d chat_id="$CHAT_ID" \
-d parse_mode="MarkdownV2" \
-d text="$TEXT" \
-d reply_markup="$REPLY" \
-d message_thread_id="$THREAD_ID"