-
Notifications
You must be signed in to change notification settings - Fork 439
133 lines (121 loc) · 4.03 KB
/
build-artifact.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
name: Build & Upload
env:
DOCKER_BUILDKIT: 1
COMPOSE_DOCKER_CLI_BUILD: 1
on:
workflow_dispatch:
workflow_call:
secrets:
ENVS:
required: false
REDDIT_CLIENT_ID:
required: false
inputs:
CI_TEST:
required: false
type: boolean
default: false
COMMIT_CHANGELOG:
type: boolean
required: false
default: true
DEBUG_ENABLED:
type: boolean
description: 'Run the build with tmate debugging enabled.'
required: false
default: false
PREFERRED_PATCH_APPS:
description: "Apps to be patched. Overrides any env set"
required: false
type: string
jobs:
build-apk:
permissions: write-all
name: APK Build
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- name: Check out Git repository
uses: actions/checkout@main
- name: Update Env for custom build
run: |
echo "${{ secrets.ENVS }}" >> .env
echo "GITHUB_REPOSITORY=${{ github.repository }}" >> .env
- name: Setup python
uses: actions/setup-python@main
with:
python-version: '3.12.3'
- name: Install Requirements
if: ${{ inputs.PREFERRED_PATCH_APPS }}
env:
PREFERRED_PATCH_APPS: ${{ inputs.PREFERRED_PATCH_APPS }}
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Override Patch apps
if: ${{ inputs.PREFERRED_PATCH_APPS }}
env:
PREFERRED_PATCH_APPS: ${{ inputs.PREFERRED_PATCH_APPS }}
run: |
python -m scripts.prefered_apps
- name: Inject Reddit Client ID
env:
REDDIT_CLIENT_ID: ${{ secrets.REDDIT_CLIENT_ID }}
if: env.REDDIT_CLIENT_ID != null
run: |
client_id="${REDDIT_CLIENT_ID}"
path="apks/options.json"
json_data=$(cat "${path}")
new_object='{
"patchName": "Spoof client",
"options": [
{
"key": "client-id",
"value": "'${client_id}'"
}
]
}'
# Check if an object with the patchName "Spoof client" already exists
existing_object_index=$(echo "${json_data}" | jq 'map(.patchName) | index("Spoof client")')
echo "${existing_object_index}"
if [[ ${existing_object_index} != "null" ]]; then
echo "Patch entry already exists. Overriding client ID in it."
updated_json=$(echo "${json_data}" | jq ".[${existing_object_index}].options[0].value = \"${client_id}\"")
else
echo "Patch entry doesn't exists. Adding new entry."
updated_json=$(echo "${json_data}" | jq ". += [${new_object}]")
fi
echo "${updated_json}" > "${path}"
- name: Setup tmate session
uses: mxschmitt/action-tmate@master
if: ${{ github.event_name == 'workflow_dispatch' && inputs.DEBUG_ENABLED }}
with:
detached: true
- name: Build Revanced APKs
if: ${{ true && !inputs.DEBUG_ENABLED }}
run: |
if [[ "${{ inputs.CI_TEST }}" =~ ^(true|True|1)$ ]]; then
echo "In CI Testing. Using local compose file."
docker compose -f docker-compose-local.yml up --build
else
echo "Using Prod compose file."
docker compose up --build
fi
- name: Upload Build APKS
uses: actions/upload-artifact@main
if: ${{ true && !inputs.DEBUG_ENABLED }}
with:
name: Built-APKs
path: |
apks/*-output.apk
apks/VancedMicroG.apk"
if-no-files-found: error
- name: Commit Update file
if: ${{ inputs.COMMIT_CHANGELOG && !inputs.CI_TEST}}
uses: stefanzweifel/git-auto-commit-action@master
with:
branch: changelogs
skip_checkout: true
file_pattern: 'changelog.md changelog.json updates.json'
commit_message: 🚀New Build
push_options: '--force'