This repository has been archived by the owner on Aug 13, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 56
/
Copy path_build.sh
174 lines (150 loc) · 5.49 KB
/
_build.sh
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
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
#!/bin/bash
source _utils.sh
source ._env # remove this line if you want to environment variables to be set in the shell or use a different method to set them
# Check if required variables are set
req_vars=("DEVICE" "ROM_NAME" "GIT_NAME" "GIT_EMAIL" "REPOS_JSON" "SETUP_SOURCE_COMMAND" "SYNC_SOURCE_COMMAND" "RELEASE_GITHUB_TOKEN" "GITHUB_RELEASE_REPO" "RELEASE_OUT_DIR" "RELEASE_FILES_PATTERN")
for var in "${req_vars[@]}"; do
if [ -z "${!var}" ]; then
echo "Required variable $var is not set. Please set it in ._env"
exit 1
fi
done
telegram_send_message "⏳"
telegram_send_message "*Build Initiated*: [$ROM_NAME for $DEVICE]($GITHUB_RUN_URL)" true
# Check either BUILD_VANILLA_COMMAND or BUILD_GAPPS_COMMAND is set
if [ -z "$BUILD_VANILLA_COMMAND" ] && [ -z "$BUILD_GAPPS_COMMAND" ]; then
logt "Either BUILD_VANILLA_COMMAND or BUILD_GAPPS_COMMAND is not set. Please set it in ._env"
exit 1
fi
start_time=$(date +%s)
# Install dependencies
resolve_dependencies | tee resolve_dependencies.log
# Setup git
git_setup $GIT_NAME $GIT_EMAIL
# Cleanup old builds
clean_build $RELEASE_OUT_DIR
# if PRE_SETUP_SOURCE_COMMAND is set then run it
if [ -n "$PRE_SETUP_SOURCE_COMMAND" ]; then
echo "Running pre-setup source command..."
eval $PRE_SETUP_SOURCE_COMMAND
fi
# Setup source
echo "Setting up source..."
eval $SETUP_SOURCE_COMMAND
# if POST_SETUP_SOURCE_COMMAND is set then run it
if [ -n "$POST_SETUP_SOURCE_COMMAND" ]; then
echo "Running post-setup source command..."
eval $POST_SETUP_SOURCE_COMMAND
fi
# Call git_clone_json for repos with before_sync true
git_clone_before_sync_log_file="clone_repos_before_sync.log"
(git_clone_json $REPOS_JSON true | tee $git_clone_before_sync_log_file)
if [ $? -ne 0 ]; then
logt "Cloning repos for before_sync failed. Aborting."
telegram_send_file $git_clone_before_sync_log_file "Cloning repos log"
exit 1
fi
# if PRE_SYNC_SOURCE_COMMAND is set then run it
if [ -n "$PRE_SYNC_SOURCE_COMMAND" ]; then
echo "Running pre-sync source command..."
eval $PRE_SYNC_SOURCE_COMMAND
fi
# Sync source
logt "Syncing source..."
start_time_sync=$(date +%s)
(eval $SYNC_SOURCE_COMMAND | tee sync_source.log)
if [ $? -ne 0 ]; then
echo "Sync failed. Aborting."
telegram_send_message "Sync failed. Aborting."
telegram_send_file sync_source.log "Sync source log"
exit 1
fi
end_time_sync=$(date +%s)
sync_time_taken=$(compute_build_time $start_time_sync $end_time_sync)
logt "Sync completed in $sync_time_taken"
# if POST_SYNC_SOURCE_COMMAND is set then run it
if [ -n "$POST_SYNC_SOURCE_COMMAND" ]; then
echo "Running post-sync source command..."
eval $POST_SYNC_SOURCE_COMMAND
fi
# Clone repos
(git_clone_json $REPOS_JSON | tee clone_repos.log)
if [ $? -ne 0 ]; then
logt "Cloning repos failed. Aborting."
telegram_send_file clone_repos.log "Clone repos log"
exit 1
fi
# if PRE_BUILD_COMMAND is set then run it
if [ -n "$PRE_BUILD_COMMAND" ]; then
echo "Running pre-build command..."
eval $PRE_BUILD_COMMAND
fi
# Build Vanilla
# if BUILDS_VANILLA_SCRIPT is set else skip
if [ -n "$BUILD_VANILLA_COMMAND" ]; then
start_time_vanilla=$(date +%s)
logt "Building vanilla..."
# if LOG_OUTPUT is set to false then don't log output
if [ "$LOG_OUTPUT" == "false" ]; then
(eval $BUILD_VANILLA_COMMAND)
if [ $? -ne 0 ]; then
logt "Vanilla build failed. Aborting."
fi
else
vanilla_log_file="vanilla_build.log"
(eval $BUILD_VANILLA_COMMAND | tee $vanilla_log_file)
if [ $? -ne 0 ]; then
logt "Vanilla build failed. Aborting."
fi
telegram_send_file $vanilla_log_file "Vanilla build log"
fi
end_time_vanilla=$(date +%s)
vanilla_time_taken=$(compute_build_time $start_time_vanilla $end_time_vanilla)
logt "Vanilla build completed in $vanilla_time_taken"
(remove_ota_package) # remove ota package if present
else
echo "BUILDS_VANILLA_COMMAND is not set. Skipping vanilla build."
fi
# Build GApps
# if BUILDS_GAPPS_SCRIPT is set else skip
if [ -n "$BUILD_GAPPS_COMMAND" ]; then
start_time_gapps=$(date +%s)
gapps_log_file="gapps_build.log"
logt "Building GApps..."
# if LOG_OUTPUT is set to false then don't log output
if [ "$LOG_OUTPUT" == "false" ]; then
(eval $BUILD_GAPPS_COMMAND)
if [ $? -ne 0 ]; then
logt "GApps build failed. Aborting."
fi
else
(eval $BUILD_GAPPS_COMMAND | tee $gapps_log_file)
if [ $? -ne 0 ]; then
logt "GApps build failed. Aborting."
fi
telegram_send_file $gapps_log_file "GApps build log"
fi
end_time_gapps=$(date +%s)
gapps_time_taken=$(compute_build_time $start_time_gapps $end_time_gapps)
logt "GApps build completed in $gapps_time_taken"
(remove_ota_package) # remove ota package if present
else
echo "BUILDS_GAPPS_COMMAND is not set. Skipping GApps build."
fi
# if POST_BUILD_COMMAND is set then run it
if [ -n "$POST_BUILD_COMMAND" ]; then
echo "Running post-build command..."
eval $POST_BUILD_COMMAND
fi
# Release builds
tag=$(date +'v%d-%m-%Y-%H%M')
(github_release --token $RELEASE_GITHUB_TOKEN --repo $GITHUB_RELEASE_REPO --tag $tag --pattern $RELEASE_FILES_PATTERN)
if [ $? -ne 0 ]; then
logt "Releasing builds failed. Aborting."
fi
end_time=$(date +%s)
# convert seconds to hours, minutes and seconds
time_taken=$(compute_build_time $start_time $end_time)
telegram_send_message "Total time taken *$time_taken*"
echo "Total time taken $time_taken"
logt "Build finished."