-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy path.gitlab-ci.yml
More file actions
237 lines (230 loc) · 9.91 KB
/
.gitlab-ci.yml
File metadata and controls
237 lines (230 loc) · 9.91 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
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
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
# We excplicitly use tag with runner hostname to ensure stages on the same runner.
# This brakes parallelism but makes things much clearer and simplier.
stages:
- make_deb
- make_tgz
- add_repo_deb
- add_repo_tgz
- rsync_repo
cache:
paths:
- builds
make_deb_v1:
tags:
- dev1.sysadm.ws
stage: make_deb
artifacts:
name: deb_v1
paths:
- builds/v1/deb/sysadmws-utils-v1.deb
only:
refs:
- master
script: |
# Create dir for every util
mkdir -p builds/v1/deb/sysadmws-utils-v1/opt/sysadmws/bulk_log \
builds/v1/deb/sysadmws-utils-v1/opt/sysadmws/mysql_queries_log \
builds/v1/deb/sysadmws-utils-v1/opt/sysadmws/mysql_replica_checker \
builds/v1/deb/sysadmws-utils-v1/opt/sysadmws/mysql_increment_checker \
builds/v1/deb/sysadmws-utils-v1/opt/sysadmws/notify_devilry \
builds/v1/deb/sysadmws-utils-v1/opt/sysadmws/disk_alert \
builds/v1/deb/sysadmws-utils-v1/opt/sysadmws/put_check_files \
builds/v1/deb/sysadmws-utils-v1/opt/sysadmws/logrotate_db_backup \
builds/v1/deb/sysadmws-utils-v1/opt/sysadmws/mikrotik_backup \
builds/v1/deb/sysadmws-utils-v1/opt/sysadmws/rsnapshot_backup \
builds/v1/deb/sysadmws-utils-v1/opt/sysadmws/cmd_check_alert \
builds/v1/deb/sysadmws-utils-v1/opt/sysadmws/cloudflare \
builds/v1/deb/sysadmws-utils-v1/opt/sysadmws/heartbeat_mesh \
builds/v1/deb/sysadmws-utils-v1/opt/microdevops/catch_server_mail \
builds/v1/deb/sysadmws-utils-v1/opt/sysadmws/misc \
builds/v1/deb/sysadmws-utils-v1/opt/microdevops/misc
# LICENSE README.md
cp LICENSE \
README.md \
builds/v1/deb/sysadmws-utils-v1/opt/sysadmws
# bulk_log
cp bulk_log/bulk_log.sh \
bulk_log/bulk_log.cron \
bulk_log/bulk_log.logrotate \
builds/v1/deb/sysadmws-utils-v1/opt/sysadmws/bulk_log
# mysql_queries_log
cp mysql_queries_log/mysql_queries_log.sh \
mysql_queries_log/mysql_queries_log.cron \
mysql_queries_log/mysql_queries_log.logrotate \
builds/v1/deb/sysadmws-utils-v1/opt/sysadmws/mysql_queries_log
# mysql_replica_checker
cp mysql_replica_checker/mysql_replica_checker.sh \
mysql_replica_checker/mysql_replica_checker.py \
mysql_replica_checker/mysql_replica_checker.cron \
mysql_replica_checker/mysql_replica_checker.conf.example \
builds/v1/deb/sysadmws-utils-v1/opt/sysadmws/mysql_replica_checker
# mysql_increment_checker
cp mysql_increment_checker/mysql_increment_checker.py \
mysql_increment_checker/mysql_increment_checker.cron \
mysql_increment_checker/mysql_increment_checker.yaml.example \
builds/v1/deb/sysadmws-utils-v1/opt/sysadmws/mysql_increment_checker
# notify_devilry
cp notify_devilry/notify_devilry.py \
notify_devilry/notify_devilry_test.sh \
notify_devilry/notify_devilry_critical.sh \
notify_devilry/notify_devilry_fatal.sh \
notify_devilry/notify_devilry_ok.sh \
notify_devilry/notify_devilry.yaml.example \
notify_devilry/notify_devilry.yaml.minimal \
notify_devilry/notify_devilry.yaml.clients \
notify_devilry/README.md \
builds/v1/deb/sysadmws-utils-v1/opt/sysadmws/notify_devilry
# disk_alert
cp disk_alert/disk_alert.sh \
disk_alert/disk_alert.cron \
disk_alert/disk_alert.conf.example \
disk_alert/lr.awk \
builds/v1/deb/sysadmws-utils-v1/opt/sysadmws/disk_alert
# put_check_files
cp put_check_files/put_check_files.sh \
put_check_files/put_check_files.cron \
put_check_files/put_check_files.conf.example \
builds/v1/deb/sysadmws-utils-v1/opt/sysadmws/put_check_files
# logrotate_db_backup
cp logrotate_db_backup/logrotate_db_backup.awk \
logrotate_db_backup/logrotate_db_backup.conf.example \
logrotate_db_backup/logrotate_db_backup.sh \
builds/v1/deb/sysadmws-utils-v1/opt/sysadmws/logrotate_db_backup
# mikrotik_backup
cp mikrotik_backup/mikrotik_backup.sh \
mikrotik_backup/mikrotik_backup.conf.example \
mikrotik_backup/README.md \
builds/v1/deb/sysadmws-utils-v1/opt/sysadmws/mikrotik_backup
# rsnapshot_backup
cp rsnapshot_backup/rsnapshot_backup.awk \
rsnapshot_backup/rsnapshot_backup.sh \
rsnapshot_backup/rsnapshot_backup.py \
rsnapshot_backup/rsnapshot_backup_sync_monthly_weekly_daily_check_backup.sh \
rsnapshot_backup/rsnapshot_backup_authorize_loopback.sh \
rsnapshot_backup/rsnapshot_conf_template_RSYNC_SSH_PATH.conf \
rsnapshot_backup/rsnapshot_conf_template_RSYNC_SSH_UBUNTU.conf \
rsnapshot_backup/rsnapshot_conf_template_RSYNC_SSH_DEBIAN.conf \
rsnapshot_backup/rsnapshot_conf_template_RSYNC_SSH_CENTOS.conf \
rsnapshot_backup/rsnapshot_conf_template_ROTATE.conf \
rsnapshot_backup/rsnapshot_conf_template_RSYNC_NATIVE.conf \
rsnapshot_backup/rsnapshot_backup_daily.cron \
rsnapshot_backup/rsnapshot_backup_hourly.cron \
rsnapshot_backup/rsnapshot_backup_postgresql_query1.sql \
rsnapshot_backup/rsnapshot_backup.logrotate \
rsnapshot_backup/check_backup.sh \
rsnapshot_backup/check_dot_backup.awk \
rsnapshot_backup/check_s3_dot_backup.awk \
rsnapshot_backup/check_file_age.awk \
rsnapshot_backup/check_mysql.awk \
rsnapshot_backup/check_postgresql.awk \
rsnapshot_backup/check_mongodb.awk \
rsnapshot_backup/mongodb_db_list.sh \
builds/v1/deb/sysadmws-utils-v1/opt/sysadmws/rsnapshot_backup
# cmd_check_alert
cp cmd_check_alert/cmd_check_alert.py \
cmd_check_alert/cmd_check_alert.cron \
cmd_check_alert/cmd_check_alert.yaml.example \
builds/v1/deb/sysadmws-utils-v1/opt/sysadmws/cmd_check_alert
# cloudflare
cp cloudflare/dns_records_backup.sh \
cloudflare/pagerules_backup.sh \
cloudflare/pagerules_import.sh \
builds/v1/deb/sysadmws-utils-v1/opt/sysadmws/cloudflare
# heartbeat_mesh
cp heartbeat_mesh/receiver.py \
heartbeat_mesh/receiver.service \
heartbeat_mesh/receiver.yaml.example \
heartbeat_mesh/sender.cron \
heartbeat_mesh/sender.py \
heartbeat_mesh/sender.yaml.example \
heartbeat_mesh/README.md \
builds/v1/deb/sysadmws-utils-v1/opt/sysadmws/heartbeat_mesh
# catch_server_mail
cp catch_server_mail/sentry.sh \
builds/v1/deb/sysadmws-utils-v1/opt/microdevops/catch_server_mail
# misc old
cp misc/mysql_dump_all_dbs_to_files.sh \
misc/mysql_master_status.sh \
misc/postgresql_dump_all_dbs_to_files.sh \
misc/mysql_table_extractor.sh \
misc/mysql_create_new_database.sh \
misc/mysqlpump_one_base_exclude_tables.sh \
misc/shebang_python_switcher.sh \
misc/pxc_check.sh \
misc/check_redis_rejected_connections.sh \
builds/v1/deb/sysadmws-utils-v1/opt/sysadmws/misc
# misc new
cp misc/cleanup.sh \
misc/install_requirements.sh \
misc/check_domain_expiration.py \
misc/check_gitlab_backup.py \
misc/check-http_wrapper.sh \
misc/check_redis_memory.py \
builds/v1/deb/sysadmws-utils-v1/opt/microdevops/misc
# Make control dir
mkdir -p builds/v1/deb/sysadmws-utils-v1/DEBIAN
# Make md5sums
( cd builds/v1/deb/sysadmws-utils-v1 && find . -type f ! -regex '.*?debian-binary.*' ! -regex '.*?DEBIAN.*' -printf '%P ' | xargs md5sum > DEBIAN/md5sums )
# Get size
export SIZE=$(du -s builds/v1/deb/sysadmws-utils-v1 | awk '{print $1}')
# Get current and new version
CUR_VERSION=$(curl -s https://repo.sysadm.ws/sysadmws-apt/dists/any/main/binary-amd64/Packages | grep -Pzo 'Package: sysadmws-utils-v1\n.*\n.*\n.*\n.*\n' | grep --text 'Version' | sed -e 's/Version: 1\.//')
export NEW_VERSION=$((CUR_VERSION+1))
# Prepare control
cat deb/control | sed -e "s#__VERSION__#$NEW_VERSION#" -e "s#__SIZE__#$SIZE#" > builds/v1/deb/sysadmws-utils-v1/DEBIAN/control
# Make deb
( cd builds/v1/deb && fakeroot dpkg-deb -Zgzip -b sysadmws-utils-v1 )
make_tgz_v1:
tags:
- dev1.sysadm.ws
stage: make_tgz
artifacts:
name: tgz_v1
paths:
- builds/v1/tgz/sysadmws-utils-v1.tar.gz
only:
refs:
- master
script: |
mkdir -p builds/v1/tgz
cd builds/v1/tgz
rm -rf sysadmws-utils-v1
cp -R ../deb/sysadmws-utils-v1 .
cat sysadmws-utils-v1/DEBIAN/control | grep Version > sysadmws-utils-v1/opt/sysadmws/utils_version
rm -rf sysadmws-utils-v1/DEBIAN
fakeroot tar zcf sysadmws-utils-v1.tar.gz -C sysadmws-utils-v1 .
rm -rf sysadmws-utils-v1
add_repo_deb_v1:
tags:
- dev1.sysadm.ws
stage: add_repo_deb
only:
refs:
- master
script: |
export GNUPGHOME=/opt/sysadmws/gnupg/.gnupg
pkill gpg-agent || true; sleep 2; gpg-agent --daemon --allow-preset-passphrase
sleep 3
/usr/lib/gnupg2/gpg-preset-passphrase -v -c --preset -P $GPG_PASS E5337B7B1B6C8A420A48AB069BA912449F148CFB
/usr/lib/gnupg2/gpg-preset-passphrase -v -c --preset -P $GPG_PASS 846876C563DD34B899FCD3C61F7C554D9AEDE1C2
reprepro -v --basedir /opt/sysadmws/apt --gnupghome /opt/sysadmws/gnupg/.gnupg remove any sysadmws-utils-v1
reprepro -v --basedir /opt/sysadmws/apt --gnupghome /opt/sysadmws/gnupg/.gnupg includedeb any builds/v1/deb/sysadmws-utils-v1.deb
add_repo_tgz_v1:
tags:
- dev1.sysadm.ws
stage: add_repo_tgz
only:
refs:
- master
script: |
cp -f builds/v1/tgz/sysadmws-utils-v1.tar.gz /opt/sysadmws/tgz/sysadmws-utils-v1.tar.gz
rsync_repo:
tags:
- dev1.sysadm.ws
stage: rsync_repo
only:
refs:
- master
script: |
rsync -a -e "ssh -i /opt/sysadmws/ssh/id_rsa -o BatchMode=yes -o StrictHostKeyChecking=no" /opt/sysadmws/apt/ [email protected]:/var/www/repo/repo/sysadmws-apt/
rsync -a -e "ssh -i /opt/sysadmws/ssh/id_rsa -o BatchMode=yes -o StrictHostKeyChecking=no" /opt/sysadmws/tgz/ [email protected]:/var/www/repo/repo/tgz/