14
14
pull_request :
15
15
branches : [master]
16
16
workflow_dispatch :
17
+ inputs :
18
+ make_release :
19
+ default : false
20
+ description : Make a forced release
21
+ required : false
22
+ type : boolean
23
+ workflow_call :
17
24
18
25
jobs :
19
26
build :
@@ -25,13 +32,26 @@ jobs:
25
32
- name : Check out
26
33
uses : actions/checkout@v4
27
34
with :
35
+ fetch-depth : 0
28
36
submodules : " recursive"
29
37
30
38
- name : Setup environment
31
39
uses : ./.github/actions/setup
32
40
with :
33
41
is-asset-build : true
34
42
43
+ - name : Setup keystores
44
+ run : |
45
+ cat > config.prop<< EOF
46
+ keyStore=key.jks
47
+ keyStorePass=${{ secrets.KEYSTORE_ALIAS_PASSWORD }}
48
+ keyAlias=${{ secrets.KEYSTORE_ALIAS_NAME }}
49
+ keyPass=${{ secrets.KEYSTORE_PASSWORD }}
50
+ EOF
51
+
52
+ echo '${{ secrets.KEYSTORE_FILE }}' > keystore.jks.asc
53
+ gpg -d --passphrase '${{ secrets.KEYSTORE_PASSWORD_GPG }}' --batch keystore.jks.asc > key.jks
54
+
35
55
- name : Build release
36
56
run : ./build.py -vr all
37
57
48
68
path : out
49
69
compression-level : 9
50
70
71
+ - name : Check for Release
72
+ id : check_release
73
+ run : |
74
+ # fetch all once
75
+ git fetch --all
76
+
77
+ # Set a value for force_release if not set already
78
+ force_release=${{ inputs.make_release }}
79
+ if [ -z "$force_release" ]; then
80
+ force_release="false"
81
+ fi
82
+
83
+ NUM_RELEASES=$(git log -10 --oneline | grep 'Release new canary build' | wc -l)
84
+ RELEASE_COMMIT=$(( NUM_RELEASES + RELEASE_COMMIT ))
85
+ echo "RELEASE_COMMIT=$RELEASE_COMMIT" >> $GITHUB_ENV
86
+
87
+ if [[ "${force_release}" == "true" ]]; then
88
+ (( RELEASE_COMMIT += 1 ))
89
+ echo "RELEASE_COMMIT=$RELEASE_COMMIT" >> $GITHUB_ENV
90
+ fi
91
+
92
+ if [[ $RELEASE_COMMIT -gt 0 ]]; then
93
+ echo "Found recent canary build releases."
94
+ else
95
+ echo "No recent canary build releases found."
96
+ fi
97
+
98
+ - name : Setup Git
99
+ if : ${{ env.RELEASE_COMMIT > 0 }}
100
+ run : git config --global user.email ${{ secrets.EMAIL }} && git config --global user.name PiX
101
+
102
+ - name : Fetch commit hash and Magisk version
103
+ if : ${{ env.RELEASE_COMMIT > 0 }}
104
+ run : |
105
+ git fetch origin
106
+ echo "COMMIT_HASH=$(git rev-parse --short HEAD)" >> $GITHUB_ENV
107
+
108
+ echo "MAGISK_VERSION=$(grep 'magisk.versionCode=' gradle.properties | awk -F= '{print $2}')" >> $GITHUB_ENV
109
+
110
+ - name : Update configs
111
+ if : ${{ env.RELEASE_COMMIT > 0 }}
112
+ run : |
113
+ git checkout magisk-files
114
+ echo "Updating Configs for the new release"
115
+
116
+ jq --arg version "${COMMIT_HASH}" \
117
+ --arg versionCode "${MAGISK_VERSION}" \
118
+ '.magisk.version = $version |
119
+ .magisk.versionCode = $versionCode |
120
+ .magisk.link |= sub("canary-[0-9]{5}"; "canary-" + $versionCode) |
121
+ .magisk.note |= sub("canary-[0-9]{5}"; "canary-" + $versionCode)' canary.json > canary.json.tmp
122
+ mv canary.json.tmp canary.json
123
+
124
+ jq --arg version "${COMMIT_HASH}" \
125
+ --arg versionCode "${MAGISK_VERSION}" \
126
+ '.magisk.version = $version |
127
+ .magisk.versionCode = $versionCode |
128
+ .magisk.link |= sub("canary-[0-9]{5}"; "canary-" + $versionCode) |
129
+ .magisk.note |= sub("canary-[0-9]{5}"; "canary-" + $versionCode)' debug.json > debug.json.tmp
130
+ mv debug.json.tmp debug.json
131
+
132
+ git add canary.json debug.json
133
+ git commit -m "release: new canary build ${COMMIT_HASH}"
134
+ git push origin magisk-files
135
+ git checkout master
136
+
137
+ wget -qO- "https://github.com/topjohnwu/Magisk/releases/download/canary-${MAGISK_VERSION}/notes.md" >> notes.md
138
+ echo -e '\n## Diffs to Official Magisk\n\nAdded support for GrapheneOS for personal use' >> notes.md
139
+
140
+ - name : Release APK
141
+ if : ${{ env.RELEASE_COMMIT > 0 }}
142
+ uses :
" dciborow/[email protected] "
143
+ with :
144
+ repo_token : " ${{ secrets.GITHUB_TOKEN }}"
145
+ automatic_release_tag : " canary-${{ env.MAGISK_VERSION }}"
146
+ prerelease : true
147
+ title : " Magisk (${{ env.COMMIT_HASH }}) (${{ env.MAGISK_VERSION }})"
148
+ files : |
149
+ out/app-release.apk
150
+ out/app-debug.apk
151
+ notes.md
152
+
51
153
- name : Upload mapping and native debug symbols
52
154
uses : actions/upload-artifact@v4
53
155
with :
0 commit comments