-
Notifications
You must be signed in to change notification settings - Fork 5
/
workflow.txt
157 lines (88 loc) · 4.92 KB
/
workflow.txt
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
User ---- make tasks ---> Tasks Table
kita punya banyak row dari banyak user
============ CASE SECTION 0 ====================
// kondisi perumpaan yg mungkin
------------------ Tasks Table -------------------------
id | user_id | nama_os | nama_file_iso | .... | status
1 1 dikyos tealinux.d-os 0
2 2 setyos tealinux.s-os 0
3 1 irfanos tealinux.i-os 0
NB : status = 0 : belum jadi | 1 : sudah jadi
--------------- Builds Table -----------------------------
id | task_id | sudah_jadi | status_server
mulanya kosong
NB : sudah_jadi = 0 : belum jadi | 1 : sudah jadi
server_status = 0 : idle (tidak sedang build) | 1 : lagi build
/////////////// Crontab / Scheduling \\\\\\\\\\\\\\\\\\\
Metode yg kita pake ini yg mungkin kurang tepat, soalnya aku baru taunya ini. Haha
Jadi setiap menit akan menjalankan perintah dibawah ini.
IF ((Tabel builds is Empty) OR ({sudah_jadi} = 1 di row terakhir tabel builds))
{
$get_task_id = ambil {id} di tabel tasks yang pertama di urutkan berdasarkan {created_at} secara asc where {status} = 0 // maksudnya yg belum jadi
insert into builds ( task_id = $get_task_id, sudah_jadi = 0, server_status = 0 ) // menambah task dalam list yg musti di build
}
IF (({sudah_jadi} = 0 di row terakhir tabel builds) AND ({server_status} = 0 di row terakhir tabel builds))
{
$get_last_id_builds = select {id} dari row terakhir tabel build.
SQL : Update server_status = 1 where {id} = $get_last_id_builds // supaya tidak dapat mengeksekusi exec tiap menit.
$username = Aku gak paham kenapa disini paramaternya username, gimana kalo satu username punya banyak task ?? why not {id} itu sendiri.
exec("sudo /usr/res/scripts/run_as_user.sh $username > /dev/null 2>/dev/null &");
\\\\\\ di dalam bashnya kalo udah rampung musti :
Update di tabel builds : sudah_jadi = 1 && server_status = 0 where task_id = id task yang kamu baru eksekusi. // untuk membuat server kembali dapat digunakan dan mengetahui bahwa semua task di tabel build telah sukses di kerjakan.
Update di tabel tasks: status = 1 where {id} = id task yg baru di eksekusi // untuk membuat nya menjadi ready di unduh.
}
============ CASE SECTION 2 ====================
// mulai Scheduling everyMinute
------------------ Tasks Table -------------------------
id | user_id | nama_os | nama_file_iso | .... | status
1 1 dikyos tealinux.d-os 0
2 2 setyos tealinux.s-os 0
3 1 irfanos tealinux.i-os 0
4 3 dinos tealinux.din-os 0
--------------- Builds Table -----------------------------
id | task_id | sudah_jadi | status_server
1 1 0 0
/\/\/\/\ Tambah satu row karena kosong / sudah_jadi = 1 di row terakhir /\/\/\/\
============ CASE SECTION 3 ====================
------------------ Tasks Table -------------------------
id | user_id | nama_os | nama_file_iso | .... | status
1 1 dikyos tealinux.d-os 0
2 2 setyos tealinux.s-os 0
3 1 irfanos tealinux.i-os 0
4 3 dinos tealinux.din-os 0
--------------- Builds Table -----------------------------
id | task_id | sudah_jadi | status_server
1 1 0 1
/\/\/\/\/\ status_server = 1 untuk mencegah exec tiap 1 menit, lihat kodisi di IF /\/\/\/\/\
============ CASE SECTION 4 ====================
// everyMinute will do nothing becouse codition on IF not covered
// until bash file update the value after done building
// seumpannya ini udah jadi
------------------ Tasks Table -------------------------
id | user_id | nama_os | nama_file_iso | .... | status
1 1 dikyos tealinux.d-os 1 <---- akan terupdate
2 2 setyos tealinux.s-os 0
3 1 irfanos tealinux.i-os 0
4 3 dinos tealinux.din-os 0
--------------- Builds Table -----------------------------
id | task_id | sudah_jadi | status_server
1 1 1 0
/\ /\
|| ||
|| ||
|| ======== jadi nol
||
====== berubah jadi satu
============ CASE SECTION 5 ====================
// repeat
------------------ Tasks Table -------------------------
id | user_id | nama_os | nama_file_iso | .... | status
1 1 dikyos tealinux.d-os 1
2 2 setyos tealinux.s-os 0
3 1 irfanos tealinux.i-os 0
4 3 dinos tealinux.din-os 0
--------------- Builds Table -----------------------------
id | task_id | sudah_jadi | status_server
1 1 1 0
2 2 0 0
// yeah repeat